add meta data subwindow

This commit is contained in:
Thomas Peetz
2025-02-02 21:38:16 +01:00
parent da453d642d
commit 591171b223
5 changed files with 99 additions and 33 deletions
+6 -3
View File
@@ -1,4 +1,4 @@
from PySide6.QtCore import Signal
from PySide6.QtCore import Signal, QSortFilterProxyModel
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView, QMdiSubWindow
from gui.model_config import KontorModelConfig
@@ -53,9 +53,12 @@ class ComicWindow(QMdiSubWindow):
self.data_views.append(model)
data_tab.setLayout(layout)
table_view = QTableView()
table_view.setModel(model)
proxy_model = QSortFilterProxyModel()
proxy_model.setSourceModel(model)
table_view.setSortingEnabled(True)
#table_view.setModel(model)
table_view.setModel(proxy_model)
layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view)
model.refresh()
return data_tab
+19 -24
View File
@@ -7,6 +7,7 @@ from kontor_schema import KontorDB
from .comic_window import ComicWindow
from .media_window import MediaWindow
from .meta_data_window import MetaDataWindow
from .progress import ProgressUpdate
from .dialogs import ExportKontorDialog, ImportKontorDialog
from .model_config import KontorModelConfig
@@ -50,8 +51,8 @@ class MainWindow(QMainWindow):
self.status_progress = QProgressBar()
self.progress_update = ProgressUpdate(self.status_progress)
self._create_statusbar()
centerPoint = QGuiApplication.screens()[0].geometry().center()
self.move(centerPoint - self.frameGeometry().center())
center_point = QGuiApplication.screens()[0].geometry().center()
self.move(center_point - self.frameGeometry().center())
def _create_actions(self):
self.newAction = QAction("&New", self)
@@ -62,6 +63,8 @@ class MainWindow(QMainWindow):
self.showTyscWindow = QAction("TYSC Window", self)
self.showMediaWindow = QAction("&Media Window", self)
self.showMediaWindow.triggered.connect(self.show_media_window)
self.showMetaDataWindow = QAction("Meta Data Window", self)
self.showMetaDataWindow.triggered.connect(self.show_meta_data_window)
self.importAction = QAction(self.import_icon, "&Import", self)
self.importAction.triggered.connect(self.import_from_file)
self.exportAction = QAction(self.export_icon, "&Export", self)
@@ -104,6 +107,7 @@ class MainWindow(QMainWindow):
window_menu.addMenu(layouts_menu)
window_menu.addAction(self.showComicWindow)
window_menu.addAction(self.showMediaWindow)
window_menu.addAction(self.showMetaDataWindow)
menu_bar.addMenu(window_menu)
# Help menu
help_menu = QMenu("&Hilfe")
@@ -125,7 +129,7 @@ class MainWindow(QMainWindow):
self.statusBar.addPermanentWidget(self.status_progress)
def about(self):
QMessageBox.about(self.central_widget, "Über Kontor", f"Python: 3.11\nKontor: 0.1.0")
QMessageBox.about(self, "Über Kontor", f"Python: 3.11\nKontor: 0.1.0")
def show_comic_window(self):
if 'comic' not in self._subwindows:
@@ -151,6 +155,18 @@ class MainWindow(QMainWindow):
media.close()
self.mdi_area.removeSubWindow(media)
def show_meta_data_window(self):
if 'meta_data' not in self._subwindows:
meta_data = MetaDataWindow(self)
meta_data.closed.connect(self.sub_window_closed)
self._subwindows['meta_data'] = meta_data
self.mdi_area.addSubWindow(meta_data)
meta_data.show()
else:
meta_data = self._subwindows.pop('meta_data')
meta_data.close()
self.mdi_area.removeSubWindow(meta_data)
def remove_sub_window(self, name: str):
# self.log.info("remove subwindow %s", name)
if name in self._subwindows:
@@ -218,27 +234,6 @@ class MainWindow(QMainWindow):
self.log.info("refresh")
for (_, window) in self._subwindows.items():
window.refresh()
# def refresh(self):
# self.data[self.tabs.currentIndex()].refresh()
# def _tab_changed(self, tab_index):
# self.data[tab_index].refresh()
def update_status(self, message, timeout=3000):
self.statusBar.showMessage(message, timeout=timeout)
def generate_data_tab(self, table_name):
data_tab = QWidget()
table_config = KontorModelConfig(self.kontor_db, self, table_name)
model = KontorTableModel(table_config)
layout = QVBoxLayout()
self.data.append(model)
data_tab.setLayout(layout)
table_view = QTableView()
table_view.setModel(model)
layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view)
model.refresh()
return data_tab
+7 -2
View File
@@ -1,4 +1,4 @@
from PySide6.QtCore import Signal
from PySide6.QtCore import Signal, QSortFilterProxyModel
from PySide6.QtWidgets import QMdiSubWindow, QWidget, QVBoxLayout, QTabWidget, QTableView
from gui.model_config import KontorModelConfig
@@ -24,6 +24,7 @@ class MediaWindow(QMdiSubWindow):
self.tabs = QTabWidget()
self.tabs.addTab(self.generate_data_tab("media_file"), "Media File")
self.tabs.addTab(self.generate_data_tab("media_video"), "Media Video")
self.tabs.addTab(self.generate_data_tab("media_article"), "Media Article")
self.tabs.currentChanged.connect(self._tab_changed)
layout.addWidget(self.tabs)
self.setLayout(layout)
@@ -53,7 +54,11 @@ class MediaWindow(QMdiSubWindow):
self.data_views.append(model)
data_tab.setLayout(layout)
table_view = QTableView()
table_view.setModel(model)
proxy_model = QSortFilterProxyModel()
proxy_model.setSourceModel(model)
table_view.setSortingEnabled(True)
#table_view.setModel(model)
table_view.setModel(proxy_model)
layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view)
model.refresh()
+65
View File
@@ -0,0 +1,65 @@
from PySide6.QtCore import Signal, QSortFilterProxyModel
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView, QMdiSubWindow
from gui.model_config import KontorModelConfig
from gui.table_model import KontorTableModel
class MetaDataWindow(QMdiSubWindow):
closed = Signal()
def __init__(self, main_window):
super().__init__()
self.data_views = list()
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.setWindowTitle("Meta Data")
self.setWidget(QWidget())
layout = QVBoxLayout()
self.tabs = QTabWidget()
self.tabs.addTab(self.generate_data_tab("module_data"), "Module")
self.tabs.addTab(self.generate_data_tab("meta_data_table"), "Tables")
self.tabs.addTab(self.generate_data_tab("meta_data_column"), "Columns")
self.tabs.currentChanged.connect(self._tab_changed)
layout.addWidget(self.tabs)
self.setLayout(layout)
self.setWidget(self.tabs)
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()
table_config = KontorModelConfig(self._main_window.kontor_db, self, table_name)
model = KontorTableModel(table_config)
layout = QVBoxLayout()
self.data_views.append(model)
data_tab.setLayout(layout)
table_view = QTableView()
proxy_model = QSortFilterProxyModel()
proxy_model.setSourceModel(model)
table_view.setSortingEnabled(True)
#table_view.setModel(model)
table_view.setModel(proxy_model)
layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view)
model.refresh()
return data_tab