2025-10-09 11:35:08 +02:00
|
|
|
|
# Import grundlegender Qt- und QGIS-Komponenten
|
|
|
|
|
|
from qgis.PyQt.QtCore import QSettings, QTranslator, QCoreApplication, Qt
|
|
|
|
|
|
from qgis.PyQt.QtGui import QIcon
|
|
|
|
|
|
from qgis.PyQt.QtWidgets import QAction, QMessageBox
|
|
|
|
|
|
from qgis.utils import plugins
|
|
|
|
|
|
|
|
|
|
|
|
# Import der generierten Ressourcen (z. B. Icons)
|
|
|
|
|
|
from .resources import *
|
|
|
|
|
|
|
|
|
|
|
|
# Import der gemeinsamen UI-Klasse für Menü und Symbolleiste
|
2025-10-09 13:57:11 +02:00
|
|
|
|
from sn_basis.ui.navigation import Navigation
|
2025-10-09 11:35:08 +02:00
|
|
|
|
|
|
|
|
|
|
# Import des Dockwidgets, das beim Ausführen des Plugins angezeigt wird
|
|
|
|
|
|
from .ui.sn_verfahrensgebiet_dockwidget import VerfahrensgebietDockWidget
|
|
|
|
|
|
import os.path
|
|
|
|
|
|
|
|
|
|
|
|
class Verfahrensgebiet:
|
|
|
|
|
|
"""
|
|
|
|
|
|
Hauptklasse des Plugins. Verwaltet die Initialisierung, GUI-Integration und das Dockwidget.
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, iface):
|
|
|
|
|
|
# iface: QGIS-Schnittstelle zur Interaktion mit der Anwendung
|
|
|
|
|
|
self.iface = iface
|
|
|
|
|
|
self.plugin_dir = os.path.dirname(__file__) # Pfad zum Plugin-Verzeichnis
|
|
|
|
|
|
|
|
|
|
|
|
self.actions = [] # Platzhalter für spätere Aktionsverwaltung (optional)
|
|
|
|
|
|
self.pluginIsActive = False # Statusflag, ob das Plugin aktiv ist
|
|
|
|
|
|
self.dockwidget = None # Referenz auf das Dockwidget
|
|
|
|
|
|
|
|
|
|
|
|
def initGui(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
Wird beim Laden des Plugins aufgerufen. Fügt Menüeintrag und Symbolleistenaktion hinzu.
|
|
|
|
|
|
"""
|
|
|
|
|
|
self.action_text = "Verfahrensgebiet" # Einheitlicher Text für Menü und Toolbar
|
|
|
|
|
|
icon = QIcon(":/sn_plugin1/icons/icon.png") # Icon aus Ressourcen laden
|
2025-10-09 13:57:11 +02:00
|
|
|
|
self.ui = Navigation() # Gemeinsame UI-Instanz für Menü und Toolbar
|
2025-10-09 11:35:08 +02:00
|
|
|
|
self.ui.add_action(self.action_text, self.run, icon, tooltip="Öffnet Verfahrensgebiet")
|
|
|
|
|
|
|
|
|
|
|
|
def onClosePlugin(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
Wird aufgerufen, wenn das Dockwidget geschlossen wird. Setzt den Aktivitätsstatus zurück.
|
|
|
|
|
|
"""
|
|
|
|
|
|
self.dockwidget.closingPlugin.disconnect(self.onClosePlugin)
|
|
|
|
|
|
self.pluginIsActive = False
|
|
|
|
|
|
|
|
|
|
|
|
def unload(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
Wird beim Deaktivieren des Plugins aufgerufen. Entfernt Menü- und Toolbar-Eintrag.
|
|
|
|
|
|
"""
|
|
|
|
|
|
self.ui.remove_action(self.action_text)
|
|
|
|
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
Wird beim Klick auf Menüeintrag oder Symbolleistenaktion ausgeführt.
|
|
|
|
|
|
Zeigt das Dockwidget an.
|
|
|
|
|
|
"""
|
|
|
|
|
|
if 'sn_basis' not in plugins:
|
|
|
|
|
|
QMessageBox.warning(None, "Abhängigkeit fehlt",
|
|
|
|
|
|
"Das Plugin 'LNO Sachsen | Basisfunktionen' ist nicht installiert oder nicht aktiviert.\nBitte installieren und aktivieren, um fortzufahren.")
|
|
|
|
|
|
return # Plugin nicht starten
|
|
|
|
|
|
|
|
|
|
|
|
# Prüfen, ob das eigene Dockwidget existiert und aktuell sichtbar ist
|
|
|
|
|
|
dock_visible = self.dockwidget is not None and self.dockwidget.isVisible()
|
|
|
|
|
|
|
|
|
|
|
|
if not dock_visible:
|
|
|
|
|
|
# Pluginstatus setzen, damit z. B. beim Schließen korrekt zurückgesetzt werden kann
|
|
|
|
|
|
self.pluginIsActive = True
|
|
|
|
|
|
|
|
|
|
|
|
# Falls noch kein Dockwidget existiert, wird es jetzt erzeugt
|
|
|
|
|
|
if self.dockwidget is None:
|
|
|
|
|
|
self.dockwidget = VerfahrensgebietDockWidget()
|
|
|
|
|
|
self.dockwidget.closingPlugin.connect(self.onClosePlugin)
|
|
|
|
|
|
|
|
|
|
|
|
# Dock anzeigen und ggf. andere Docks schließen
|
2025-10-09 12:52:24 +02:00
|
|
|
|
from sn_basis.ui.dockmanager import DockManager
|
2025-10-09 11:35:08 +02:00
|
|
|
|
DockManager.show(self.dockwidget)
|
|
|
|
|
|
else:
|
|
|
|
|
|
# Falls das eigene Dock bereits sichtbar ist, wird keine Aktion ausgeführt
|
|
|
|
|
|
pass
|