# sn_basis/main.py from qgis.utils import plugins from sn_basis.functions.qt_wrapper import QCoreApplication from sn_basis.functions.sys_wrapper import getattr_safe from sn_basis.ui.navigation import Navigation class BasisPlugin: """ Einstiegspunkt des sn_basis-Plugins. Orchestriert UI und Fachmodule – keine UI-Logik. """ def __init__(self, iface): # iface wird von QGIS übergeben, aber nicht direkt verwendet 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): """ Initialisiert die Basis-Navigation und triggert initGui aller abhängigen sn_-Plugins. """ self.ui = Navigation() self.ui.init_ui() 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}") self.ui.finalize_menu_and_toolbar() def unload(self): """ Räumt UI-Komponenten sauber auf. """ if self.ui: self.ui.remove_all() self.ui = None