Legenden-Mindestbreite (Basis #96) dokumentiert
- schnittstellen.md Abschnitt 12: Mindestbreite 180 mm (= Kartenschild), Layout-Eigenschaft sn_legende_mindestbreite, Listener in sn_basis.main - fallstricke.md: setMinimumSize wird nicht im Projekt gespeichert - modulkarte.md, STATUS.md, Testkatalog Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -58,11 +58,11 @@ Legende: ⚠ = über 600 Zeilen, nie komplett laden, per `grep -n "def "` navigi
|
||||
| `modules/Datenschreiber.py` | 448 | `schreibe_Daten(...)` in GeoPackage, `lade_Layer(...)` ins Projekt, `schreibe_log(...)` HTML-Protokoll |
|
||||
| `modules/print_logic.py` ⚠ | 1 360 | `PrintLogic`, `AtlasConfig`, `RectangleCaptureTool`: Druckbereich, Maßstab, Atlas, Layoutaufruf |
|
||||
| `modules/print_layout.py` ⚠ | 1 127 | `PrintLayout`: Layoutaufbau für § 38 / § 41 (Karte, Legende, Gitter, Schriftfeld) |
|
||||
| `modules/print_kartenrand.py` | 189 | Kartenrand (Legenden, Quellenangabe, Kartenschild) überlappungsfrei anordnen: 1–3 Legendenspalten, Rand breiter, Seite ggf. höher (#93) |
|
||||
| `modules/print_kartenrand.py` | 284 | Kartenrand (Legenden, Quellenangabe, Kartenschild) überlappungsfrei anordnen: 1–3 Legendenspalten, Rand breiter, Seite ggf. höher (#93); Legenden-Mindestbreite 180 mm samt Listener für das Neuladen (#96) |
|
||||
| `modules/print_layout_baufreigabe.py` | 403 | Layout „Anlage zur Baufreigabe“ (feste DIN A3/A4 quer) |
|
||||
| `modules/basemap_legende.py` | 471 | Basemap-Legende (#88): Legendenkatalog laden, Styles → Einträge, Auswahl merken, Basemap-Layer erkennen, Auswertebereich; `BasemapLegende.aktualisiere(layout)` als Einstieg |
|
||||
| `modules/basemap_kacheln.py` | 192 | Kacheln des Basemap-Layers kachelweise über `selectByGeometry` auswerten, Renderer-Styles lesen, Zoomstufen wie der QGIS-Renderer |
|
||||
| `modules/basemap_legende_layout.py` | 465 | Legendensymbole aus Projektlayer-Styles zusammensetzen (weiße Flächen mit Legendenrand, #92), leere Hilfslayer, Legendenelement „Legende Basemap“ schreiben und platzieren |
|
||||
| `modules/basemap_legende_layout.py` | 471 | Legendensymbole aus Projektlayer-Styles zusammensetzen (weiße Flächen mit Legendenrand, #92), leere Hilfslayer, Legendenelement „Legende Basemap“ schreiben und platzieren |
|
||||
| `modules/basemap_katalog.py` | 418 | Erzeugt/aktualisiert `data/basemap_legende.json` aus der basemap.de-Style-JSON (nur Standardbibliothek, eigenständig aufrufbar) |
|
||||
| `modules/basemap_stilkorrektur.py` | 99 | Darstellungsfehler des Basemap-Layers korrigieren: Punktlinien mit Strichlänge 0 sichtbar machen (#90) |
|
||||
| `modules/basemap_stilvorlagen.py` | 181 | Lokale Stilvorlagen des Basemap-Layers (QML + JSON im QGIS-Profil), Standard in `QSettings` |
|
||||
|
||||
@@ -161,3 +161,8 @@ die Elemente **über ihre IDs**: `Hauptkarte`, `Legende`, `Legende Basemap`, `Qu
|
||||
muss die Liste anpassen. Die Seitengröße aus `print_logic` ist danach nur noch eine Mindestgröße: Breite und Höhe
|
||||
können wachsen, die Karte bleibt bei 10 mm / 10 mm mit unveränderter Größe.
|
||||
|
||||
Legenden sind mindestens so breit wie das Kartenschild (180 mm, `MIN_SPALTENBREITE_MM`; die 210 mm in
|
||||
`print_logic.STANDARD_LAYOUT_FIXBREITE_MM` sind der gesamte Kartenrand mit Abständen). Weil QGIS die Mindestgröße
|
||||
nicht speichert, trägt das Layout die Eigenschaft `sn_legende_mindestbreite`; `sn_basis.main` verbindet beim Start
|
||||
`setup_mindestbreiten_listener()` (readProject) und trennt ihn in `unload()` (Basis #96).
|
||||
|
||||
|
||||
@@ -68,7 +68,8 @@ spätere Phase und beginnt erst, wenn die Test-Baseline grün ist und das Projek
|
||||
(Bezeichnungen, Gruppen, Zusammenfassungen; Konzept `docs/konzept/10_basemap_legende.md` Abschnitt 10,
|
||||
ADR 0010; bisher unauffällig). Unter QGIS 4 geprüft (Plugin funktioniert, Rückmeldung 02.10.2026).
|
||||
16. **Kartenrand-Überlappung bei kleinen Verfahren (Basis #93).** Gemergt (PR #95). Mehrspaltige Legenden schmaler
|
||||
(#96: Textumbruch 60 mm, ungleiche Spaltenbreiten, zweizeiliger Basemap-Titel) auf
|
||||
(#96: Textumbruch 60 mm, ungleiche Spaltenbreiten, zweizeiliger Basemap-Titel, Mindestbreite 180 mm wie das
|
||||
Kartenschild) auf
|
||||
`Plugin_SN_Basis:bugfix/96-legenden-spaltenbreite`, PR steht aus.
|
||||
|
||||
**Hinweis zum lokalen Stand (04.09.2026):** Die Klone `Plugin_SN_Verfahrensgebiet` (4 Commits: PR #43, PR #45)
|
||||
|
||||
+31
-19
File diff suppressed because one or more lines are too long
@@ -9,17 +9,17 @@ selbst (Docstrings) und aus der Testbaseline.
|
||||
|
||||
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
|
||||
|
||||
Gesamt: 3 Pakete, 58 Testdateien, 676 Testfälle – 633 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 531 von 676 (79 %).
|
||||
Gesamt: 3 Pakete, 58 Testdateien, 681 Testfälle – 638 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 536 von 681 (79 %).
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `sn_basis` | 41 | 424 | 424 | 0 | 0 | 424 von 424 (100 %) |
|
||||
| `sn_basis` | 41 | 429 | 429 | 0 | 0 | 429 von 429 (100 %) |
|
||||
| `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) |
|
||||
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) |
|
||||
| **Summe** | **58** | **676** | **633** | **35** | **8** | **531 von 676 (79 %)** |
|
||||
| **Summe** | **58** | **681** | **638** | **35** | **8** | **536 von 681 (79 %)** |
|
||||
|
||||
### Legende
|
||||
|
||||
@@ -31,7 +31,7 @@ Mit Beschreibung (Docstring): 531 von 676 (79 %).
|
||||
|
||||
## Paket `sn_basis`
|
||||
|
||||
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 41 Testdateien mit 424 Testfällen (424 grün, 0 rot, 0 übersprungen).
|
||||
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 41 Testdateien mit 429 Testfällen (429 grün, 0 rot, 0 übersprungen).
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
|
||||
|
||||
@@ -161,7 +161,7 @@ Testgruppen:
|
||||
- `TestKennzeichenUndKarte` (2 Testfälle): — (Docstring fehlt)
|
||||
- `TestSymbolwahl` (2 Testfälle): — (Docstring fehlt)
|
||||
- `TestHilfslayer` (3 Testfälle): — (Docstring fehlt)
|
||||
- `TestPlatzierung` (6 Testfälle): — (Docstring fehlt)
|
||||
- `TestPlatzierung` (7 Testfälle): — (Docstring fehlt)
|
||||
|
||||
| Testfall | prüft | Status |
|
||||
| --- | --- | --- |
|
||||
@@ -176,6 +176,7 @@ Testgruppen:
|
||||
| `TestPlatzierung.test_mehrspaltig_wenn_hoehe_nicht_reicht` | Prüft, dass die Legende zwei- oder dreispaltig wird, wenn sie einspaltig nicht zwischen Hauptlegende und Quellenangabe passt. | grün |
|
||||
| `TestPlatzierung.test_spalten_ungleich_breit` | Prüft, dass die Basemap-Legende ungleich breite Spalten bekommt (#96). | grün |
|
||||
| `TestPlatzierung.test_mindestgroesse_mit_ungleichen_spalten_und_umbruch` | Prüft, dass der Platzbedarf mit ungleich breiten Spalten und Textumbruch berechnet wird (#96). | grün |
|
||||
| `TestPlatzierung.test_neue_basemap_legende_mindestens_so_breit_wie_kartenschild` | Prüft, dass eine neu angelegte Basemap-Legende die Breite des Kartenschilds als Mindestbreite bekommt. | grün |
|
||||
| `TestPlatzierung.test_titel_zweizeilig` | Prüft, dass der Titel der Basemap-Legende zweizeilig ist, damit er die Mindestbreite nicht bestimmt (#96). | grün |
|
||||
| `TestPlatzierung.test_nie_breiter_als_der_seitenrand_mit_hinweis` | Prüft, dass keine Spaltenzahl gewählt wird, die über den Seitenrand ragt, und dann ein Hinweis kommt. | grün |
|
||||
|
||||
@@ -602,7 +603,8 @@ Worum es in der Datei geht: Tests für modules/print_kartenrand.py – Anordnung
|
||||
Testgruppen:
|
||||
|
||||
- `TestBerechneAnordnung` (5 Testfälle): — (Docstring fehlt)
|
||||
- `TestOrdneKartenrandAn` (4 Testfälle): — (Docstring fehlt)
|
||||
- `TestOrdneKartenrandAn` (5 Testfälle): — (Docstring fehlt)
|
||||
- `TestMindestbreiteBeimLaden` (3 Testfälle): — (Docstring fehlt)
|
||||
- `TestAnbindungPrintLayout` (2 Testfälle): — (Docstring fehlt)
|
||||
|
||||
| Testfall | prüft | Status |
|
||||
@@ -614,8 +616,12 @@ Testgruppen:
|
||||
| `TestBerechneAnordnung.test_ohne_legenden_nur_kartenschild` | Prüft, dass ohne Legenden nur Quellenangabe und Kartenschild zählen und die Seite bei zu niedriger Karte höher wird. | grün |
|
||||
| `TestOrdneKartenrandAn.test_seite_hoeher_und_kartenschild_verschoben` | Prüft, dass bei zu niedriger Karte die Legende dreispaltig wird, die Seite wächst und Quellenangabe und Kartenschild um denselben Betrag nach unten rutschen. | grün |
|
||||
| `TestOrdneKartenrandAn.test_spalten_ungleich_breit_und_text_umgebrochen` | Prüft, dass die Legenden ungleich breite Spalten und einen automatischen Textumbruch bekommen, damit mehrspaltige Legenden nicht unnötig breit werden (#96). | grün |
|
||||
| `TestOrdneKartenrandAn.test_legenden_mindestens_so_breit_wie_kartenschild` | Prüft, dass die Legenden die Breite des Kartenschilds als Mindestbreite bekommen und das Layout sie für das Neuladen vermerkt. | grün |
|
||||
| `TestOrdneKartenrandAn.test_passt_nichts_wird_verschoben` | Prüft, dass bei ausreichend hoher Karte weder Seite noch Kartenschild verändert werden. | grün |
|
||||
| `TestOrdneKartenrandAn.test_ohne_karte_keine_anordnung` | Prüft, dass ein Layout ohne Hauptkarte unverändert bleibt. | grün |
|
||||
| `TestMindestbreiteBeimLaden.test_mindestbreite_nur_fuer_vermerkte_layouts` | Prüft, dass beim Laden die Mindestbreite nur an Layouts mit Vermerk wieder gesetzt wird. | grün |
|
||||
| `TestMindestbreiteBeimLaden.test_listener_verbinden_und_trennen` | Prüft, dass der Listener readProject einmal verbindet, beim Trennen wieder löst und beides mehrfach aufgerufen werden darf. | grün |
|
||||
| `TestMindestbreiteBeimLaden.test_ohne_qgis_kein_listener` | Prüft, dass im Mock-Modus kein Listener verbunden wird. | grün |
|
||||
| `TestAnbindungPrintLayout.test_vorlage_ordnet_kartenrand_an` | Prüft, dass PrintLayout beim Anlegen einer Vorlage den Kartenrand anordnen lässt. | grün |
|
||||
| `TestAnbindungPrintLayout.test_fehler_bei_der_anordnung_verhindert_die_vorlage_nicht` | Prüft, dass ein Fehler bei der Anordnung nur als Warnung gemeldet wird und keine Ausnahme durchreicht. | grün |
|
||||
|
||||
@@ -1453,7 +1459,7 @@ Arbeitsliste: Diese Testfälle haben keinen Docstring; was sie fachlich prüfen,
|
||||
aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
|
||||
dann verschwindet er hier von selbst.
|
||||
|
||||
### `sn_basis` – 0 von 424 Testfällen ohne Beschreibung
|
||||
### `sn_basis` – 0 von 429 Testfällen ohne Beschreibung
|
||||
|
||||
Keine Lücken.
|
||||
|
||||
|
||||
@@ -91,6 +91,9 @@ Kurz, konkret, mit Datum und Quelle. Neue Einträge oben in der passenden Rubrik
|
||||
Mehrspaltige Legenden: Mit `setEqualColumnWidth(True)` bestimmt der längste Text die Breite **aller** Spalten.
|
||||
Schmaler wird es mit ungleichen Spalten und `setAutoWrapLinesAfter(mm)`; der Legendentitel bricht dabei **nicht**
|
||||
automatisch um und bestimmt die Mindestbreite – Zeilenumbruch (`\n`) im Titel setzen. (02.10.2026, Basis #96)
|
||||
`setMinimumSize` an Layoutelementen wird **nicht im Projekt gespeichert**: Nach dem Neuladen schrumpft eine
|
||||
Legende mit „an Inhalt anpassen“ bei der nächsten Größenberechnung wieder (gemessen 180 → 43,7 mm). Mindestgröße
|
||||
am Layout vermerken und beim Laden (`readProject`) neu setzen. (02.10.2026, Basis #96)
|
||||
- **Projektvariablen-Schlüssel ohne `sn_` übergeben.** `set_variable("sn_abdeckungslayer", ...)` erzeugt `sn_sn_abdeckungslayer` (Altlast in Druckmodulen; funktioniert nur, weil Lesen und Schreiben denselben Fehler machen).
|
||||
- **Zwei Schreibweisen für den Verfahrensgebiet-Layer:** `verfahrensgebiet_layer` (Manager, Fachplugins) und `verfahrensgebietslayer` (`print_logic.py`). Bis zur Bereinigung nicht auf Gleichheit vertrauen.
|
||||
- **Layer werden über Anzeigenamen gefunden** (`BROR_LAYER_NAME` usw.). Umbenennungen in der UI brechen Abläufe.
|
||||
|
||||
Reference in New Issue
Block a user