From 01fcc36a678603e127a235f3bcf6cc9639c6f496 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Thu, 9 Mar 2023 14:24:38 +0100 Subject: [PATCH] MainWindow: Add subwindow list. --- src/view/ASubWindow.py | 5 +++++ src/view/DummyWindow.py | 2 +- src/view/ListedSubWindow.py | 28 ++++++++++++++++++++++++++++ src/view/MainWindow.py | 4 +++- 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/view/ListedSubWindow.py diff --git a/src/view/ASubWindow.py b/src/view/ASubWindow.py index f6598b66..bc54ec2e 100644 --- a/src/view/ASubWindow.py +++ b/src/view/ASubWindow.py @@ -23,3 +23,8 @@ class ASubWindow(QDialog): self ) self.name = name + self.parent = parent + + def closeEvent(self, event): + if not self.parent is None: + self.parent.sub_win_del(self.name) diff --git a/src/view/DummyWindow.py b/src/view/DummyWindow.py index 623834f6..a0cd038f 100644 --- a/src/view/DummyWindow.py +++ b/src/view/DummyWindow.py @@ -4,5 +4,5 @@ from view.ASubWindow import ASubWindow class DummyWindow(ASubWindow): def __init__(self, title="Dummy", parent=None): - super(DummyWindow, self).__init__(ui="dummy", parent=parent) + super(DummyWindow, self).__init__(name=title, ui="dummy", parent=parent) self.ui.setWindowTitle(title) diff --git a/src/view/ListedSubWindow.py b/src/view/ListedSubWindow.py new file mode 100644 index 00000000..3e46bbad --- /dev/null +++ b/src/view/ListedSubWindow.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- + +class ListedSubWindow(object): + def __init__(self): + super(ListedSubWindow, self).__init__() + self.sub_win_cnt = 0 + self.sub_win_list = [] + + def sub_win_count(self): + return self.sub_win_cnt + + def sub_win_list(self): + return self.sub_win_list.copy() + + def sub_win_add(self, name, win): + self.sub_win_list.append((name, win)) + self.sub_win_cnt += 1 + print(f"+ {name} ({self.sub_win_cnt})") + + def sub_win_del(self, name): + self.sub_win_list = list( + filter( + lambda x: x[0] != name, + self.sub_win_list + ) + ) + self.sub_win_cnt = len(self.sub_win_list) + print(f"- {name} ({self.sub_win_cnt})") diff --git a/src/view/MainWindow.py b/src/view/MainWindow.py index 1940cbbb..857f5ba4 100644 --- a/src/view/MainWindow.py +++ b/src/view/MainWindow.py @@ -7,10 +7,11 @@ from PyQt5.QtWidgets import ( QMainWindow, QApplication, QAction, ) from PyQt5.uic import loadUi +from view.ListedSubWindow import ListedSubWindow from view.DummyWindow import DummyWindow from view.AboutWindow import AboutWindow -class ApplicationWindow(QMainWindow): +class ApplicationWindow(QMainWindow, ListedSubWindow): def __init__(self): super(ApplicationWindow, self).__init__() self.ui = loadUi( @@ -28,6 +29,7 @@ class ApplicationWindow(QMainWindow): title=title if type(title) is str else "Dummy", parent=self ) + self.sub_win_add(title, self.dummy) self.dummy.show() def open_about(self): -- GitLab