Kartenrand-Anordnung (Basis #93) dokumentiert
- schnittstellen.md Abschnitt 12: Element-IDs, die print_kartenrand braucht; Seitengröße nur Mindestgröße - fallstricke.md: minimumSize liefert vor dem ersten Zeichnen die ungefilterte Legendenhöhe - modulkarte.md: print_kartenrand, aktualisierte Zeilenzahlen - STATUS.md: Punkt 15 (Stand #88/#90/#92, QGIS 4 geprüft), neuer Punkt 16 - Testkatalog neu erzeugt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,7 @@ Legende: ⚠ = über 600 Zeilen, nie komplett laden, per `grep -n "def "` navigi
|
||||
|---|---:|---|
|
||||
| `functions/__init__.py` | 50 | Re-Export vieler Wrapper (`from sn_basis.functions import QgsProject, info, ...`) |
|
||||
| `functions/qt_wrapper.py` ⚠ | 832 | Qt-Symbole: PyQt6 primär, PyQt5-Fallback, sonst Mock. `QT_VERSION` (0/5/6), Enum-Aliase (`DockAreaRight`, …), `exec_dialog()` |
|
||||
| `functions/qgiscore_wrapper.py` ⚠ | 1 382 | `qgis.core`-Symbole und Konstanten; ab Zeile ~255 Mock-Klassen; eigener Block für Vektorkacheln/Ausdrücke/Legende (#88); Helfer `network_head`, `get_layer_extent`, `create_buffer_layer`, `layer_exists_in_gpkg`, `polygon_zu_linie` |
|
||||
| `functions/qgiscore_wrapper.py` ⚠ | 1 428 | `qgis.core`-Symbole und Konstanten; ab Zeile ~255 Mock-Klassen; eigener Block für Vektorkacheln/Ausdrücke/Legende (#88); Helfer `network_head`, `get_layer_extent`, `create_buffer_layer`, `layer_exists_in_gpkg`, `polygon_zu_linie` |
|
||||
| `functions/qgisui_wrapper.py` | 258 | `iface`-Zugriffe: Hauptfenster, Docks, Menüs, Toolbars, Layoutdesigner; Mock-`iface` |
|
||||
| `functions/dialog_wrapper.py` | 521 | Dialoge: `ask_yes_no`, `show_info_dialog`, `ask_text`, Überschreiben/Anhängen/Abbrechen, `ProgressDialog`/`create_progress_dialog`, `ask_mehrfachauswahl` (Liste mit Häkchen) |
|
||||
| `functions/message_wrapper.py` | 85 | MessageBar: `info`, `warning`, `error`, `success`, `push_message` |
|
||||
@@ -57,7 +57,8 @@ Legende: ⚠ = über 600 Zeilen, nie komplett laden, per `grep -n "def "` navigi
|
||||
| `modules/LayerLoader.py` | 422 | `create_layer(provider, link, thema)`, `apply_style`, `filter_by_extent`, `filter_by_layer`, `add_to_project` |
|
||||
| `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 111 | `PrintLayout`: Layoutaufbau für § 38 / § 41 (Karte, Legende, Gitter, Schriftfeld) |
|
||||
| `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_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 |
|
||||
@@ -139,8 +140,8 @@ Dient als **minimales Muster** für ein neues Fachplugin (Skill `sn-neues-fachpl
|
||||
| `sn_verfahrensgebiet/functions/grenzpunkt_alkis.py` | 1 674 |
|
||||
| `sn_basis/modules/print_logic.py` | 1 360 |
|
||||
| `sn_plan41/ui/tab_a_logic.py` | 1 239 |
|
||||
| `sn_basis/functions/qgiscore_wrapper.py` | 1 382 |
|
||||
| `sn_basis/modules/print_layout.py` | 1 111 |
|
||||
| `sn_basis/functions/qgiscore_wrapper.py` | 1 428 |
|
||||
| `sn_basis/modules/print_layout.py` | 1 127 |
|
||||
| `sn_verfahrensgebiet/functions/verfahrensgebiet_shape_komplett.py` | 978 |
|
||||
| `sn_verfahrensgebiet/ui/tabs/working_tab.py` | 873 |
|
||||
| `sn_verfahrensgebiet/functions/knickpunkt_pruefung.py` | 810 |
|
||||
|
||||
@@ -151,3 +151,13 @@ flowchart LR
|
||||
`sn_basis/basemap_standardstil`.
|
||||
- **Neue öffentliche Funktion:** `dialog_wrapper.ask_mehrfachauswahl(titel, hinweis, eintraege, vorauswahl)` –
|
||||
Liste mit Häkchen, Gruppen, Suche; liefert gewählte Schlüssel oder `None` bei Abbruch.
|
||||
|
||||
## 12. Kartenrand im Standardlayout (Basis #93)
|
||||
|
||||
`print_kartenrand.ordne_kartenrand_an(layout)` läuft am Ende von `PrintLayout.create_single_page_layout` und findet
|
||||
die Elemente **über ihre IDs**: `Hauptkarte`, `Legende`, `Legende Basemap`, `Quellenangabe`, `Kartenschild`,
|
||||
`Kartenschild_Linie_1` … `_6` und die Schriftfeld-Beschriftungen (`Herausgeber` … `Aktenzeichen`, Liste
|
||||
`UNTERE_ELEMENTE`). Wer im Layoutaufbau eine dieser IDs ändert oder ein neues Element unter die Legenden setzt,
|
||||
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.
|
||||
|
||||
|
||||
@@ -64,10 +64,12 @@ spätere Phase und beginnt erst, wenn die Test-Baseline grün ist und das Projek
|
||||
`sql=`-Filtern). Vergleich 6↔7 und Anpassungsliste: `docs/konzept/09_alkis7_umstellung.md`.
|
||||
Nächster Schritt: Gitea-Issue in `Plugin_SN_Verfahrensgebiet`.
|
||||
15. **Basemap-Legende im Druck (Basis #88).** In `unstable` gemergt: #88 (PR #89), Punktlinien-Korrektur #90
|
||||
(PR #91). Rand für weiße Flächen (#92) auf `Plugin_SN_Basis:bugfix/92-basemap-legende-weisse-flaechen`,
|
||||
PR steht aus. Offen: **fachliche Abnahme des Legendenkatalogs** `sn_basis/data/basemap_legende.json`
|
||||
(PR #91), Rand für weiße Flächen #92. Offen: **fachliche Abnahme des Legendenkatalogs** `sn_basis/data/basemap_legende.json`
|
||||
(Bezeichnungen, Gruppen, Zusammenfassungen; Konzept `docs/konzept/10_basemap_legende.md` Abschnitt 10,
|
||||
ADR 0010) und Test unter QGIS 4.
|
||||
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).** Umgesetzt auf
|
||||
`Plugin_SN_Basis:bugfix/93-kartenrand-ueberlappung`, PR steht aus. Offen: Basemap-Legende wird dreispaltig sehr
|
||||
breit (alle Spalten so breit wie der längste Text) – ggf. ungleiche Spaltenbreiten prüfen.
|
||||
|
||||
**Hinweis zum lokalen Stand (04.09.2026):** Die Klone `Plugin_SN_Verfahrensgebiet` (4 Commits: PR #43, PR #45)
|
||||
und `Repository` (Release 26.8.4-unstable) liegen hinter `origin`. Aktualisieren mit `python scripts/hallo.py`.
|
||||
|
||||
@@ -119,20 +119,20 @@
|
||||
<span class="tagline">Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.</span></div>
|
||||
<div class="meta-line">Quelle: <b>docs/tests/testkatalog.md</b><br>Baseline: <span class="mono">docs/status/testbaseline.json</span> (SHA-256 aeabc946a7f3)</div></div>
|
||||
<div class="summary">
|
||||
<div class="stat"><span class="n">662</span><span class="l">Testfälle</span></div>
|
||||
<div class="stat ok"><span class="n">619</span><span class="l">grün</span></div>
|
||||
<div class="stat"><span class="n">672</span><span class="l">Testfälle</span></div>
|
||||
<div class="stat ok"><span class="n">629</span><span class="l">grün</span></div>
|
||||
<div class="stat warn"><span class="n">35</span><span class="l">rot (Baseline)</span></div>
|
||||
<div class="stat skip"><span class="n">8</span><span class="l">übersprungen</span></div>
|
||||
<div class="stat"><span class="n">78%</span><span class="l">mit Docstring</span></div>
|
||||
<div class="stat"><span class="n">57</span><span class="l">Testdateien</span></div>
|
||||
<div class="stat"><span class="n">58</span><span class="l">Testdateien</span></div>
|
||||
</div>
|
||||
<div class="pkg-bars"><div class="pkg-bars-title">Verteilung je Paket</div>
|
||||
<div class="pkg-bar-row"><span class="name">sn_basis</span><span class="minibar" role="img" aria-label="410 grün, 0 rot, 0 übersprungen"><span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">40 Dateien · 410 Testfälle</span></div>
|
||||
<div class="pkg-bar-row"><span class="name">sn_basis</span><span class="minibar" role="img" aria-label="420 grün, 0 rot, 0 übersprungen"><span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">41 Dateien · 420 Testfälle</span></div>
|
||||
<div class="pkg-bar-row"><span class="name">sn_verfahrensgebiet</span><span class="minibar" role="img" aria-label="166 grün, 34 rot, 8 übersprungen"><span class="seg seg-ok" style="width:80%"></span><span class="seg seg-warn" style="width:16%"></span><span class="seg seg-skip" style="width:4%"></span></span><span class="count">12 Dateien · 208 Testfälle</span></div>
|
||||
<div class="pkg-bar-row"><span class="name">sn_plan41</span><span class="minibar" role="img" aria-label="43 grün, 1 rot, 0 übersprungen"><span class="seg seg-ok" style="width:98%"></span><span class="seg seg-warn" style="width:2%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">5 Dateien · 44 Testfälle</span></div>
|
||||
</div>
|
||||
<div class="controls"><nav class="nav-links">
|
||||
<a href="#pkg-sn_basis">sn_basis <span class="mono">(410)</span></a>
|
||||
<a href="#pkg-sn_basis">sn_basis <span class="mono">(420)</span></a>
|
||||
<a href="#pkg-sn_verfahrensgebiet">sn_verfahrensgebiet <span class="mono">(208)</span></a>
|
||||
<a href="#pkg-sn_plan41">sn_plan41 <span class="mono">(44)</span></a>
|
||||
</nav><div class="filters">
|
||||
@@ -147,9 +147,9 @@
|
||||
<div class="pkg-head">
|
||||
<div>
|
||||
<h2>sn_basis</h2>
|
||||
<p class="pkg-sub">Plattform-Plugin · Ordner <span class="mono">Plugin_SN_Basis</span> · 40 Testdateien · 410 Testfälle</p>
|
||||
<p class="pkg-sub">Plattform-Plugin · Ordner <span class="mono">Plugin_SN_Basis</span> · 41 Testdateien · 420 Testfälle</p>
|
||||
</div>
|
||||
<div class="pkg-bar" role="img" aria-label="410 grün, 0 rot, 0 übersprungen">
|
||||
<div class="pkg-bar" role="img" aria-label="420 grün, 0 rot, 0 übersprungen">
|
||||
<span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -934,7 +934,40 @@
|
||||
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
|
||||
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
|
||||
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
|
||||
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th></tr></thead><tbody><tr><td class="mono">IsCaseSensitiveFsTests<br><span class="testname">test_windows_ist_nicht_case_sensitiv</span></td><td>Prüft, dass Windows als nicht case-sensitives Dateisystem gilt.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">IsCaseSensitiveFsTests<br><span class="testname">test_macos_ist_nicht_case_sensitiv</span></td><td>Prüft, dass macOS als nicht case-sensitives Dateisystem gilt.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">IsCaseSensitiveFsTests<br><span class="testname">test_linux_ist_case_sensitiv</span></td><td>Prüft, dass Linux als case-sensitives Dateisystem gilt.</td><td><span class="pill pill-ok">grün</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_print_layout.py testprintlayout test_create_legend_item_links_map_and_enables_map_filtering testprintlayout test_create_legend_item_does_not_copy_project_layers_into_legend_model testprintlayout test_configure_legend_size_uses_content_adaptive_size testprintlayout test_configure_hauptkarte_grids_uses_wrapper_constants testprintlayout test_create_single_page_layout_keeps_legend_linked_to_hauptkarte_and_theme" data-hasred="0" data-hasskip="0" data-nodoc="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-print-layout-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_print_layout.py</span><span class="card-meta"><span class="count-total">5 Testfälle</span><span class="cpill cpill-ok">5</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-print-layout-py"><p class="filedesc">— (Docstring fehlt)</p><div class="gchips"><span class="gchip" title="">TestPrintLayout <b>5</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
|
||||
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th></tr></thead><tbody><tr><td class="mono">IsCaseSensitiveFsTests<br><span class="testname">test_windows_ist_nicht_case_sensitiv</span></td><td>Prüft, dass Windows als nicht case-sensitives Dateisystem gilt.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">IsCaseSensitiveFsTests<br><span class="testname">test_macos_ist_nicht_case_sensitiv</span></td><td>Prüft, dass macOS als nicht case-sensitives Dateisystem gilt.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">IsCaseSensitiveFsTests<br><span class="testname">test_linux_ist_case_sensitiv</span></td><td>Prüft, dass Linux als case-sensitives Dateisystem gilt.</td><td><span class="pill pill-ok">grün</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_print_kartenrand.py testberechneanordnung test_passt_einspaltig_nichts_aendert_sich testberechneanordnung test_mehr_spalten_und_breiterer_rand testberechneanordnung test_seite_wird_hoeher_wenn_auch_drei_spalten_nicht_reichen testberechneanordnung test_seite_wird_nie_kleiner testberechneanordnung test_ohne_legenden_nur_kartenschild testordnekartenrandan test_seite_hoeher_und_kartenschild_verschoben testordnekartenrandan test_passt_nichts_wird_verschoben testordnekartenrandan test_ohne_karte_keine_anordnung testanbindungprintlayout test_vorlage_ordnet_kartenrand_an testanbindungprintlayout test_fehler_bei_der_anordnung_verhindert_die_vorlage_nicht" data-hasred="0" data-hasskip="0" data-nodoc="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-print-kartenrand-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_print_kartenrand.py</span><span class="card-meta"><span class="count-total">10 Testfälle</span><span class="cpill cpill-ok">10</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-print-kartenrand-py"><p class="filedesc">Tests für modules/print_kartenrand.py – Anordnung des Kartenrands neben der Karte (Basis #93).</p><div class="gchips"><span class="gchip" title="">TestBerechneAnordnung <b>5</b></span><span class="gchip" title="">TestOrdneKartenrandAn <b>3</b></span><span class="gchip" title="">TestAnbindungPrintLayout <b>2</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
|
||||
root(["test_print_kartenrand.py"])
|
||||
class root rootnode
|
||||
root --> g1["TestBerechneAnordnung (5)"]
|
||||
class g1 groupnode
|
||||
g1 --> t1("passt_einspaltig_nichts_aendert_sich")
|
||||
g1 --> t2("mehr_spalten_und_breiterer_rand")
|
||||
g1 --> t3("seite_wird_hoeher_wenn_auch_drei_spalten_nicht_reichen")
|
||||
g1 --> t4("seite_wird_nie_kleiner")
|
||||
g1 --> t5("ohne_legenden_nur_kartenschild")
|
||||
root --> g2["TestOrdneKartenrandAn (3)"]
|
||||
class g2 groupnode
|
||||
g2 --> t6("seite_hoeher_und_kartenschild_verschoben")
|
||||
g2 --> t7("passt_nichts_wird_verschoben")
|
||||
g2 --> t8("ohne_karte_keine_anordnung")
|
||||
root --> g3["TestAnbindungPrintLayout (2)"]
|
||||
class g3 groupnode
|
||||
g3 --> t9("vorlage_ordnet_kartenrand_an")
|
||||
g3 --> t10("fehler_bei_der_anordnung_verhindert_die_vorlage_nicht")
|
||||
class t1 ok
|
||||
class t2 ok
|
||||
class t3 ok
|
||||
class t4 ok
|
||||
class t5 ok
|
||||
class t6 ok
|
||||
class t7 ok
|
||||
class t8 ok
|
||||
class t9 ok
|
||||
class t10 ok
|
||||
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
|
||||
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
|
||||
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
|
||||
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
|
||||
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th></tr></thead><tbody><tr><td class="mono">TestBerechneAnordnung<br><span class="testname">test_passt_einspaltig_nichts_aendert_sich</span></td><td>Prüft, dass bei genug Platz neben der Karte einspaltig angeordnet wird und Seite und Kartenschild bleiben.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestBerechneAnordnung<br><span class="testname">test_mehr_spalten_und_breiterer_rand</span></td><td>Prüft, dass bei zu hohen Legenden die kleinste passende Spaltenzahl gewählt und der Kartenrand dafür verbreitert wird.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestBerechneAnordnung<br><span class="testname">test_seite_wird_hoeher_wenn_auch_drei_spalten_nicht_reichen</span></td><td>Prüft, dass die Seite höher wird und Quellenangabe und Kartenschild nach unten rutschen, wenn auch drei Spalten nicht reichen.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestBerechneAnordnung<br><span class="testname">test_seite_wird_nie_kleiner</span></td><td>Prüft, dass Seitenbreite und -höhe nie unter die ursprüngliche Seitengröße fallen.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestBerechneAnordnung<br><span class="testname">test_ohne_legenden_nur_kartenschild</span></td><td>Prüft, dass ohne Legenden nur Quellenangabe und Kartenschild zählen und die Seite bei zu niedriger Karte höher wird.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestOrdneKartenrandAn<br><span class="testname">test_seite_hoeher_und_kartenschild_verschoben</span></td><td>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.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestOrdneKartenrandAn<br><span class="testname">test_passt_nichts_wird_verschoben</span></td><td>Prüft, dass bei ausreichend hoher Karte weder Seite noch Kartenschild verändert werden.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestOrdneKartenrandAn<br><span class="testname">test_ohne_karte_keine_anordnung</span></td><td>Prüft, dass ein Layout ohne Hauptkarte unverändert bleibt.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestAnbindungPrintLayout<br><span class="testname">test_vorlage_ordnet_kartenrand_an</span></td><td>Prüft, dass PrintLayout beim Anlegen einer Vorlage den Kartenrand anordnen lässt.</td><td><span class="pill pill-ok">grün</span></td></tr><tr><td class="mono">TestAnbindungPrintLayout<br><span class="testname">test_fehler_bei_der_anordnung_verhindert_die_vorlage_nicht</span></td><td>Prüft, dass ein Fehler bei der Anordnung nur als Warnung gemeldet wird und keine Ausnahme durchreicht.</td><td><span class="pill pill-ok">grün</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_print_layout.py testprintlayout test_create_legend_item_links_map_and_enables_map_filtering testprintlayout test_create_legend_item_does_not_copy_project_layers_into_legend_model testprintlayout test_configure_legend_size_uses_content_adaptive_size testprintlayout test_configure_hauptkarte_grids_uses_wrapper_constants testprintlayout test_create_single_page_layout_keeps_legend_linked_to_hauptkarte_and_theme" data-hasred="0" data-hasskip="0" data-nodoc="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-print-layout-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_print_layout.py</span><span class="card-meta"><span class="count-total">5 Testfälle</span><span class="cpill cpill-ok">5</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-print-layout-py"><p class="filedesc">— (Docstring fehlt)</p><div class="gchips"><span class="gchip" title="">TestPrintLayout <b>5</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
|
||||
root(["test_print_layout.py"])
|
||||
class root rootnode
|
||||
root --> g1["TestPrintLayout (5)"]
|
||||
|
||||
@@ -9,17 +9,17 @@ selbst (Docstrings) und aus der Testbaseline.
|
||||
|
||||
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
|
||||
|
||||
Gesamt: 3 Pakete, 57 Testdateien, 662 Testfälle – 619 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 517 von 662 (78 %).
|
||||
Gesamt: 3 Pakete, 58 Testdateien, 672 Testfälle – 629 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 527 von 672 (78 %).
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `sn_basis` | 40 | 410 | 410 | 0 | 0 | 410 von 410 (100 %) |
|
||||
| `sn_basis` | 41 | 420 | 420 | 0 | 0 | 420 von 420 (100 %) |
|
||||
| `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) |
|
||||
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) |
|
||||
| **Summe** | **57** | **662** | **619** | **35** | **8** | **517 von 662 (78 %)** |
|
||||
| **Summe** | **58** | **672** | **629** | **35** | **8** | **527 von 672 (78 %)** |
|
||||
|
||||
### Legende
|
||||
|
||||
@@ -31,7 +31,7 @@ Mit Beschreibung (Docstring): 517 von 662 (78 %).
|
||||
|
||||
## Paket `sn_basis`
|
||||
|
||||
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 40 Testdateien mit 410 Testfällen (410 grün, 0 rot, 0 übersprungen).
|
||||
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 41 Testdateien mit 420 Testfällen (420 grün, 0 rot, 0 übersprungen).
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
|
||||
|
||||
@@ -592,6 +592,29 @@ Testgruppen:
|
||||
| `IsCaseSensitiveFsTests.test_macos_ist_nicht_case_sensitiv` | Prüft, dass macOS als nicht case-sensitives Dateisystem gilt. | grün |
|
||||
| `IsCaseSensitiveFsTests.test_linux_ist_case_sensitiv` | Prüft, dass Linux als case-sensitives Dateisystem gilt. | grün |
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_print_kartenrand.py`
|
||||
|
||||
Worum es in der Datei geht: Tests für modules/print_kartenrand.py – Anordnung des Kartenrands neben der Karte (Basis #93).
|
||||
|
||||
Testgruppen:
|
||||
|
||||
- `TestBerechneAnordnung` (5 Testfälle): — (Docstring fehlt)
|
||||
- `TestOrdneKartenrandAn` (3 Testfälle): — (Docstring fehlt)
|
||||
- `TestAnbindungPrintLayout` (2 Testfälle): — (Docstring fehlt)
|
||||
|
||||
| Testfall | prüft | Status |
|
||||
| --- | --- | --- |
|
||||
| `TestBerechneAnordnung.test_passt_einspaltig_nichts_aendert_sich` | Prüft, dass bei genug Platz neben der Karte einspaltig angeordnet wird und Seite und Kartenschild bleiben. | grün |
|
||||
| `TestBerechneAnordnung.test_mehr_spalten_und_breiterer_rand` | Prüft, dass bei zu hohen Legenden die kleinste passende Spaltenzahl gewählt und der Kartenrand dafür verbreitert wird. | grün |
|
||||
| `TestBerechneAnordnung.test_seite_wird_hoeher_wenn_auch_drei_spalten_nicht_reichen` | Prüft, dass die Seite höher wird und Quellenangabe und Kartenschild nach unten rutschen, wenn auch drei Spalten nicht reichen. | grün |
|
||||
| `TestBerechneAnordnung.test_seite_wird_nie_kleiner` | Prüft, dass Seitenbreite und -höhe nie unter die ursprüngliche Seitengröße fallen. | grün |
|
||||
| `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_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 |
|
||||
| `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 |
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_print_layout.py`
|
||||
|
||||
Worum es in der Datei geht: — (Docstring fehlt)
|
||||
@@ -1426,7 +1449,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 410 Testfällen ohne Beschreibung
|
||||
### `sn_basis` – 0 von 420 Testfällen ohne Beschreibung
|
||||
|
||||
Keine Lücken.
|
||||
|
||||
|
||||
@@ -84,6 +84,10 @@ Kurz, konkret, mit Datum und Quelle. Neue Einträge oben in der passenden Rubrik
|
||||
berechnen; für mehrere Spalten zusätzlich `setSplitLayer(True)`, sonst bleibt ein Layer in einer Spalte.
|
||||
Eine Legende mit `setLegendFilterByMapEnabled(True)` blendet Layer aus, die nicht in der Karte liegen, und ihre
|
||||
Höhe steht erst nach dem Rendern fest. (02.10.2026, Spike Basis #88)
|
||||
Auch `QgsLegendRenderer.minimumSize` liefert vor dem ersten Zeichnen die **ungefilterte** Höhe (Beispiel: 344 statt
|
||||
177 mm). Verlässlich vermessen: Legende einmal mit geringer Auflösung zeichnen
|
||||
(`QgsLayoutExporter(layout).renderRegionToImage(legende.sceneBoundingRect(), QSize(), 25)`), danach wirken
|
||||
Filter und `adjustBoxSize`. (02.10.2026, Basis #93)
|
||||
- **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