Files

54 lines
1.7 KiB
Python
Raw Permalink Normal View History

# sn_basis/main.py
2025-11-17 12:48:16 +01:00
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()
2025-11-17 12:48:16 +01:00
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()
2025-11-17 12:48:16 +01:00
except Exception as e:
print(f"Fehler beim Neuinitialisieren von {name}: {e}")
self.ui.finalize_menu_and_toolbar()
2025-11-17 12:48:16 +01:00
def unload(self):
"""
Räumt UI-Komponenten sauber auf.
"""
2025-11-17 11:29:04 +01:00
if self.ui:
self.ui.remove_all()
2025-11-17 12:48:16 +01:00
self.ui = None