diff --git a/assets/Dateipruefer_flowchart.svg b/assets/Dateipruefer_flowchart.svg deleted file mode 100644 index b9abfe8..0000000 --- a/assets/Dateipruefer_flowchart.svg +++ /dev/null @@ -1,102 +0,0 @@ -

Ja

VERBOTEN

NUTZE_STANDARD
ohne plugin_pfad/standard

NUTZE_STANDARD
mit plugin_pfad+standard

TEMPORAER_ERLAUBT

Nein

Ja

Nein

Ja=ABBRECHEN

Ja=ERSETZEN/ANHAENGEN

Nein

Start: Eingabe prüfen

Pfad leer?

leer_modus

Return: erfolgreich=False
Fehler: 'Kein Pfad angegeben'

Return: erfolgreich=False
Fehler: 'Standardpfad/-name fehlen'

Setze Pfad=plugin_pfad+standard

Return: erfolgreich=True
temporär=True

Datei existiert?

vorhandene_datei_entscheidung gesetzt?

Return: erfolgreich=True
entscheidung=None
Fehler: 'Datei existiert bereits – Entscheidung ausstehend'

Return: erfolgreich=False
Fehler: 'Benutzer hat abgebrochen'

Return: erfolgreich=True
entscheidung=...

Return: erfolgreich=True
pfad=...

\ No newline at end of file diff --git a/assets/Linkpruefer_flowchart.svg b/assets/Linkpruefer_flowchart.svg deleted file mode 100644 index 7d791de..0000000 --- a/assets/Linkpruefer_flowchart.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -

Nein

Ja

Ja

Nein

Ja

Ja

Nein

Nein

Ja

Nein

Start Linkprüfung

Ist Link vorhanden?

Fehler: Link fehlt

Prüfergebnis: Fehler zurückgeben

Ist Link Remote http/https?

HEAD-Anfrage mit QgsNetworkAccessManager

Antwort erhalten?

Fehler: Verbindungsfehler

Prüfergebnis: Fehler zurückgeben

HTTP-Statuscode < 200 oder ≥ 400?

Fehler: Link nicht erreichbar

Anbieter klassifizieren

Prüfergebnis zurückgeben

Plausibilitätscheck für lokalen Link

Link sieht ungewöhnlich aus?

Warnung ausgeben

\ No newline at end of file diff --git a/assets/Objektstruktur.txt b/assets/Objektstruktur.txt deleted file mode 100644 index 0cf5e72..0000000 --- a/assets/Objektstruktur.txt +++ /dev/null @@ -1,188 +0,0 @@ -# Wrapper‑Architektur – Übersicht -Die Wrapper‑Architektur von sn_basis bildet das Fundament für eine robuste, testbare und zukunftssichere QGIS‑Plugin‑Entwicklung. -Sie kapselt sämtliche QGIS‑ und Qt‑Abhängigkeiten hinter klar definierten Schnittstellen und ermöglicht dadurch: - -Mock‑fähige Unit‑Tests ohne QGIS - -PyQt5/6‑Kompatibilität ohne Code‑Änderungen - -saubere Trennung von UI, Logik und Infrastruktur - -stabile APIs, die unabhängig von QGIS‑Versionen bleiben - -klare Erweiterbarkeit für zukünftige Module und Plugins - -Die Wrapper‑Schicht ist das zentrale Bindeglied zwischen der Plugin‑Logik und der QGIS‑/Qt‑Umgebung. - -## Ziele der Wrapper‑Architektur -🎯 1. Entkopplung von QGIS und Qt -Alle direkten Importe wie from qgis.core import ... oder from qgis.PyQt.QtWidgets import ... verschwinden aus der Plugin‑Logik. -Stattdessen werden sie über Wrapper‑Module abstrahiert. - -🎯 2. Testbarkeit ohne QGIS -Im Mock‑Modus liefern die Wrapper: - -Dummy‑Objekte - -simulierte Rückgabewerte - -speicherbare Zustände (z. B. Variablen, Layer, Nachrichten) - -Damit laufen Tests in jeder CI‑Umgebung. - -🎯 3. Einheitliche API für alle Plugins -Plugins greifen nicht mehr direkt auf QGIS zu, sondern nutzen: - -Code -sn_basis.functions.qgiscore_wrapper -sn_basis.functions.qgisui_wrapper -sn_basis.functions.qt_wrapper -sn_basis.functions.variable_wrapper -sn_basis.functions.message_wrapper -sn_basis.functions.dialog_wrapper -🎯 4. Zukunftssicherheit -Ändert sich die QGIS‑ oder Qt‑API, wird nur der Wrapper angepasst, nicht jedes Plugin. - -## Architekturüberblick -Die Wrapper‑Schicht besteht aus mehreren Modulen, die jeweils einen klar abgegrenzten Verantwortungsbereich haben. - -### 1. qt_wrapper – Qt‑Abstraktion -Kapselt alle Qt‑Widgets, Dialoge und Konstanten: - -QWidget, QDialog, QMessageBox, QToolBar, QMenu, … - -Layouts, Buttons, Labels, LineEdits - -Qt‑Konstanten wie YES, NO, Dock‑Areas - -Mock‑Modus: -Stellt Dummy‑Widgets bereit, die keine UI öffnen. - -### 2. qgiscore_wrapper – QGIS‑Core‑Abstraktion -Abstraktion für: - -QgsProject - -Layer‑Zugriff - -Projekt‑Metadaten - -Pfade, CRS, Feature‑Zugriff - -Mock‑Modus: -Simuliert ein Projekt und Layer‑Container. - -### 3. qgisui_wrapper – QGIS‑UI‑Abstraktion -Kapselt UI‑bezogene QGIS‑Funktionen: - -Zugriff auf iface - -Dock‑Management - -Menü‑ und Toolbar‑Integration - -Hauptfenster‑Zugriff - -Mock‑Modus: -Stellt ein Dummy‑Interface bereit. - -### 4. variable_wrapper – QGIS‑Variablen -Abstraktion für: - -Projektvariablen (projectScope) - -globale Variablen (globalScope) - -Mock‑Speicher für Tests - -Vorteile: - -keine QGIS‑Abhängigkeit in der Logik - -testbare Variablenverwaltung - -einheitliches API - -### 5. message_wrapper – Meldungen & Logging -Einheitliche Schnittstelle für: - -Fehlermeldungen - -Warnungen - -Info‑Meldungen - -Logging - -Mock‑Modus: -Speichert Nachrichten statt sie an QGIS zu senden. - -### 6. dialog_wrapper – Benutzer‑Dialoge -Abstraktion für: - -Ja/Nein‑Dialoge - -spätere Erweiterungen (Eingabedialoge, Dateidialoge, etc.) - -Mock‑Modus: -Gibt Default‑Werte zurück, öffnet keine UI. - -### 7. DockManager & Navigation -Diese Module nutzen die Wrapper‑Schicht, um: - -DockWidgets sicher zu verwalten - -Toolbars und Menüs zu erzeugen - -Reload‑sichere UI‑Strukturen aufzubauen - -Sie sind keine Wrapper, sondern Wrapper‑Konsumenten. - -## Designprinzipien -🧱 1. Single Source of Truth -Jede QGIS‑ oder Qt‑Funktionalität wird nur an einer Stelle implementiert. - -🔄 2. Austauschbarkeit -Mock‑Modus und Echtmodus sind vollständig austauschbar. - -🧪 3. Testbarkeit -Jede Funktion kann ohne QGIS getestet werden. - -🧼 4. Saubere Trennung -UI → qt_wrapper - -QGIS‑Core → qgiscore_wrapper - -QGIS‑UI → qgisui_wrapper - -Logik → settings_logic, layer_logic, prüfmanager, … - -🔌 5. Erweiterbarkeit -Neue Wrapper können jederzeit ergänzt werden, ohne bestehende Plugins zu brechen. - -## Vorteile für Entwickler -Keine QGIS‑Abhängigkeiten in der Logik - -IDE‑freundlich (Pylance, Autocomplete, Typing) - -CI‑fähig (Tests ohne QGIS) - -saubere Architektur - -leichte Wartbarkeit - -klare Dokumentation - -## Fazit -Die Wrapper‑Architektur ist das Herzstück von sn_basis. -Sie ermöglicht eine moderne, modulare und testbare QGIS‑Plugin‑Entwicklung, die unabhängig von QGIS‑Versionen, Qt‑Versionen und Entwicklungsumgebungen funktioniert. - -Sie bildet die Grundlage für: - -stabile APIs - -saubere UI‑Abstraktion - -automatisierte Tests - -nachhaltige Weiterentwicklung \ No newline at end of file diff --git a/assets/Pluginkonzept.md b/assets/Pluginkonzept.md deleted file mode 100644 index b00f2d4..0000000 --- a/assets/Pluginkonzept.md +++ /dev/null @@ -1,144 +0,0 @@ -# Wrapper‑Architektur – Übersicht -Die Wrapper‑Architektur von sn_basis bildet das Fundament für eine robuste, testbare und zukunftssichere QGIS‑Plugin‑Entwicklung. -Sie kapselt sämtliche QGIS‑ und Qt‑Abhängigkeiten hinter klar definierten Schnittstellen und ermöglicht dadurch: - -- Mock‑fähige Unit‑Tests ohne QGIS -- PyQt5/6‑Kompatibilität ohne Code‑Änderungen -- saubere Trennung von UI, Logik und Infrastruktur -- stabile APIs, die unabhängig von QGIS‑Versionen bleiben -- klare Erweiterbarkeit für zukünftige Module und Plugins - -Die Wrapper‑Schicht ist das zentrale Bindeglied zwischen der Plugin‑Logik und der QGIS‑/Qt‑Umgebung. - -## Ziele der Wrapper‑Architektur -1. Entkopplung von QGIS und Qt -Alle direkten Importe wie from qgis.core import ... oder from qgis.PyQt.QtWidgets import ... verschwinden aus der Plugin‑Logik. -Stattdessen werden sie über Wrapper‑Module abstrahiert. - -2. Testbarkeit ohne QGIS -Im Mock‑Modus liefern die Wrapper: - -- Dummy‑Objekte -- simulierte Rückgabewerte -- speicherbare Zustände (z. B. Variablen, Layer, Nachrichten) - -Damit laufen Tests in jeder CI‑Umgebung. - -3. Einheitliche API für alle Plugins -Plugins greifen nicht mehr direkt auf QGIS zu, sondern nutzen: - - -- sn_basis.functions.qgiscore_wrapper -- sn_basis.functions.qgisui_wrapper -- sn_basis.functions.qt_wrapper -- sn_basis.functions.variable_wrapper -- sn_basis.functions.message_wrapper -- sn_basis.functions.dialog_wrapper -Aufgrund des Umfangs ist der Wrapper für die Layerbehandlung aufgeteilt: -- ly_existence_wrapper -- ly_geometry_wrapper -- ly_Metadata_wrapper -- ly_style_wrapper -- ly_visibility_wrapper - -4. Zukunftssicherheit -Ändert sich die QGIS‑ oder Qt‑API, wird nur der Wrapper angepasst, nicht jedes Plugin. - -## Architekturüberblick -Die Wrapper‑Schicht besteht aus mehreren Modulen, die jeweils einen klar abgegrenzten Verantwortungsbereich haben. - -### 1. qt_wrapper – Qt‑Abstraktion -Kapselt alle Qt‑Widgets, Dialoge und Konstanten: - -- QWidget, QDialog, QMessageBox, QToolBar, QMenu, … -- Layouts, Buttons, Labels, LineEdits -- Qt‑Konstanten wie YES, NO, Dock‑Areas - -Mock‑Modus: -Stellt Dummy‑Widgets bereit, die keine UI öffnen. - -### 2. qgiscore_wrapper – QGIS‑Core‑Abstraktion -Abstraktion für: - -- QgsProject -- Layer‑Zugriff -- Projekt‑Metadaten -- Pfade, CRS, Feature‑Zugriff - -Mock‑Modus: -Simuliert ein Projekt und Layer‑Container. - -### 3. qgisui_wrapper – QGIS‑UI‑Abstraktion -Kapselt UI‑bezogene QGIS‑Funktionen: - -- Zugriff auf iface -- Dock‑Management -- Menü‑ und Toolbar‑Integration -- Hauptfenster‑Zugriff - -Mock‑Modus: -Stellt ein Dummy‑Interface bereit. - -### 4. variable_wrapper – QGIS‑Variablen -Abstraktion für: - -- Projektvariablen (projectScope) -- globale Variablen (globalScope) -- Mock‑Speicher für Tests - -Vorteile: - -- keine QGIS‑Abhängigkeit in der Logik -- testbare Variablenverwaltung -- einheitliches API - -### 5. message_wrapper – Meldungen & Logging -Einheitliche Schnittstelle für: - -- Fehlermeldungen -- Warnungen -- Info‑Meldungen -- Logging - -Mock‑Modus: -Speichert Nachrichten statt sie an QGIS zu senden. - -### 6. dialog_wrapper – Benutzer‑Dialoge -Abstraktion für: - -- Ja/Nein‑Dialoge -- spätere Erweiterungen (Eingabedialoge, Dateidialoge, etc.) - -Mock‑Modus: -Gibt Default‑Werte zurück, öffnet keine UI. - -### 7. DockManager & Navigation -Diese Module nutzen die Wrapper‑Schicht, um: - -- DockWidgets sicher zu verwalten -- Toolbars und Menüs zu erzeugen -- Reload‑sichere UI‑Strukturen aufzubauen - -Sie sind keine Wrapper, sondern Wrapper‑Konsumenten. Alle Fach-Plugins nutzen den Dockmanager des Basisplugins. - -## Designprinzipien -1. Single Source of Truth -Jede QGIS‑ oder Qt‑Funktionalität wird nur an einer Stelle implementiert. - -2. Austauschbarkeit -Mock‑Modus und Echtmodus sind vollständig austauschbar. - -3. Testbarkeit -Jede Funktion kann ohne QGIS getestet werden. - -4. Saubere Trennung -- UI → qt_wrapper -- QGIS‑Core → qgiscore_wrapper -- QGIS‑UI → qgisui_wrapper -- Logik → settings_logic, layer_logic, prüfmanager, … - -5. Erweiterbarkeit -Neue Wrapper können jederzeit ergänzt werden, ohne bestehende Plugins zu brechen. - - - diff --git a/assets/Stilpruefer_flowchart.svg b/assets/Stilpruefer_flowchart.svg deleted file mode 100644 index dafc0d0..0000000 --- a/assets/Stilpruefer_flowchart.svg +++ /dev/null @@ -1 +0,0 @@ -
Nein
Ja
Nein
Ja
Nein
Ja
Input Stilpfad
Stilpfad vorhanden?
Ergebnis: Erfolg, Stil=None, Warnung 'Kein Stil angegeben'
Datei existiert?
Ergebnis: Fehler 'Stildatei nicht gefunden'
Endet mit .qml?
Ergebnis: Fehler 'Ungültige Dateiendung'
Ergebnis: Erfolg, Stil=pfad
\ No newline at end of file diff --git a/assets/UML_Struktur.png b/assets/UML_Struktur.png deleted file mode 100644 index 70fea30..0000000 Binary files a/assets/UML_Struktur.png and /dev/null differ diff --git a/assets/datagrabber.jpeg b/assets/datagrabber.jpeg deleted file mode 100644 index e38d84b..0000000 Binary files a/assets/datagrabber.jpeg and /dev/null differ diff --git a/assets/datagrabber.md b/assets/datagrabber.md deleted file mode 100644 index a3161f6..0000000 --- a/assets/datagrabber.md +++ /dev/null @@ -1,38 +0,0 @@ -```mermaid -flowchart TD - subgraph Plugin - P[sn_plan41 Fachplugin] - A[Adapter Plan41LinklistAdapter] - PM[Pruefmanager] - LP[Layerpruefer] - KP[Linkpruefer] - SP[Stilpruefer] - end - - subgraph Core - DG[DataGrabber] - NL[normalized entries] - LL[Layer Loader Provider Dispatch] - SM[Spatial Matcher] - ST[Storage GPKG / PostGIS] - PR[Project QGIS - addMapLayer] - LOG[Log / Ergebnisstruktur] - end - - P -->|gibt Adapter, Prüfer, Pruefmanager| DG - A -->|load liefert Rohdaten| DG - DG -->|adapter.normalize| NL - NL --> DG - DG -->|für jeden Eintrag: _check_link -> KP.check| KP - DG -->|für jeden Eintrag: _check_style -> SP.check| SP - DG -->|prüfe vorhandene Layer| LP - DG -->|lade Layer via provider| LL - LL -->|Features| SM - SM -->|Abgleich| DG - DG -->|speichern| ST - ST --> PR - DG --> PR - DG -->|Ergebnis/Fehler| LOG - LOG --> PM - DG --> PM -``` \ No newline at end of file diff --git a/assets/datagrabber.pdf b/assets/datagrabber.pdf deleted file mode 100644 index f79edb2..0000000 Binary files a/assets/datagrabber.pdf and /dev/null differ diff --git a/assets/moduluebersicht.md b/assets/moduluebersicht.md deleted file mode 100644 index 4375bab..0000000 --- a/assets/moduluebersicht.md +++ /dev/null @@ -1,9 +0,0 @@ -```mermaid -graph TD - M1["
sn_basis

➡ Initialisierung der GUI
➡ Exception Handling
➡ Bereitstellung der Stile"] - M2["
sn_verfahrensgebiet

➡ Abruf und Aufbereitung der Gebietsgrenze"
➡ Erstellung neuer Gebietsgrenzen
➡ Grenzpunktextraktion
➡ Grenzpunktprüfung] - M3["
sn_Plan41

➡ Fachdatenabruf
➡Versionierung der Fachdaten
➡ Planung der TG-Maßnahmen
➡Kartenerzeugung (NGG und P41)
➡ Erzeugung der Begleitdokumente (Anlagenverzeichnis, MVZ, Maßnahmeblätter)"] - - M1 --> M2 - M1 --> M3 -``` \ No newline at end of file