# sn_basis/ui/base_dockwidget.py from qgis.PyQt.QtWidgets import QDockWidget, QTabWidget from sn_basis.functions.qgisqt_wrapper import warning, error class BaseDockWidget(QDockWidget): """ Basis-Dockwidget für alle LNO-Module. - Titel wird automatisch aus base_title + subtitle erzeugt - Tabs werden dynamisch aus der Klassenvariable 'tabs' erzeugt - Die zugehörige Toolbar-Action wird beim Schließen zurückgesetzt """ base_title = "LNO Sachsen" tabs = [] # Liste von Tab-Klassen action = None # Referenz auf die Toolbar-Action def __init__(self, parent=None, subtitle=""): super().__init__(parent) # ----------------------------------------------------- # Titel setzen # ----------------------------------------------------- try: title = self.base_title if not subtitle else f"{self.base_title} | {subtitle}" self.setWindowTitle(title) except Exception as e: warning("Titel konnte nicht gesetzt werden", str(e)) # ----------------------------------------------------- # Dock-Features # ----------------------------------------------------- try: self.setFeatures(QDockWidget.DockWidgetFeature.DockWidgetClosable) except Exception as e: warning("Dock-Features konnten nicht gesetzt werden", str(e)) # ----------------------------------------------------- # Tabs erzeugen # ----------------------------------------------------- try: tab_widget = QTabWidget() for tab_class in self.tabs: try: tab_instance = tab_class() tab_title = getattr(tab_class, "tab_title", tab_class.__name__) tab_widget.addTab(tab_instance, tab_title) except Exception as e: error("Tab konnte nicht geladen werden", f"{tab_class}: {e}") self.setWidget(tab_widget) except Exception as e: error("Tab-Widget konnte nicht initialisiert werden", str(e)) # --------------------------------------------------------- # Dock schließen # --------------------------------------------------------- def closeEvent(self, event): """ Wird aufgerufen, wenn das Dock geschlossen wird. Setzt die zugehörige Toolbar-Action zurück. """ try: if self.action: self.action.setChecked(False) except Exception as e: warning("Toolbar-Status konnte nicht zurückgesetzt werden", str(e)) super().closeEvent(event)