71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
"""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)
|