First commit

This commit is contained in:
Michael Otto
2025-10-09 11:35:08 +02:00
parent cdb2f5b1ea
commit e2d732e564
17 changed files with 484 additions and 0 deletions

81
main.py Normal file
View File

@@ -0,0 +1,81 @@
# 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
from .shared import UI
from .shared import DockManager
# 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
self.ui = UI() # Gemeinsame UI-Instanz für Menü und Toolbar
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
from .shared.dockmanager import DockManager
DockManager.show(self.dockwidget)
else:
# Falls das eigene Dock bereits sichtbar ist, wird keine Aktion ausgeführt
pass