forked from AG_QGIS/Plugin_SN_Basis
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user