80 lines
2.7 KiB
Python
80 lines
2.7 KiB
Python
"""sn_verfahrensgebiet/main.py – Einstiegspunkt des sn_verfahrensgebiet Plugins.
|
||
Orchestriert die Verwaltung von Verfahrensgebiets-Layern und deren Eigenschaften.
|
||
"""
|
||
|
||
from qgis.utils import plugins
|
||
from sn_basis.ui.dockmanager import DockManager
|
||
from .ui.dockwidget import DockWidget
|
||
from sn_basis.modules.DataGrabber import DataGrabber
|
||
from sn_basis.modules.Pruefmanager import Pruefmanager
|
||
|
||
class Verfahrensgebiet:
|
||
"""Einstiegspunkt des sn_verfahrensgebiet-Plugins.
|
||
Verwaltet die DockWidget-Initialisierung und das Verfahrensgebiets-Management.
|
||
"""
|
||
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 _basis(self):
|
||
return plugins.get("sn_basis")
|
||
|
||
def initGui(self):
|
||
basis = self._basis()
|
||
if basis and basis.ui:
|
||
self.action = basis.ui.add_action(
|
||
self.plugin_name,
|
||
self.run,
|
||
tooltip=f"Öffnet {self.plugin_name}",
|
||
priority=10
|
||
)
|
||
basis.ui.finalize_menu_and_toolbar()
|
||
|
||
def unload(self):
|
||
if self.dockwidget:
|
||
self.iface.removeDockWidget(self.dockwidget)
|
||
self.dockwidget.deleteLater()
|
||
self.dockwidget = None
|
||
|
||
if self.action:
|
||
basis = self._basis()
|
||
if basis and basis.ui:
|
||
basis.ui.remove_action(self.action)
|
||
self.action = None
|
||
|
||
# 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)
|
||
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 basis.ui:
|
||
basis.ui.set_active_plugin(self.action) |