Files
Plugin_SN_Basis/main.py
T
Daniel 88761eab22
Release Plugin / release (push) Successful in 4s
exit_Crash_fix
2026-04-20 13:28:00 +02:00

64 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.functions.verfahrensgebiet_manager import (
setup_verfahrensgebiet_listener,
teardown_verfahrensgebiet_listener,
)
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()
# Zentrale Verwaltung des Verfahrensgebiet-Layers starten
setup_verfahrensgebiet_listener()
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.
"""
teardown_verfahrensgebiet_listener()
if self.ui:
self.ui.remove_all()
self.ui = None