Files
2026-04-20 14:31:49 +02:00

71 lines
2.3 KiB
Python
Raw Permalink 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_plan41/main.py Einstiegspunkt des sn_plan41 Plugins.
Orchestriert die UI und den Datenabruf für Thematische Linklisten.
"""
from qgis.utils import plugins
from sn_basis.ui.dockmanager import DockManager
from sn_plan41.ui.dockwidget import DockWidget
from sn_basis.modules.DataGrabber import DataGrabber
from sn_basis.modules.Pruefmanager import Pruefmanager
class Plan41:
"""Einstiegspunkt des sn_plan41-Plugins.
Verwaltet die DockWidget-Initialisierung und den Datenflusss.
"""
def __init__(self, iface):
self.iface = iface
self.pruefmanager=Pruefmanager(ui_modus="qgis")
self.data_grabber=DataGrabber(pruefmanager=self.pruefmanager)
self.action = None
self.dockwidget = None
# Namen automatisch aus Klassennamen ableiten
self.plugin_name = self.__class__.__name__
self.dock_name = f"sn_dock_{self.plugin_name.lower()}"
def initGui(self):
basis = plugins.get("sn_basis")
if not basis or not getattr(basis, "ui", None):
return
self.action = basis.ui.add_action(
self.plugin_name,
self.run,
tooltip=f"Öffnet {self.plugin_name}",
priority=20,
)
basis.ui.finalize_menu_and_toolbar()
print("Plan41/sn_Basis:initGui called")
def unload(self):
if self.dockwidget:
self.iface.removeDockWidget(self.dockwidget)
self.dockwidget.deleteLater()
self.dockwidget = None
if self.action:
basis = plugins.get("sn_basis")
if basis and getattr(basis, "ui", None):
basis.ui.remove_action(self.action)
self.action = None
def run(self):
self.dockwidget = DockWidget(
self.iface.mainWindow(),
subtitle=self.plugin_name,
pruefmanager=self.pruefmanager,
data_grabber=self.data_grabber)
self.dockwidget.setObjectName(self.dock_name)
# Action-Referenz im Dock speichern
self.dockwidget.action = self.action
DockManager.show(self.dockwidget)
# Toolbar-Button als aktiv markieren
basis = plugins.get("sn_basis")
if basis and getattr(basis, "ui", None):
basis.ui.set_active_plugin(self.action)