2026-04-20 14:33:13 +02:00
|
|
|
|
"""sn_verfahrensgebiet/main.py – Einstiegspunkt des sn_verfahrensgebiet Plugins.
|
|
|
|
|
|
Orchestriert die Verwaltung von Verfahrensgebiets-Layern und deren Eigenschaften.
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
2025-10-09 11:35:08 +02:00
|
|
|
|
from qgis.utils import plugins
|
2025-11-17 10:05:52 +01:00
|
|
|
|
from sn_basis.ui.dockmanager import DockManager
|
|
|
|
|
|
from .ui.dockwidget import DockWidget
|
2026-03-27 11:19:07 +01:00
|
|
|
|
from sn_basis.modules.DataGrabber import DataGrabber
|
|
|
|
|
|
from sn_basis.modules.Pruefmanager import Pruefmanager
|
2025-10-09 11:35:08 +02:00
|
|
|
|
|
|
|
|
|
|
class Verfahrensgebiet:
|
2026-04-20 14:33:13 +02:00
|
|
|
|
"""Einstiegspunkt des sn_verfahrensgebiet-Plugins.
|
|
|
|
|
|
Verwaltet die DockWidget-Initialisierung und das Verfahrensgebiets-Management.
|
|
|
|
|
|
"""
|
2025-10-09 11:35:08 +02:00
|
|
|
|
def __init__(self, iface):
|
|
|
|
|
|
self.iface = iface
|
2026-03-27 11:19:07 +01:00
|
|
|
|
self.pruefmanager = Pruefmanager(ui_modus="qgis")
|
|
|
|
|
|
self.data_grabber = DataGrabber(pruefmanager=self.pruefmanager)
|
2025-11-17 11:29:25 +01:00
|
|
|
|
self.action = None
|
2025-11-17 10:05:52 +01:00
|
|
|
|
self.dockwidget = None
|
2025-10-09 11:35:08 +02:00
|
|
|
|
|
2025-11-17 11:29:25 +01:00
|
|
|
|
# Namen automatisch aus Klassennamen ableiten
|
|
|
|
|
|
self.plugin_name = self.__class__.__name__
|
|
|
|
|
|
self.dock_name = f"sn_dock_{self.plugin_name.lower()}"
|
|
|
|
|
|
|
2025-11-18 16:10:58 +01:00
|
|
|
|
def _basis(self):
|
|
|
|
|
|
return plugins.get("sn_basis")
|
|
|
|
|
|
|
2025-10-09 11:35:08 +02:00
|
|
|
|
def initGui(self):
|
2025-11-18 16:10:58 +01:00
|
|
|
|
basis = self._basis()
|
2025-11-17 10:05:52 +01:00
|
|
|
|
if basis and basis.ui:
|
2025-11-17 11:29:25 +01:00
|
|
|
|
self.action = basis.ui.add_action(
|
|
|
|
|
|
self.plugin_name,
|
|
|
|
|
|
self.run,
|
|
|
|
|
|
tooltip=f"Öffnet {self.plugin_name}",
|
|
|
|
|
|
priority=10
|
|
|
|
|
|
)
|
2025-11-17 10:05:52 +01:00
|
|
|
|
basis.ui.finalize_menu_and_toolbar()
|
2025-10-09 11:35:08 +02:00
|
|
|
|
|
|
|
|
|
|
def unload(self):
|
2025-11-13 09:32:22 +01:00
|
|
|
|
if self.dockwidget:
|
2025-11-17 10:05:52 +01:00
|
|
|
|
self.iface.removeDockWidget(self.dockwidget)
|
2025-11-13 09:32:22 +01:00
|
|
|
|
self.dockwidget.deleteLater()
|
|
|
|
|
|
self.dockwidget = None
|
2025-10-09 11:35:08 +02:00
|
|
|
|
|
2025-11-17 12:23:11 +01:00
|
|
|
|
if self.action:
|
2025-11-18 16:10:58 +01:00
|
|
|
|
basis = self._basis()
|
2025-11-17 12:23:11 +01:00
|
|
|
|
if basis and basis.ui:
|
2025-11-17 12:48:22 +01:00
|
|
|
|
basis.ui.remove_action(self.action)
|
|
|
|
|
|
self.action = None
|
2025-11-17 12:23:11 +01:00
|
|
|
|
|
2025-11-18 16:10:58 +01:00
|
|
|
|
# def run(self):
|
|
|
|
|
|
# if not self.dockwidget:
|
|
|
|
|
|
# self.dockwidget = DockWidget(self.iface.mainWindow(), subtitle=self.plugin_name)
|
|
|
|
|
|
# self.dockwidget.setObjectName(self.dock_name)
|
|
|
|
|
|
# self.dockwidget.action = self.action
|
|
|
|
|
|
|
|
|
|
|
|
# DockManager.show(self.dockwidget)
|
|
|
|
|
|
|
|
|
|
|
|
# basis = self._basis()
|
|
|
|
|
|
# if basis and basis.ui:
|
|
|
|
|
|
# basis.ui.set_active_plugin(self.action)
|
2025-10-09 11:35:08 +02:00
|
|
|
|
def run(self):
|
2026-03-27 11:19:07 +01:00
|
|
|
|
self.dockwidget = DockWidget(
|
|
|
|
|
|
self.iface.mainWindow(),
|
|
|
|
|
|
subtitle=self.plugin_name,
|
|
|
|
|
|
pruefmanager=self.pruefmanager,
|
|
|
|
|
|
data_grabber=self.data_grabber,
|
|
|
|
|
|
)
|
2025-11-17 11:29:25 +01:00
|
|
|
|
self.dockwidget.setObjectName(self.dock_name)
|
2025-11-17 12:23:11 +01:00
|
|
|
|
|
|
|
|
|
|
# Action-Referenz im Dock speichern
|
|
|
|
|
|
self.dockwidget.action = self.action
|
|
|
|
|
|
|
2025-11-17 10:05:52 +01:00
|
|
|
|
DockManager.show(self.dockwidget)
|
2025-11-17 12:23:11 +01:00
|
|
|
|
|
|
|
|
|
|
# Toolbar-Button als aktiv markieren
|
|
|
|
|
|
basis = plugins.get("sn_basis")
|
|
|
|
|
|
if basis and basis.ui:
|
2025-11-18 16:10:58 +01:00
|
|
|
|
basis.ui.set_active_plugin(self.action)
|