Files
Plugin_SN_Plan41/main.py
Michael Otto 0402ccb86b First commit
2025-10-09 11:35:45 +02:00

82 lines
3.3 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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