Fehler beim Entladen / Update behoben.

This commit is contained in:
Michael Otto
2025-11-17 12:48:16 +01:00
parent 617ee30650
commit 7f62696b51
3 changed files with 45 additions and 2 deletions

11
main.py
View File

@@ -1,4 +1,5 @@
from qgis.PyQt.QtCore import QCoreApplication from qgis.PyQt.QtCore import QCoreApplication
from qgis.utils import plugins
from sn_basis.ui.navigation import Navigation from sn_basis.ui.navigation import Navigation
class BasisPlugin: class BasisPlugin:
@@ -8,8 +9,18 @@ class BasisPlugin:
QCoreApplication.instance().aboutToQuit.connect(self.unload) QCoreApplication.instance().aboutToQuit.connect(self.unload)
def initGui(self): def initGui(self):
# Basis-Navigation neu aufbauen
self.ui = Navigation(self.iface) 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): def unload(self):
if self.ui: if self.ui:
self.ui.remove_all() self.ui.remove_all()
self.ui = None

View File

@@ -2,7 +2,7 @@
name=LNO Sachsen | Basisfunktionen name=LNO Sachsen | Basisfunktionen
qgisMinimumVersion=3.0 qgisMinimumVersion=3.0
description=Plugin mit Basisfunktionen description=Plugin mit Basisfunktionen
version=25.11.1 version=25.11.3
author=Michael Otto author=Michael Otto
email=michael.otto@landkreis-mittelsachsen.de email=michael.otto@landkreis-mittelsachsen.de
about=Plugin mit Basisfunktionen about=Plugin mit Basisfunktionen

View File

@@ -47,4 +47,36 @@ class Navigation:
# Alle zurücksetzen, dann aktives Plugin markieren # Alle zurücksetzen, dann aktives Plugin markieren
for _, action in self.actions: for _, action in self.actions:
action.setChecked(False) action.setChecked(False)
if active_action:
active_action.setChecked(True) 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]