unnötige assets gelöscht
This commit is contained in:
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 115 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 160 KiB |
@@ -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
|
||||
@@ -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.
|
||||
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 138 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 100 KiB |
@@ -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
|
||||
```
|
||||
Binary file not shown.
@@ -1,9 +0,0 @@
|
||||
```mermaid
|
||||
graph TD
|
||||
M1["<div style='text-align:center'><b>sn_basis</b><br/><br/></b></div><div style='text-align:left'>➡ Initialisierung der GUI<br/> ➡ Exception Handling<br/> ➡ Bereitstellung der Stile"]
|
||||
M2["<div style='text-align:center'><b>sn_verfahrensgebiet</b><br/><br/><div style='text-align:left'>➡ Abruf und Aufbereitung der Gebietsgrenze"<br/>➡ Erstellung neuer Gebietsgrenzen <br/>➡ Grenzpunktextraktion<br/>➡ Grenzpunktprüfung]
|
||||
M3["<div style='text-align:center'><b>sn_Plan41</b><br/><br/><div style='text-align:left'>➡ Fachdatenabruf<br/>➡Versionierung der Fachdaten<br/>➡ Planung der TG-Maßnahmen <br/>➡Kartenerzeugung (NGG und P41)<br/>➡ Erzeugung der Begleitdokumente (Anlagenverzeichnis, MVZ, Maßnahmeblätter)"]
|
||||
|
||||
M1 --> M2
|
||||
M1 --> M3
|
||||
```
|
||||
Reference in New Issue
Block a user