2025-10-09 11:35:45 +02:00
|
|
|
from qgis.utils import plugins
|
2025-11-17 10:06:00 +01:00
|
|
|
from sn_basis.ui.dockmanager import DockManager
|
|
|
|
|
from .ui.dockwidget import DockWidget
|
2025-10-09 11:35:45 +02:00
|
|
|
|
2025-11-17 11:29:40 +01:00
|
|
|
|
2025-10-09 11:35:45 +02:00
|
|
|
class Plan41:
|
|
|
|
|
def __init__(self, iface):
|
|
|
|
|
self.iface = iface
|
2025-11-17 11:29:40 +01:00
|
|
|
self.action = None
|
2025-11-17 10:06:00 +01:00
|
|
|
self.dockwidget = None
|
2025-10-09 11:35:45 +02:00
|
|
|
|
2025-11-17 11:29:40 +01:00
|
|
|
# Namen automatisch aus Klassennamen ableiten
|
|
|
|
|
self.plugin_name = self.__class__.__name__
|
|
|
|
|
self.dock_name = f"sn_dock_{self.plugin_name.lower()}"
|
|
|
|
|
|
2025-10-09 11:35:45 +02:00
|
|
|
def initGui(self):
|
2025-11-17 10:06:00 +01:00
|
|
|
basis = plugins.get("sn_basis")
|
|
|
|
|
if basis and basis.ui:
|
2025-11-17 11:29:40 +01:00
|
|
|
self.action = basis.ui.add_action(
|
|
|
|
|
self.plugin_name,
|
|
|
|
|
self.run,
|
|
|
|
|
tooltip=f"Öffnet {self.plugin_name}",
|
|
|
|
|
priority=20
|
|
|
|
|
)
|
2025-11-17 10:06:00 +01:00
|
|
|
basis.ui.finalize_menu_and_toolbar()
|
2025-10-09 11:35:45 +02:00
|
|
|
|
|
|
|
|
def unload(self):
|
2025-11-13 09:32:29 +01:00
|
|
|
if self.dockwidget:
|
2025-11-17 10:06:00 +01:00
|
|
|
self.iface.removeDockWidget(self.dockwidget)
|
2025-11-13 09:32:29 +01:00
|
|
|
self.dockwidget.deleteLater()
|
|
|
|
|
self.dockwidget = None
|
2025-10-09 11:35:45 +02:00
|
|
|
|
2025-11-17 12:23:19 +01:00
|
|
|
if self.action:
|
|
|
|
|
basis = plugins.get("sn_basis")
|
|
|
|
|
if basis and basis.ui:
|
2025-11-17 12:48:26 +01:00
|
|
|
# Action aus Menü und Toolbar entfernen
|
|
|
|
|
basis.ui.remove_action(self.action)
|
|
|
|
|
self.action = None
|
2025-11-17 12:23:19 +01:00
|
|
|
|
2025-10-09 11:35:45 +02:00
|
|
|
def run(self):
|
2025-11-17 11:29:40 +01:00
|
|
|
self.dockwidget = DockWidget(self.iface.mainWindow(), subtitle=self.plugin_name)
|
|
|
|
|
self.dockwidget.setObjectName(self.dock_name)
|
2025-11-17 12:23:19 +01:00
|
|
|
|
|
|
|
|
# Action-Referenz im Dock speichern
|
|
|
|
|
self.dockwidget.action = self.action
|
|
|
|
|
|
2025-11-17 10:06:00 +01:00
|
|
|
DockManager.show(self.dockwidget)
|
2025-11-17 12:23:19 +01:00
|
|
|
|
|
|
|
|
# Toolbar-Button als aktiv markieren
|
|
|
|
|
basis = plugins.get("sn_basis")
|
|
|
|
|
if basis and basis.ui:
|
|
|
|
|
basis.ui.set_active_plugin(self.action)
|