qt_wrapper, dialog;wrapper, Pruef_ergebnis und Pruefmanager überarbeitet, so dass die Übergaben jetzt stimmen. Nutzerabfragen werden tatsächlich ausgelöst- Nutzerabfrage Datei überschreiebn... ist noch Blödsinn

This commit is contained in:
2026-03-04 15:32:49 +01:00
parent f8be65f6f6
commit 3b56725e4f
7 changed files with 756 additions and 1053 deletions

View File

@@ -1,62 +1,37 @@
"""
sn_basis/functions/dialog_wrapper.py Benutzer-Dialoge
Dieser Wrapper kapselt alle Benutzer-Dialoge (z. B. Ja/Nein-Abfragen)
und sorgt dafür, dass sie sowohl in QGIS als auch im Mock-/Testmodus
einheitlich funktionieren.
sn_basis/functions/dialog_wrapper.py Benutzer-Dialoge (Qt5/6/Mock-kompatibel)
"""
from typing import Any
# Import der abstrahierten Qt-Klassen aus dem qt_wrapper.
# QMessageBox, YES und NO sind bereits kompatibel zu Qt5/Qt6
# und im Mock-Modus durch Dummy-Objekte ersetzt.
from sn_basis.functions.qt_wrapper import (
QMessageBox,
YES,
NO,
QMessageBox, YES, NO, QT_VERSION
)
# ---------------------------------------------------------
# Öffentliche API
# ---------------------------------------------------------
def ask_yes_no(
title: str,
message: str,
default: bool = False,
default: bool = True,
parent: Any = None,
) -> bool:
"""
Stellt dem Benutzer eine Ja/Nein-Frage.
- In einer echten QGIS-Umgebung wird ein QMessageBox-Dialog angezeigt.
- Im Mock-/Testmodus wird kein Dialog geöffnet, sondern der Default-Wert
zurückgegeben, damit Tests ohne UI laufen können.
:param title: Titel des Dialogs
:param message: Nachrichtentext
:param default: Rückgabewert im Fehler- oder Mock-Fall
:param parent: Optionales Parent-Widget
:return: True bei "Ja", False bei "Nein"
Stellt Ja/Nein-Frage. Funktioniert in PyQt5/6 UND Mock-Modus.
"""
try:
# Definiert die beiden Buttons, die angezeigt werden sollen.
buttons = QMessageBox.Yes | QMessageBox.No
# Öffnet den Dialog (oder im Mock-Modus: simuliert ihn).
if QT_VERSION == 0: # Mock-Modus
print(f"🔍 Mock-Modus: ask_yes_no('{title}') → {default}")
return default
# ✅ KORREKT: Verwende YES/NO-Aliase aus qt_wrapper!
buttons = YES | NO
default_button = YES if default else NO
result = QMessageBox.question(
parent,
title,
message,
buttons,
YES if default else NO, # Vorauswahl abhängig vom Default
parent, title, message, buttons, default_button
)
# Gibt True zurück, wenn der Benutzer "Ja" gewählt hat.
return result == YES
except Exception:
# Falls Qt nicht verfügbar ist (Mock/CI), wird der Default-Wert genutzt.
# ✅ int(result) == int(YES) funktioniert Qt5/6/Mock
print(f"DEBUG ask_yes_no: result={result}, YES={YES}, match={int(result) == int(YES)}")
return int(result) == int(YES)
except Exception as e:
print(f"⚠️ ask_yes_no Fehler: {e}")
return default