diff --git a/main.py b/main.py index 5a47ebf..8fc2b7f 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,5 @@ from qgis.PyQt.QtCore import QCoreApplication +from qgis.utils import plugins from sn_basis.ui.navigation import Navigation class BasisPlugin: @@ -8,8 +9,18 @@ class BasisPlugin: QCoreApplication.instance().aboutToQuit.connect(self.unload) def initGui(self): + # Basis-Navigation neu aufbauen self.ui = Navigation(self.iface) + # Alle Fachplugins mit "sn_" prüfen und neu initialisieren + for name, plugin in plugins.items(): + if name.startswith("sn_") and name != "sn_basis": + try: + plugin.initGui() + except Exception as e: + print(f"Fehler beim Neuinitialisieren von {name}: {e}") + def unload(self): if self.ui: self.ui.remove_all() + self.ui = None diff --git a/metadata.txt b/metadata.txt index 292ec53..9b4779d 100644 --- a/metadata.txt +++ b/metadata.txt @@ -2,7 +2,7 @@ name=LNO Sachsen | Basisfunktionen qgisMinimumVersion=3.0 description=Plugin mit Basisfunktionen -version=25.11.1 +version=25.11.3 author=Michael Otto email=michael.otto@landkreis-mittelsachsen.de about=Plugin mit Basisfunktionen diff --git a/ui/navigation.py b/ui/navigation.py index 9e8ceef..e3bfa19 100644 --- a/ui/navigation.py +++ b/ui/navigation.py @@ -47,4 +47,36 @@ class Navigation: # Alle zurücksetzen, dann aktives Plugin markieren for _, action in self.actions: action.setChecked(False) - active_action.setChecked(True) + if active_action: + active_action.setChecked(True) + + def remove_all(self): + """Alles entfernen beim Entladen des Basisplugins""" + # Menü entfernen + if self.menu: + self.iface.mainWindow().menuBar().removeAction(self.menu.menuAction()) + self.menu = None + + # Toolbar entfernen + if self.toolbar: + self.iface.mainWindow().removeToolBar(self.toolbar) + self.toolbar = None + + # Actions zurücksetzen + self.actions.clear() + + # Gruppe leeren + self.plugin_group = None + + def remove_action(self, action): + """Entfernt eine einzelne Action aus Menü und Toolbar""" + if not action: + return + # Menüeintrag entfernen + if self.menu: + self.menu.removeAction(action) + # Toolbar-Eintrag entfernen + if self.toolbar: + self.toolbar.removeAction(action) + # Aus der internen Liste löschen + self.actions = [(p, a) for p, a in self.actions if a != action]