Commit Graph
100 Commits
Author SHA1 Message Date
Daniel 3e1431642b Merge pull request 'Tabs der LNO-Docks in Scroll-Bereich packen (#104)' (#105) from bugfix/104-dock-scrollbereich into unstable
Reviewed-on: #105
2026-10-05 19:57:13 +00:00
DanielandClaude Opus 5.5 894b695ecf Tabs der LNO-Docks in Scroll-Bereich packen (#104)
Ein langer Tab (Druck-Tab mit aufgeklapptem Basemap-Bereich) schob den
unteren Rand des QGIS-Fensters aus dem Bildschirm, weil Qt für das Dock
die Höhe des höchsten Tabs verlangt. BaseDockWidget.setWidget packt jetzt
jeden Tab eines QTabWidget in einen QScrollArea; das wirkt auch für
Fachplugins, die ihre Tabs selbst aufbauen. QScrollArea/QFrame im
qt_wrapper ergänzt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:53:50 +02:00
Daniel 1aadef73bd Merge pull request 'Basemap hinzufügen und Thema wechseln im Basemap-Bereich (#100)' (#103) from feature/100-basemap-themen into unstable
Reviewed-on: #103
2026-10-05 19:44:35 +00:00
DanielandClaude Opus 5.5 24ad564a08 Basemap hinzufügen und Thema wechseln im Basemap-Bereich (#100)
Neuer Abschnitt „Basemap-Layer“ im Basemap-Bereich des Druck-Tabs: Knopf
„Basemap hinzufügen“ und Auswahl „Thema“ (Farbe, Grau). Vorhandene Layer
werden an der Kachel-URL erkannt; Rückfrage Zusätzlich laden / Ersetzen /
Abbrechen. Vor dem Themenwechsel wird über einen Prüfwert der Darstellung
erkannt, ob sie ungespeichert verändert wurde.

Neues Modul modules/basemap_themen.py, neue Wrapper-Funktionen
ask_auswahl und get_active_layer, Stilvorlagen vermerken ihr Thema.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:27:35 +02:00
Daniel d01b9998fb Merge pull request 'Bugfix/96 legenden spaltenbreite' (#97) from bugfix/96-legenden-spaltenbreite into unstable
Release Plugin / release (push) Successful in 4s
Reviewed-on: #97
2026-10-02 11:30:38 +00:00
DanielandClaude Opus 5.5 bf898dcca3 Legenden mindestens so breit wie das Kartenschild (#96)
Standard- und Mindestbreite der Haupt- und Basemap-Legende ist die Breite des Kartenschilds
(180 mm, MIN_SPALTENBREITE_MM) – die zunächst genannten 210 mm sind der gesamte Kartenrand
einschließlich Abständen. Die Legenden passen sich weiter ihrem Inhalt an, werden aber nie
schmaler (setMinimumSize).

QGIS speichert die Mindestgröße nicht im Projekt; nach dem Neuladen schrumpfte die
Legende bei der nächsten Größenanpassung wieder (QGIS-Test: 43,7 mm). Deshalb vermerkt
das Layout die Mindestbreite (sn_legende_mindestbreite), und ein Listener auf readProject
setzt sie beim Laden wieder (setup/teardown_mindestbreiten_listener in main.py, wie der
Verfahrensgebiet-Listener).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:26:19 +02:00
DanielandClaude Opus 5.5 9cff75b674 Mehrspaltige Legenden schmaler (#96)
Mit gleichen Spaltenbreiten bestimmte der längste Legendentext die Breite aller Spalten;
die dreispaltige Basemap-Legende wurde 431 mm breit. Jetzt: ungleich breite Spalten,
automatischer Textumbruch nach 60 mm (TEXTUMBRUCH_MM in print_kartenrand, auch für die
Basemap-Legende) und zweizeiliger Titel „Kartengrundlage / (basemap.de)“, der sonst die
Mindestbreite bestimmte. Im QGIS-Test: dreispaltig 226 statt 431 mm, einspaltig 89 statt 163 mm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:20:15 +02:00
Daniel 463a546f79 Merge pull request 'Kartenrand überlappungsfrei anordnen (#93)' (#95) from bugfix/93-kartenrand-ueberlappung into unstable
Reviewed-on: #95
2026-10-02 11:15:21 +00:00
DanielandClaude Opus 5.5 006459ab61 Kartenrand überlappungsfrei anordnen (#93)
Im Standardlayout hingen Hauptlegende (oben), Quellenangabe und Kartenschild (unten) an der
Kartenhöhe; bei kleinen Verfahren waren sie zusammen höher als die Karte und überlappten.
Neues Modul print_kartenrand: Nach dem Aufbau der Vorlage (inkl. Basemap-Legende) werden die
Legenden einmal gezeichnet – die Hauptlegende filtert nach Karteninhalt, ihre Höhe steht erst
danach fest – und für 1–3 Spalten vermessen. Gewählt wird die kleinste passende Spaltenzahl
(Kartenrand wird dafür breiter); passt keine, die mit dem geringsten Platzbedarf, und die Seite
wird höher, Quellenangabe und Kartenschild rutschen nach unten. Karte bleibt in Größe und Lage.
Fehler bei der Anordnung verhindern die Vorlage nicht (Warnung). Wrapper: QgsLayoutExporter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:06:35 +02:00
Daniel 90c4e4d155 Merge pull request 'Basemap-Legende: Rand für weiße Flächen ohne Kontur (#92)' (#94) from bugfix/92-basemap-legende-weisse-flaechen into unstable
Reviewed-on: #94
2026-10-02 10:57:14 +00:00
DanielandClaude Opus 5.5 7465904121 Basemap-Legende: Rand für weiße Flächen ohne Kontur (#92)
Die Basemap-Styles „Platz“ (Verkehrsfläche, weitere Nutzung) haben eine rein weiße Füllung
ohne Umrandung und waren auf dem weißen Legendenhintergrund unsichtbar. baue_symbole gibt
solchen Flächensymbolen jetzt in der Legende eine dünne graue Randlinie (0,15 mm). Erkannt
wird das an Füllfarbe und fehlender Kontur (braucht_legendenrand), nicht an Style-Namen; der
Basemap-Layer in der Karte bleibt unverändert. Wrapper: QgsSimpleLineSymbolLayer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:49:01 +02:00
Daniel 1dc19d1324 Merge pull request 'Basemap: Punktlinien in Karte und Legende sichtbar machen (#90)' (#91) from bugfix/90-basemap-punktlinien into unstable
Reviewed-on: #91
2026-10-02 10:38:32 +00:00
DanielandClaude Opus 5.5 d6d4403e46 Basemap: Punktlinien in Karte und Legende sichtbar machen (#90)
basemap.de zeichnet Punktlinien mit Strichlänge 0 und runder Linienkappe (MapLibre-Muster);
QGIS übernimmt das beim Import 1:1, Qt zeichnet Striche der Länge 0 aber nicht. Baumreihen,
Hecken, Durchlässe, Seilbahnen u. a. (12 Styles) fehlten dadurch in Karte und Legende.

Neues Modul basemap_stilkorrektur: korrigiere_punktlinien(layer) ersetzt Strichlänge 0 durch
0,01 im festen Strichmuster und in den array(...)-Mustern des zoomabhängigen Ausdrucks;
idempotent, andere Styles unverändert. Ausgelöst per Knopf „Punktlinien korrigieren“ im
Basemap-Bereich, sicherbar als Stilvorlage. Wrapper: PROPERTY_CUSTOM_DASH,
QgsProperty.fromExpression im Mock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:33:00 +02:00
Daniel 8693fedada Merge pull request 'Feature/88 basemap legende' (#89) from feature/88-basemap-legende into unstable
Reviewed-on: #89
2026-10-02 10:17:20 +00:00
DanielandClaude Opus 5.5 f9241a11f9 Basemap-Bereich im Druck-Tab mit lokalen Stilvorlagen (#88)
Einklappbarer Bereich „Basemap“: Auswertebereich (Verfahrensgebiet/Druckbereich),
Basemap-Legende beim Erstellen an/aus, „Basemap-Legende aktualisieren“ für
bestehende Vorlagen und Stilvorlagen des Basemap-Layers. Stilvorlagen liegen lokal im
QGIS-Profil (QML plus Begleitdatei mit Legendenauswahl), mehrere Varianten, eine als
Standard markierbar; geladen wird nur auf Knopfdruck nach Rückfrage, fremde Varianten
(andere Style-Namen) erst nach zweiter Bestätigung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:57:10 +02:00
DanielandClaude Opus 5.5 b549cb8a5a Basemap-Legende: Auswertung und Legendenelement im Drucklayout (#88)
Beim Erstellen einer §38-/§41-Vorlage wertet BasemapLegende die Kacheln des sichtbaren
basemap.de-Layers im Verfahrensgebiet (wahlweise Druckbereich) kachelweise über
selectByGeometry aus, prüft die Renderer-Styles mit derselben Zoomlogik wie QGIS und
bildet daraus Legendeneinträge. Ein Mehrfachauswahl-Dialog (neu: ask_mehrfachauswahl)
lässt Kategorien abwählen; die Auswahl wird im Projekt gemerkt. Die gewählten Einträge
stehen mit der Signatur des Projektlayers (zoomabhängige Werte festgeschrieben) in
einem eigenen Legendenelement über der Quellenangabe. Ein eigenes Element ist nötig,
weil die nach Karteninhalt filternde Hauptlegende die Hilfslayer ausblenden würde.

Wrapper um die nötigen QGIS-/Qt-Symbole mit Mock ergänzt (eigener Block in
qgiscore_wrapper; QgsRectangle hatte bisher keinen Mock).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:57:09 +02:00
DanielandClaude Opus 5.5 7408740dfe Basemap-Legende: Legendenkatalog und Generator (#88)
data/basemap_legende.json ordnet die darstellenden Styles der basemap.de-Style-JSON
(bm_web_col.json) Legendeneinträgen zu: 434 Styles in 190 Einträgen, Kontur/Decker/
Brücken-/Fahrbahnvarianten je Straßenklasse zusammengefasst, Beschriftungen,
Nummernschilder und Hintergrund ausgeschlossen. modules/basemap_katalog.py erzeugt den
Katalog (nur Standardbibliothek, auch eigenständig aufrufbar) und erhält dabei die
fachliche Nachbearbeitung; erster Durchgang der Bezeichnungen ist erledigt, die
fachliche Abnahme steht aus.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:57:09 +02:00
Daniel 54f1bf8b01 Merge pull request 'changelog.txt: unaufgelöste Git-Konfliktmarker aus Merge #70/#72 entfernt (#74)' (#75) from bugfix/74-changelog-konfliktmarker into unstable
Reviewed-on: #75
2026-09-21 08:43:11 +00:00
DanielandClaude Sonnet 5 2a0e980b99 changelog.txt: unaufgelöste Git-Konfliktmarker aus Merge #70/#72 entfernt (#74)
Beim manuellen Merge von unstable in bugfix/72-navigation-cleanup-deletelater wurden die
Konfliktmarker in changelog.txt versehentlich mitcommittet statt aufgelöst und sind über
PR #73 auf unstable gelandet. Beide Changelog-Einträge (#70, #72) bleiben inhaltlich
unverändert erhalten, nur die Markerzeilen sind entfernt. Code/Tests waren nicht betroffen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 10:42:10 +02:00
Daniel f264178b63 Merge pull request 'Navigation.remove_all() räumt Toolbar/Menü beim Unload tatsächlich auf (#72)' (#73) from bugfix/72-navigation-cleanup-deletelater into unstable
Reviewed-on: #73
2026-09-21 08:38:04 +00:00
Daniel a25d25c3c0 Merge branch 'unstable' into bugfix/72-navigation-cleanup-deletelater 2026-09-21 10:37:29 +02:00
DanielandClaude Sonnet 5 bbda2cd61b Navigation.remove_all() räumt Toolbar/Menü beim Unload tatsächlich auf (#72)
remove_toolbar()/remove_menu() nahmen Toolbar und Menü bisher nur aus der sichtbaren Leiste,
das Qt-Objekt blieb als Kind von main_window bestehen. Beim Neuladen mit dem Plugin Reloader
meldete QGIS deshalb "removing duplicated widget(s) not cleaned up by the plugin during
unload: LnoSachsenToolbar" - der defensive Workaround in init_ui() (Suche nach übrig
gebliebenen Toolbars) kaschierte das nur beim nächsten Laden, nicht beim Unload selbst.

remove_all() ruft jetzt deleteLater() auf beide Objekte, bevor die Referenzen verworfen
werden - dieselbe Behandlung, die init_ui() schon für Altlasten nutzt. deleteLater() ist in
PyQt5 und PyQt6 identisch, keine QGIS3/4-Fallunterscheidung nötig.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 10:22:29 +02:00
Daniel 0a876c097d Merge pull request 'Restliche "ungeklärt"-Funktionen in sn_basis abschließend bewertet (#70)' (#71) from feature/70-sn-basis-ungeklaerte-tests into unstable
Reviewed-on: #71
2026-09-21 06:57:01 +00:00
DanielandClaude Sonnet 5 e86bef40d2 Restliche "ungeklärt"-Funktionen in sn_basis abschließend bewertet (#70)
Tests für Dateipruefer._ist_leer (None/Whitespace), Dateipruefer._handle_leere_eingabe
(Priorität bei mehreren Flags), Datenschreiber._store_style_in_gpkg (nachgezogen aus #63,
siehe #67) und Pruefmanager._handle_verfahrensgebiet_layer_existiert (entfernen/ersetzen)
ergänzt. Linkpruefer._ist_url/_pruefe_url/_pruefe_dateipfad und
Pruefmanager._handle_datei_existiert sind bereits über pruefe()/verarbeite() vollständig
abgedeckt und bekommen den Vermerk "von Test abgesehen". Pruefmanager._ask_use_or_replace_pufferlayer
ist toter Code (Bug #60) und bleibt bis zur Behebung unmarkiert getestet, nur vermerkt.

sn_basis steht damit laut Prüfstand bei 0 ungeklärten Funktionen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 08:47:41 +02:00
Daniel 84df7a6dfb Merge pull request 'Kategorie "vielleicht testen" in sn_basis abgeschlossen (#67)' (#69) from feature/67-vielleicht-testen-bewerten into unstable
Reviewed-on: #69
2026-09-18 11:11:34 +00:00
DanielandClaude Sonnet 5 8eb89e92a7 Kategorie "vielleicht testen" in sn_basis abgeschlossen (#67)
37 neue Testfälle für die 31 verbleibenden "vielleicht testen"-
Funktionen: os_wrapper.is_case_sensitive_fs, qgiscore_wrapper.
create_buffer_layer (nur die Wächter, echte Pufferlogik importiert
qgis.core direkt), qgisui_wrapper.find_dock_widgets/add_menu/remove_menu,
DataGrabber._aggregate_results, pruef_ergebnis.dateipfad,
Navigation (add_action, finalize_menu_and_toolbar, set_active_plugin,
remove_action, remove_all), SettingsTab._build_input und PrintTab
(18 Methoden: Zustandslogik, Signal-Handling, Atlas-/Theme-Verwaltung).

PrintTab._build_ui bekommt stattdessen den Vermerk "von Test abgesehen,
weil vernachlässigbar; HD 18.09.2026" - reine Qt-Widget-Konstruktion ohne
eigenständig prüfbare Logik. Damit ist die Kategorie "vielleicht testen"
für sn_basis aufgelöst: jede Funktion ist jetzt getestet oder mit einem
begründeten Vermerk versehen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 13:06:06 +02:00
Daniel aa4b383a84 Merge pull request 'Testkatalog-Klassifizierung in Docstrings festgehalten' (#68) from chore/testklassifizierung-docstrings into unstable
Reviewed-on: #68
2026-09-18 09:53:38 +00:00
DanielandClaude Sonnet 5 36e4780b9f Testkatalog-Klassifizierung in Docstrings festgehalten
43 als "vernachlässigbar" eingestufte Funktionen (dialog_wrapper.py,
message_wrapper.py, os_wrapper.py, qgisui_wrapper.py, qt_wrapper.py,
DataGrabber.py, LayerLoader.py, Pruefmanager.py, navigation.py,
print_tab.py) tragen jetzt den Vermerk "von Test abgesehen, weil
vernachlässigbar; HD 18.09.2026". Fehlalarme der Testkatalog-Heuristik
(Dateipruefer._ist_leer/_handle_leere_eingabe, linkpruefer.py komplett,
Pruefmanager._handle_datei_existiert) und der als Bug erfasste tote Code
(Pruefmanager._ask_use_or_replace_pufferlayer, #60) bleiben unangetastet.

41 Funktionen im zur Grundüberarbeitung anstehenden Print-Bereich
(print_logic.py, print_layout.py, print_layout_baufreigabe.py) tragen den
Vermerk "Test ausgesetzt, zunächst Refactor".

Reine Dokumentationsänderung, kein Verhalten geändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 11:51:57 +02:00
Daniel 0dd64cbe2e Merge pull request 'Tests für restliche priorisierte sn_basis-Funktionen ergänzt (#65)' (#66) from feature/65-tests-restliche-funktionen into unstable
Reviewed-on: #66
2026-09-18 09:27:39 +00:00
DanielandClaude Sonnet 5 7ce820581f Tests für restliche priorisierte sn_basis-Funktionen ergänzt (#65)
79 neue Testfälle: Verfahrensgebiet-Zustandsverwaltung (Listener-Setup/
-teardown, Signal-Handler), DockManager/BaseDockWidget, pruef_ergebnis-
Persistenz-Gates, Pruefmanager-Entscheidungswege, restliche Dateipruefer-
Zweige, Fundament-Wrapper (sys_wrapper, ly_existence_wrapper,
ly_style_wrapper.apply_style_from_path, landkreise, message_wrapper,
qgiscore_wrapper.polygon_zu_linie/layer_exists_in_gpkg,
qgisui_wrapper.add_layer_to_project) und SettingsTab.save_data/load_data.

Ausgeklammert: LayerLoader.apply_style/ly_style_wrapper.apply_style
(Bug-Verdacht, hartkodierter Fachplugin-Pfad) und
Pruefmanager._ask_use_or_replace_pufferlayer (bereits als Bug in #60
erfasst: ruft nicht existierendes self.pruefmanager auf).

qt_wrapper._MockQDockWidget um closeEvent() ergänzt (fehlte, ließ jede
BaseDockWidget.closeEvent()-Ausführung im Mock-Modus abstürzen).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 11:20:10 +02:00
Daniel b57a614ec3 Merge pull request 'Tests für die vier Kernmodule der Datenpipeline ergänzt (#63)' (#64) from feature/63-tests-datenpipeline into unstable
Reviewed-on: #64
2026-09-18 08:05:27 +00:00
DanielandClaude Sonnet 5 60d5bd7cb5 Tests für die vier Kernmodule der Datenpipeline ergänzt (#63)
70 neue Testfälle für Datenabruf.py, Datenschreiber.py, LayerLoader.py und
excel_importer.py - die einzigen Module ohne jede Testdatei laut
Testkatalog-Abschnitt "Ungetestete Funktionen". Schwerpunkt: Provider-URL-
Bau (WFS/REST/OGR), Raumfilter, CRS-Transformation, GPKG-Schreib-/Ladepfad
und Excel-Import-Fehlerzweige.

qgiscore_wrapper._MockQgsProject um transformContext() und addMapLayer()
ergänzt - beide fehlten im Mock und ließen die betroffenen Funktionen im
Mock-Modus für jeden gültigen Layer scheitern (siehe fallstricke.md).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:48:31 +02:00
Daniel 1705d5f988 Merge pull request 'get_plugin_root() löst keine Symlinks/Junctions mehr auf (Verfahrensgebiet #50)' (#62) from bugfix/50-get-plugin-root-junction into unstable
Reviewed-on: #62
2026-09-17 14:16:20 +00:00
DanielandClaude Sonnet 5 716820be4c get_plugin_root() löst keine Symlinks/Junctions mehr auf (Verfahrensgebiet #50)
Ursache für "QML-Dateien greifen nicht" (Verfahrensgebiet #50): get_plugin_root()
nutzte Path(__file__).resolve(), was Junctions zum echten Zielverzeichnis
auflöst. link_qgis_profile.py verknüpft die Klone im QGIS-Profil per Junction
unter ihrem Paketnamen (sn_verfahrensgebiet, sn_plan41, ...) - .resolve()
sprang dabei zurück zum Workspace-Root, wo die Klone unter ihrem Repo-Namen
(Plugin_SN_*) liegen. Alle Aufrufer von get_plugin_root() (Stilpruefer,
ly_style_wrapper.apply_style, LayerLoader.apply_style, Datenschreiber,
sn_plan41 vln_api_logic/tab_a_logic) suchten dadurch am falschen Ort.

.absolute() statt .resolve(): __file__ liefert beim Import über die Junction
bereits den korrekten, unaufgelösten Pfad - nichts, was aufgelöst werden
müsste. Für echte ZIP-/Repository-Installationen (kein Symlink im Plugin-
Ordner) ändert sich nichts, da dort nichts aufzulösen ist.

Test test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung legt eine
echte Verzeichnisverknüpfung an (Symlink, unter Windows via Junction wie
link_qgis_profile.py) und zeigt den Fehler vor dem Fix rot, danach grün.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 16:11:58 +02:00
Daniel 30b38b5e9a Merge pull request 'Feature/testdatagrabber docstrings' (#61) from feature/testdatagrabber-docstrings into unstable
Reviewed-on: #61
2026-09-17 13:59:16 +00:00
DanielandClaude Sonnet 5 bfcd8c2777 test_settings_logic: Docstring korrigiert - Fallback lebt in get_variable(), nicht in load()
SettingsLogic.load() reicht get_variable()-Werte unverändert durch, ohne
eigene Fallback-Logik. Der "or \"\""-Fallback für unbekannte Variablen
sitzt in variable_wrapper.get_variable(). Der Test selbst war korrekt,
nur die Docstring hat die Verantwortung falsch zugeordnet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 14:59:50 +02:00
DanielandClaude Sonnet 5 8c39593239 test_linkpruefer: Testfall für leere Eingabe ergänzt
Linkpruefer.pruefe() hat einen dritten Zweig (leere Eingabe -> aktion
"leer"), der bisher ungetestet war - die fünf bestehenden Tests deckten
nur den URL- und den Datei-Zweig ab.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 14:46:15 +02:00
DanielandClaude Sonnet 5 137c2a4718 test_dateipruefer: Standarddatei-Existenzlücke im Docstring vermerkt (#59)
test_standarddatei_vorschlagen prüft nur den Vorschlag, nicht ob die
Standarddatei existiert - das tut aktuell auch der produktive Code nicht
(weder Dateipruefer._handle_leere_eingabe() noch Pruefmanager._handle_
basic_decision()). Fix ist als eigenes Issue (#59) angelegt, Bearbeitung
bewusst zurückgestellt, bis geklärt ist, ob der Standarddatei-Modus
überhaupt gebraucht wird - kein Aufrufer nutzt ihn bisher.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 14:22:21 +02:00
DanielandClaude Sonnet 5 23aab76e42 Restliche sn_basis-Tests: deutsche Docstrings ergänzt
81 Testfälle in 11 Dateien im Rahmen des Test-Audits durchgesehen und mit
"Prüft, dass ..."-Docstring versehen (Projektwissen #16). Kein Verhalten
geändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 15:06:16 +02:00
DanielandClaude Sonnet 5 53a60246c8 TestDataGrabber: deutsche Docstrings ergänzt
Alle sechs Testfälle im Rahmen des Test-Audits (Projektwissen #16) durchgesehen
und mit "Prüft, dass ..."-Docstring versehen. Kein Verhalten geändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 13:13:46 +02:00
Daniel ff5ed5d7f5 Merge pull request 'Bugfix/42 umlaute sonderzeichen' (#58) from bugfix/42-umlaute-sonderzeichen into unstable
Reviewed-on: #58
2026-09-15 06:00:10 +00:00
DanielandClaude Sonnet 5 272bad3866 Weitere fehlende Umlaute in Docstrings/Kommentaren behoben (#42)
Gefunden ueber das neue Skript scripts/pruefe_umlaute.py, das genau dieses
Muster (ASCII-Ersatzschreibweise statt Umlaut in String-Inhalten und
Kommentaren mit Leerzeichen) erkennt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MneDjzrjmbpQt8udFYxN9e
2026-09-14 12:21:01 +02:00
DanielandClaude Sonnet 5 72844cd257 Fehlende Umlaute in Drucklayout-Hinweisen und -Beschriftungen behoben (#42)
Weitere Fundstellen aus der gezielten Umlaut-Pruefung: MessageBox-/Label-Texte
in print_logic.py, print_layout.py, print_layout_baufreigabe.py und
print_tab.py, die wortwoertlich als ASCII generiert wurden ('gueltig',
'verfuegbar', 'waehlen', 'Massstab' als Anzeigetext, 'Geprueft: '-Label).
Interne Bezeichner (aktion-Codes, Projektvariablen-Keys, Item-IDs) bewusst
unveraendert gelassen, um bestehende Log-/Vergleichslogik nicht zu brechen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MneDjzrjmbpQt8udFYxN9e
2026-09-14 12:09:30 +02:00
DanielandClaude Sonnet 5 a754fcfe34 Umlaute/Sonderzeichen in Bezeichnern zentral behandeln (#42)
Regex zur Bezeichner-Bereinigung aus Datenschreiber.py in
functions/text_wrapper.py (sanitize_bezeichner) ausgelagert und um
Bindestrich ergänzt, der bisher fehlte. Neue Tests decken Umlaute, ß,
Unterstrich, Bindestrich, eigenes Ersatzzeichen und Leerfälle ab.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MneDjzrjmbpQt8udFYxN9e
2026-09-14 11:09:41 +02:00
Daniel 29fea7c18f changelog.txt aktualisiert
Release Plugin / release (push) Successful in 4s
2026-08-26 16:18:25 +02:00
Daniel d857343d36 changelog.txt aktualisiert 2026-08-26 16:17:52 +02:00
Daniel 7bcd0132e9 Merge pull request 'länderkennungs-dict angelegt, Vorbereitung CSV-Beteiligungsprüfung' (#54) from beteiligung_pruefen into unstable
Reviewed-on: #54
2026-08-26 16:15:23 +02:00
Daniel 3489a08638 länderkennungs-dict angelegt 2026-08-26 12:20:10 +02:00
Daniel 7a5ed12797 Merge pull request 'wfs-abruf-fix' (#53) from wfs-abruf-fix into unstable
Release Plugin / release (push) Successful in 4s
Reviewed-on: #53
2026-07-22 11:14:08 +02:00
Daniel 021747ae06 wfs-abruf-fix 2026-07-22 11:12:43 +02:00
Daniel 91bafe632f changelog.txt aktualisiert
Release Plugin / release (push) Successful in 4s
2026-07-15 16:04:55 +02:00
Daniel 7ed22fb23e Merge pull request 'Shape verfahrensgebiet' (#52) from shape-Verfahrensgebiet into unstable
Reviewed-on: #52
2026-07-15 16:03:18 +02:00
Daniel 3bbb66ec32 shape-Ladefunktion Verfahrensgebiet 2026-07-15 15:27:24 +02:00
Daniel 9258f03705 Umlaute-Fix Layernamen
Release Plugin / release (push) Successful in 4s
Regex um Umlaute erweitert
2026-07-07 15:49:37 +02:00
Daniel 9862386646 changelog.txt aktualisiert 2026-07-07 10:04:22 +02:00
Daniel 706de43512 Merge pull request 'Unstable nach testing' (#51) from unstable into testing
Release Plugin / release (push) Successful in 5s
Reviewed-on: #51
2026-07-07 10:01:32 +02:00
Daniel 970343cd98 changelog.txt aktualisiert
Release Plugin / release (push) Successful in 4s
2026-06-19 11:52:15 +02:00
Daniel 3d9bfdb316 Merge pull request 'Api integration plan41' (#50) from API-Integration_Plan41 into unstable
Reviewed-on: #50
2026-06-19 11:48:35 +02:00
Daniel 15e48f58af VLN-API integriert 2026-06-19 11:47:36 +02:00
Daniel f6b62395dd Merge pull request 'Feature/vkz differenzierung verfahrensgebiet' (#49) from feature/vkz-differenzierung-verfahrensgebiet into testing
Release Plugin / release (push) Successful in 4s
Reviewed-on: #49
2026-05-22 14:29:36 +02:00
Daniel 025a5f5e13 Messagebox-Fix "VG" in "Verfahrensgebiet" 2026-05-22 14:26:58 +02:00
Daniel e196a4896f Fokusverlust bei Dialogauswahl gefixt 2026-05-22 08:56:26 +02:00
Daniel 63a2e8d63a dialogbox für BROR-Abfrage ergänzt 2026-05-22 08:41:12 +02:00
Daniel 0e695ba595 Merge pull request 'Grenzpunkt-Funktionen für Verfahrensgebiet' (#47) from unstable into testing
Release Plugin / release (push) Successful in 4s
Reviewed-on: #47
2026-05-06 13:13:33 +02:00
Daniel 171ebcbe4f Merge pull request 'Verfahrensgebiet-Prüfung als Knickpunkte' (#46) from feature/grenzpunkte_laden into unstable
Release Plugin / release (push) Successful in 3s
Reviewed-on: #46
2026-05-06 10:39:54 +02:00
Daniel b7dfac68f1 Verfahrensgebiet-Prüfung als Knickpunkte 2026-05-05 19:47:25 +02:00
Daniel e9d9a2294d Merge pull request 'verfahrensgebiet aus Flst' (#35) from verfahrensgebiet_aus_flst into unstable
Release Plugin / release (push) Successful in 4s
Reviewed-on: #35
2026-04-23 22:30:12 +02:00
Daniel c8fde119b4 boundary-Unterscheidung für QGIS 3/4 2026-04-23 22:23:50 +02:00
Daniel 692f690fea verfahrensgebiet aus Flst 2026-04-22 14:53:34 +02:00
Daniel 44eee228a8 Merge pull request 'Verfahrensgebiet bilden ergänzt' (#29) from feature/Verfahrensgebiet_bilden into unstable
Release Plugin / release (push) Successful in 4s
Reviewed-on: #29
2026-04-21 22:19:13 +02:00
Daniel 34e2ff4f66 Flst_Laden, VerfGebiet bilden 2026-04-21 21:50:33 +02:00
Daniel 91669b34d6 tests überarbeitet 2026-04-20 15:36:38 +02:00
Daniel d2035139d9 pdoc-Dockstrings ergänzt 2026-04-20 14:31:16 +02:00
Daniel 88761eab22 exit_Crash_fix
Release Plugin / release (push) Successful in 4s
2026-04-20 13:28:00 +02:00
Daniel d762f2d94f Merge branch 'unstable' of https://entwicklung.flurneuordnung-sachsen.de/AG_QGIS/Plugin_SN_Basis into unstable 2026-04-20 10:32:19 +02:00
Daniel 9f7e81e8b2 Merge branch 'feature/Drucklayout-überarbeiten' into unstable 2026-04-20 10:19:36 +02:00
Daniel b4433222f3 Kartenschild angepasst 2026-04-17 17:15:13 +02:00
Daniel 779a1ed63f cleanup 2026-04-17 16:57:26 +02:00
Daniel 4049090e92 Druck-refactor 2026-04-17 16:52:53 +02:00
Daniel 4b842bf635 Vertikale Ausrichtung für Textfelder ergänzt; default: top 2026-04-17 14:44:30 +02:00
Daniel 5564c06d5c 3.40exit-crash-fix als plan in assets 2026-04-17 14:16:50 +02:00
Daniel 9306028df8 Anpassungen am Kartenschild 2026-04-17 13:48:14 +02:00
Daniel abf5808117 Herausgeber case sensitiv 2026-04-13 19:58:06 +02:00
Daniel 7ad8ba054f Baufreigabe-Layout fix auf A3/A4 2026-04-10 23:26:58 +02:00
Daniel 0900c6d3b0 neues Layout "Baufreigabe" hinzugefügt 2026-04-10 22:56:34 +02:00
Daniel 40c224959d Maßstab gefixt 2026-04-10 21:39:27 +02:00
Daniel 9d949d158f Umlaute im Kartenschild und Quellenangabe gefixt 2026-04-10 21:37:37 +02:00
Daniel dbccb5322f Koordinatengitter eingefügt, Rahmenbreiten einheitlich auf 0,5mm gesetzt 2026-04-10 21:30:44 +02:00
Daniel fef72b7e53 Position Kartenname angepasst 2026-04-10 19:32:50 +02:00
Daniel 8e80ffb02e unnötige assets gelöscht 2026-04-10 19:21:07 +02:00
Daniel c01bf241db Merge pull request 'verfahrensgebiet-Vaiable wird sauber gesetzt' (#22) from bug/verfahrensgebiet_nicht_übernommen into unstable
Release Plugin / release (push) Successful in 4s
Reviewed-on: #22
2026-04-08 14:37:44 +02:00
Daniel 9ec465e276 verfahrensgebiet-Vaiable wird sauber gesetzt 2026-04-08 14:36:20 +02:00
Daniel d5b7482ebd Merge pull request 'Legende an Hauptkarte des Layouts angebunden' (#21) from bug/Legendeneintrag into unstable
Reviewed-on: #21
2026-04-08 14:08:45 +02:00
Daniel 8e4031a884 Legende an Hauptkarte des Layouts angebunden 2026-04-08 13:56:58 +02:00
Daniel f1f104a464 Merge pull request 'Projektspeicher_Abfrage beim Start behoben (3.40/3.44' (#20) from bug/projektabfrage into unstable
Reviewed-on: #20
2026-04-08 13:28:14 +02:00
Daniel f34e4ce458 Projektspeicher_Abfrage beim Start behoben (3.40/3.44 2026-04-08 13:27:00 +02:00
Daniel a96560b21b Merge pull request 'Verfahrensgebiet-Layerauswahl nach sn_verfahrensgebiet verschoben' (#14) from refactor/Verfahrensgebiet-Auswahl_nach_sn_verfahrensgebiet into unstable
Release Plugin / release (push) Successful in 4s
Reviewed-on: #14
2026-03-27 11:26:32 +01:00
Daniel bb95e0d536 Verfahrensgebiet-Layerauswahl nach sn_verfahrensgebiet verschoben 2026-03-27 11:19:27 +01:00
Daniel 493e14c67f Merge pull request 'refactor/Druckfunktion-in-sn_basis' (#13) from refactor/Druckfunktion-in-sn_basis into unstable
Release Plugin / release (push) Successful in 4s
Reviewed-on: #13
2026-03-26 21:41:45 +01:00
Daniel 5303a44ce8 variable Blattgröße bis zum eingegebenen Maximum 2026-03-26 21:39:41 +01:00