Refactor GUI to use Multi Document Interface

This commit is contained in:
Thomas Peetz
2025-01-21 20:12:50 +01:00
parent 4e884fdbe5
commit e8660faa06
5 changed files with 122 additions and 68 deletions
+20 -13
View File
@@ -1,42 +1,49 @@
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView, QMdiSubWindow
from gui.model_config import KontorModelConfig
from gui.table_model import KontorTableModel
class ComicWindow(QWidget):
class ComicWindow(QMdiSubWindow):
closed = Signal()
def __init__(self, main_window):
super().__init__()
self.statusBar = main_window.statusBar
self._main_window = main_window
self.data_views = list()
# self._create_menubar()
self._main_window = main_window
self.log = main_window.log
self._init_gui()
self.tick = main_window.tick
self.cross = main_window.cross
def _init_gui(self):
self.central_widget = QWidget()
self.setWindowTitle("Comics")
self.setWidget(QWidget())
layout = QVBoxLayout()
#self.central_widget.setLayout(parent_layout)
self.tabs = QTabWidget()
self.tabs.addTab(self.generate_data_tab("comic"), "Comics")
self.tabs.addTab(self.generate_data_tab("publisher"), "Publisher")
self.tabs.currentChanged.connect(self._tab_changed)
# label.setAlignment(Qt.AlignmentFlag.AlignCenter)
layout.addWidget(self.tabs)
self.setLayout(layout)
# self.setCentralWidget(self.central_widget)
self.setWidget(self.tabs)
# def _create_menubar(self):
# menu_bar = self.menuBar()
# comic_menu = QMenu("Comic")
# menu_bar.addMenu(comic_menu)
def closeEvent(self, event):
self.closed.emit()
super().closeEvent(event)
self._main_window.remove_sub_window('comic')
def refresh(self):
# self.log.info("refresh")
self.data_views[self.tabs.currentIndex()].refresh()
def _tab_changed(self, tab_index):
self.data_views[tab_index].refresh()
def update_status(self, message):
self._main_window.update_status(message)
def generate_data_tab(self, table_name):
data_tab = QWidget()