forked from AG_QGIS/Plugin_SN_Plan41
82 lines
3.3 KiB
Python
82 lines
3.3 KiB
Python
# 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_plan41_dockwidget import Plan41DockWidget
|
||
import os.path
|
||
|
||
class Plan41:
|
||
"""
|
||
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 = "Plan 41" # 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 Plan41")
|
||
|
||
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 = Plan41DockWidget()
|
||
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
|