forked from AG_QGIS/Plugin_SN_Basis
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
# sn_basis/main.py
|
|
|
|
from sn_basis.functions.qgisqt_wrapper import QCoreApplication, getattr_safe
|
|
from qgis.utils import plugins
|
|
from sn_basis.ui.navigation import Navigation
|
|
|
|
|
|
class BasisPlugin:
|
|
def __init__(self, iface):
|
|
self.iface = iface
|
|
self.ui = None
|
|
|
|
# QCoreApplication kann im Mock-Modus None sein
|
|
if QCoreApplication is not None:
|
|
app = getattr_safe(QCoreApplication, "instance")
|
|
if callable(app):
|
|
instance = app()
|
|
about_to_quit = getattr_safe(instance, "aboutToQuit")
|
|
connect = getattr_safe(about_to_quit, "connect")
|
|
if callable(connect):
|
|
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:
|
|
init_gui = getattr_safe(plugin, "initGui")
|
|
if callable(init_gui):
|
|
init_gui()
|
|
except Exception as e:
|
|
print(f"Fehler beim Neuinitialisieren von {name}: {e}")
|
|
|
|
def unload(self):
|
|
if self.ui:
|
|
remove_all = getattr_safe(self.ui, "remove_all")
|
|
if callable(remove_all):
|
|
remove_all()
|
|
self.ui = None
|