Wrappe modular aufgebaut, Tests erfolgreich, Menüleiste und Werzeugleiste werden eingetragen (QT6 und QT5)- (Es fehlen noch Fachplugins, um zu prüfen, ob es auch wirklich in QGIS geht)

This commit is contained in:
2025-12-19 14:29:52 +01:00
parent e8fea163b5
commit f88b5da51f
37 changed files with 1886 additions and 1679 deletions

29
main.py
View File

@@ -1,13 +1,20 @@
# sn_basis/main.py
from sn_basis.functions.qgisqt_wrapper import QCoreApplication, getattr_safe
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):
self.iface = iface
# iface wird von QGIS übergeben, aber nicht direkt verwendet
self.ui = None
# QCoreApplication kann im Mock-Modus None sein
@@ -21,10 +28,12 @@ class BasisPlugin:
connect(self.unload)
def initGui(self):
# Basis-Navigation neu aufbauen
self.ui = Navigation(self.iface)
# Alle Fachplugins mit "sn_" prüfen und neu initialisieren
"""
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:
@@ -33,10 +42,12 @@ class BasisPlugin:
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:
remove_all = getattr_safe(self.ui, "remove_all")
if callable(remove_all):
remove_all()
self.ui.remove_all()
self.ui = None