2025-12-18 22:00:31 +01:00
|
|
|
|
# sn_basis/main.py
|
|
|
|
|
|
|
2025-11-17 12:48:16 +01:00
|
|
|
|
from qgis.utils import plugins
|
2025-12-19 14:29:52 +01:00
|
|
|
|
|
|
|
|
|
|
from sn_basis.functions.qt_wrapper import QCoreApplication
|
|
|
|
|
|
from sn_basis.functions.sys_wrapper import getattr_safe
|
2025-11-17 10:05:42 +01:00
|
|
|
|
from sn_basis.ui.navigation import Navigation
|
2025-10-09 10:16:54 +02:00
|
|
|
|
|
2025-12-18 22:00:31 +01:00
|
|
|
|
|
2025-11-17 10:05:42 +01:00
|
|
|
|
class BasisPlugin:
|
2025-12-19 14:29:52 +01:00
|
|
|
|
"""
|
|
|
|
|
|
Einstiegspunkt des sn_basis-Plugins.
|
|
|
|
|
|
Orchestriert UI und Fachmodule – keine UI-Logik.
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
2025-10-09 10:16:54 +02:00
|
|
|
|
def __init__(self, iface):
|
2025-12-19 14:29:52 +01:00
|
|
|
|
# iface wird von QGIS übergeben, aber nicht direkt verwendet
|
2025-11-17 10:05:42 +01:00
|
|
|
|
self.ui = None
|
2025-12-18 22:00:31 +01:00
|
|
|
|
|
|
|
|
|
|
# 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)
|
2025-10-09 10:16:54 +02:00
|
|
|
|
|
|
|
|
|
|
def initGui(self):
|
2025-12-19 14:29:52 +01:00
|
|
|
|
"""
|
|
|
|
|
|
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:
|
2025-12-18 22:00:31 +01:00
|
|
|
|
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}")
|
2025-12-19 14:29:52 +01:00
|
|
|
|
self.ui.finalize_menu_and_toolbar()
|
2025-11-17 12:48:16 +01:00
|
|
|
|
|
2025-10-09 10:16:54 +02:00
|
|
|
|
def unload(self):
|
2025-12-19 14:29:52 +01:00
|
|
|
|
"""
|
|
|
|
|
|
Räumt UI-Komponenten sauber auf.
|
|
|
|
|
|
"""
|
2025-11-17 11:29:04 +01:00
|
|
|
|
if self.ui:
|
2025-12-19 14:29:52 +01:00
|
|
|
|
self.ui.remove_all()
|
2025-11-17 12:48:16 +01:00
|
|
|
|
self.ui = None
|