Flst_Laden, VerfGebiet bilden

This commit is contained in:
2026-04-21 21:50:33 +02:00
parent 91669b34d6
commit 34e2ff4f66
4 changed files with 110 additions and 2 deletions
+48 -1
View File
@@ -5,7 +5,7 @@ sn_basis/modules/Pruefmanager.py
from __future__ import annotations
from typing import Optional, Any
from sn_basis.functions import ask_yes_no, info, warning, error, ask_overwrite_append_cancel_custom
from sn_basis.functions import ask_yes_no, info, warning, error, ask_overwrite_append_cancel_custom, ask_ergaenzen_entfernen_ersetzen_abbrechen
from sn_basis.functions.ly_visibility_wrapper import set_layer_visible
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis, PruefAktion
@@ -204,6 +204,10 @@ class Pruefmanager:
if ergebnis.aktion == "datei_existiert":
return self._handle_datei_existiert(ergebnis)
# 3. Verfahrensgebiet-Editentscheidung
if ergebnis.aktion == "verfahrensgebiet_layer_existiert":
return self._handle_verfahrensgebiet_layer_existiert(ergebnis)
# 3. Basis interaktive Aktionen
interactive_actions = {
"leereingabe_erlaubt",
@@ -223,6 +227,49 @@ class Pruefmanager:
)
return ergebnis
def _handle_verfahrensgebiet_layer_existiert(self, ergebnis: pruef_ergebnis) -> pruef_ergebnis:
"""Fragt Nutzer, was mit dem bestehenden Verfahrensgebiet-Layer geschehen soll.
Zeigt einen Dialog mit vier Optionen:
- **Ergänzen**: neue Flurstücke hinzufügen
- **Entfernen**: ausgewählte Flurstücke entfernen
- **Ersetzen**: Verfahrensgebiet vollständig ersetzen
- **Abbrechen**: Vorgang beenden
Returns
-------
pruef_ergebnis
ok=True mit aktion ``verfahrensgebiet_ergaenzen`` / ``verfahrensgebiet_entfernen`` /
``verfahrensgebiet_ersetzen``, oder ok=False mit ``verfahrensgebiet_abbrechen``.
"""
if self.ui_modus != "qgis":
return ergebnis
titel = "Verfahrensgebiet bereits vorhanden"
meldung = (
ergebnis.meldung
or "Ein Verfahrensgebiet-Layer existiert bereits.\nWas soll geschehen?"
)
entscheidung = ask_ergaenzen_entfernen_ersetzen_abbrechen(
parent=self.parent,
title=titel,
message=meldung,
)
aktion_map = {
"ergaenzen": "verfahrensgebiet_ergaenzen",
"entfernen": "verfahrensgebiet_entfernen",
"ersetzen": "verfahrensgebiet_ersetzen",
"abbrechen": "verfahrensgebiet_abbrechen",
}
return pruef_ergebnis(
ok=(entscheidung != "abbrechen"),
aktion=aktion_map[entscheidung],
kontext=ergebnis.kontext,
)
def _ask_use_or_replace_pufferlayer(self) -> str:
"""
Fragt den Nutzer, ob ein vorhandener Pufferlayer verwendet
+7
View File
@@ -74,6 +74,13 @@ PruefAktion = Literal[
"stil_not_implemented",
"datei_unbekannt",
"needs_user_action",
# Verfahrensgebiet-Editoperationen
"verfahrensgebiet_layer_existiert", # bestehender Layer → Nutzerentscheidung
"verfahrensgebiet_ergaenzen", # Flurstücke hinzufügen
"verfahrensgebiet_entfernen", # Flurstücke entfernen
"verfahrensgebiet_ersetzen", # Verfahrensgebiet vollständig ersetzen
"verfahrensgebiet_abbrechen", # Nutzer hat abgebrochen
]