diff --git a/src/view/ASubWindow.py b/src/view/ASubWindow.py index f6598b667533afe606c63fe6f5d3c6481cc5b8c9..bc54ec2ec384504830c2b92ba0ab1fc7b1cd23a3 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 623834f678fe9016fb674ab20b444331e9e109f9..a0cd038f4e49dffc655c49b6cce458ab7731fd78 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 0000000000000000000000000000000000000000..3e46bbad09b6f335c687a8d98bb6c0eb6bb5041d --- /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 1940cbbb435dc3f1b4734df542daef2f33909a1b..857f5ba47a10cd886ea541ec8e6329facd3e039d 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):