Add MediaWindow

This commit is contained in:
Thomas Peetz
2025-01-24 08:58:59 +01:00
parent 845f085a76
commit 400aff6524
2 changed files with 83 additions and 1 deletions
+23 -1
View File
@@ -5,6 +5,7 @@ from sqlalchemy import Engine
from kontor_schema import KontorDB
from .comic_window import ComicWindow
from .media_window import MediaWindow
from .progress import ProgressUpdate
from .dialogs import ExportKontorDialog, ImportKontorDialog
from .model_config import KontorModelConfig
@@ -62,8 +63,11 @@ class MainWindow(QMainWindow):
self.newAction = QAction("&New", self)
self.aboutAction = QAction("&Über...", self)
self.aboutAction.triggered.connect(self.about)
self.showComicWindow = QAction("Show/Hide &Comic Window", self)
self.showComicWindow = QAction("&Comic Window", self)
self.showComicWindow.triggered.connect(self.show_comic_window)
self.showTyscWindow = QAction("TYSC Window", self)
self.showMediaWindow = QAction("&Media Window", self)
self.showMediaWindow.triggered.connect(self.show_media_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)
@@ -101,6 +105,12 @@ class MainWindow(QMainWindow):
kontor_menu.addMenu(comic_menu)
kontor_menu.addMenu(tysc_menu)
kontor_menu.addMenu(media_file_menu)
window_menu = QMenu("&Window")
layouts_menu = QMenu("&Layouts")
window_menu.addMenu(layouts_menu)
window_menu.addAction(self.showComicWindow)
window_menu.addAction(self.showMediaWindow)
menu_bar.addMenu(window_menu)
# Help menu
help_menu = QMenu("&Hilfe")
menu_bar.addMenu(help_menu)
@@ -135,6 +145,18 @@ class MainWindow(QMainWindow):
comic.close()
self.mdi_area.removeSubWindow(comic)
def show_media_window(self):
if 'media' not in self._subwindows:
media = MediaWindow(self)
media.closed.connect(self.sub_window_closed)
self._subwindows['media'] = media
self.mdi_area.addSubWindow(media)
media.show()
else:
media = self._subwindows.pop('media')
media.close()
self.mdi_area.removeSubWindow(media)
def remove_sub_window(self, name: str):
# self.log.info("remove subwindow %s", name)
if name in self._subwindows:
+60
View File
@@ -0,0 +1,60 @@
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QMdiSubWindow, QWidget, QVBoxLayout, QTabWidget, QTableView
from gui.model_config import KontorModelConfig
from gui.table_model import KontorTableModel
class MediaWindow(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("Media")
self.setWidget(QWidget())
layout = QVBoxLayout()
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.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()
table_view.setModel(model)
layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view)
model.refresh()
return data_tab