""" sn_basis/modules/Pruefmanager.py – zentrale Verarbeitung von pruef_ergebnis-Objekten. Steuert die Nutzerinteraktion über Wrapper. """ from sn_basis.functions import ( ask_yes_no, info, warning, error, set_layer_visible, ) from sn_basis.modules.pruef_ergebnis import pruef_ergebnis class Pruefmanager: """ Verarbeitet pruef_ergebnis-Objekte und steuert die Nutzerinteraktion. """ def __init__(self, ui_modus: str = "qgis"): self.ui_modus = ui_modus # --------------------------------------------------------- # Hauptfunktion # --------------------------------------------------------- def verarbeite(self, ergebnis: pruef_ergebnis) -> pruef_ergebnis: """ Verarbeitet ein pruef_ergebnis und führt ggf. Nutzerinteraktion durch. Rückgabe: neues oder unverändertes pruef_ergebnis. """ if ergebnis.ok: return ergebnis aktion = ergebnis.aktion kontext = ergebnis.kontext # ----------------------------------------------------- # Allgemeine Aktionen # ----------------------------------------------------- if aktion == "leer": warning("Eingabe fehlt", ergebnis.meldung) return ergebnis if aktion == "leereingabe_erlaubt": if ask_yes_no("Ohne Eingabe fortfahren", ergebnis.meldung): return pruef_ergebnis( ok=True, meldung="Ohne Eingabe fortgefahren.", aktion="ok", kontext=None, ) return ergebnis if aktion == "leereingabe_nicht_erlaubt": warning("Eingabe erforderlich", ergebnis.meldung) return ergebnis if aktion == "standarddatei_vorschlagen": if ask_yes_no("Standarddatei verwenden", ergebnis.meldung): return pruef_ergebnis( ok=True, meldung="Standarddatei wird verwendet.", aktion="ok", kontext=kontext, ) return ergebnis if aktion == "temporaer_erlaubt": if ask_yes_no("Temporäre Datei erzeugen", ergebnis.meldung): return pruef_ergebnis( ok=True, meldung="Temporäre Datei soll erzeugt werden.", aktion="temporaer_erzeugen", kontext=None, ) return ergebnis if aktion == "datei_nicht_gefunden": warning("Datei nicht gefunden", ergebnis.meldung) return ergebnis if aktion == "kein_dateipfad": warning("Ungültiger Pfad", ergebnis.meldung) return ergebnis if aktion == "pfad_nicht_gefunden": warning("Pfad nicht gefunden", ergebnis.meldung) return ergebnis if aktion == "url_nicht_erreichbar": warning("URL nicht erreichbar", ergebnis.meldung) return ergebnis if aktion == "netzwerkfehler": error("Netzwerkfehler", ergebnis.meldung) return ergebnis # ----------------------------------------------------- # Layer-Aktionen # ----------------------------------------------------- if aktion == "layer_nicht_gefunden": error("Layer fehlt", ergebnis.meldung) return ergebnis if aktion == "layer_unsichtbar": if ask_yes_no("Layer einblenden", ergebnis.meldung): if kontext is not None: try: set_layer_visible(kontext, True) except Exception: pass return pruef_ergebnis( ok=True, meldung="Layer wurde eingeblendet.", aktion="ok", kontext=kontext, ) return ergebnis if aktion == "falscher_geotyp": warning("Falscher Geometrietyp", ergebnis.meldung) return ergebnis if aktion == "layer_leer": warning("Layer enthält keine Objekte", ergebnis.meldung) return ergebnis if aktion == "falscher_layertyp": warning("Falscher Layertyp", ergebnis.meldung) return ergebnis if aktion == "falsches_crs": warning("Falsches CRS", ergebnis.meldung) return ergebnis if aktion == "felder_fehlen": warning("Fehlende Felder", ergebnis.meldung) return ergebnis if aktion == "datenquelle_unerwartet": warning("Unerwartete Datenquelle", ergebnis.meldung) return ergebnis if aktion == "layer_nicht_editierbar": warning("Layer nicht editierbar", ergebnis.meldung) return ergebnis # ----------------------------------------------------- # Fallback # ----------------------------------------------------- warning("Unbekannte Aktion", f"Unbekannte Aktion: {aktion}") return ergebnis