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
+14 -6
View File
@@ -1,4 +1,4 @@
from PySide6.QtWidgets import QHBoxLayout, QCheckBox
from PySide6.QtWidgets import QHBoxLayout, QCheckBox, QMdiSubWindow
from kontor_schema import KontorDB
@@ -8,15 +8,23 @@ class KontorModelConfig:
self.header = {}
self.filter = {}
self.main_window = main_window
self.log = main_window.log
self._table_name = table_name
self.kontor_db = kontor_db
self.get_table_config()
def __str__(self):
return f"KontorModelConfig({self._table_name})"
def get_table_config(self):
# self.log.info("get_table_config %s", self)
self.header = self.kontor_db.get_column_meta_data(self._table_name)
self.filter = self.kontor_db.get_filters(self._table_name)
# self.log.info("headers: %s", self.header)
# self.log.info("%s filters: %s", self, self.filter)
def filters(self) -> dict:
# self.log.info("%s filters: %s", self, self.filter)
_filters = {}
# print(self.filter["download"].isChecked())
for column, filter_info in self.filter.items():
@@ -24,18 +32,17 @@ class KontorModelConfig:
if filter_info['widget'].isChecked():
_filters[column] = True
# print(f"{filter_rule=}")
# self.log.info("filters -> %s", _filters)
return _filters
def get_data(self) -> list:
# data = self.kontor_db.get_data(self._table_name, self.header, self.get_filter())
# data.clear()
# self.log.info("get_data")
data = self.kontor_db.data(self._table_name, self.header, self.filters())
# print(f"KontorModelConfig.get_data: {len(data)}")
# comics = self.kontor_db.session.query(Comic).all()
# print(f'{len(comics)} Comics loaded')
# self.log.info("get_data: %d %s", len(data), data)
return data
def get_filter_layout(self) -> QHBoxLayout:
# self.log.info("get_filter_layout: %s", self.filter)
filter_layout = QHBoxLayout()
for column, filter_info in self.filter.items():
filter_checkbox = QCheckBox()
@@ -44,4 +51,5 @@ class KontorModelConfig:
self.filter[column]['widget'] = filter_checkbox
filter_layout.addWidget(filter_checkbox)
filter_layout.addStretch()
# self.log.info("get_filter_layout: %s", self.filter)
return filter_layout