forked from AG_QGIS/Plugin_SN_Basis
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
# 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
|