forked from AG_QGIS/Plugin_SN_Verfahrensgebiet
First commit
This commit is contained in:
81
main.py
Normal file
81
main.py
Normal 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
|
||||
Reference in New Issue
Block a user