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>
This commit is contained in:
@@ -43,6 +43,8 @@ def show_info_dialog(title: str, message: str, parent: Any = None) -> None:
|
||||
"""
|
||||
Zeigt einen modalen Info-Dialog mit OK-Button.
|
||||
Blockiert bis der Nutzer bestätigt.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
try:
|
||||
if QT_VERSION == 0: # Mock-Modus
|
||||
@@ -59,7 +61,10 @@ def ask_text(
|
||||
default_text: str = "",
|
||||
parent: Any = None,
|
||||
) -> tuple[str, bool]:
|
||||
"""Zeigt einen modalen Texteingabe-Dialog und gibt Text + OK-Status zurück."""
|
||||
"""Zeigt einen modalen Texteingabe-Dialog und gibt Text + OK-Status zurück.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
try:
|
||||
if QT_VERSION == 0: # Mock-Modus
|
||||
print(f"Mock-Modus: ask_text('{title}') -> '{default_text}'")
|
||||
@@ -154,6 +159,8 @@ def ask_ergaenzen_entfernen_ersetzen_abbrechen(
|
||||
-------
|
||||
Literal["ergaenzen", "entfernen", "ersetzen", "abbrechen"]
|
||||
Genaue Entscheidung des Nutzers.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
if QT_VERSION == 0: # Mock-Modus
|
||||
print(f"Mock-Modus: ask_ergaenzen_entfernen_ersetzen_abbrechen('{title}') → abbrechen")
|
||||
@@ -207,6 +214,8 @@ def ask_detailpruefung_oder_vg_laden(
|
||||
-------
|
||||
Literal["detailpruefung", "als_vg_laden", "abbrechen"]
|
||||
Genaue Entscheidung des Nutzers.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
if QT_VERSION == 0: # Mock-Modus
|
||||
print(f"Mock-Modus: ask_detailpruefung_oder_vg_laden('{title}') → abbrechen")
|
||||
@@ -256,6 +265,8 @@ def ask_detailpruefung_oder_abbrechen(
|
||||
-------
|
||||
Literal["detailpruefung", "abbrechen"]
|
||||
Genaue Entscheidung des Nutzers.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
if QT_VERSION == 0: # Mock-Modus
|
||||
print(f"Mock-Modus: ask_detailpruefung_oder_abbrechen('{title}') → abbrechen")
|
||||
@@ -326,6 +337,7 @@ class ProgressDialog:
|
||||
pass
|
||||
|
||||
def set_total(self, total: int) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
self.total = max(total, 1)
|
||||
if QT_VERSION == 0:
|
||||
return
|
||||
@@ -334,6 +346,7 @@ class ProgressDialog:
|
||||
self._dlg.setMaximum(self.total)
|
||||
|
||||
def set_value(self, value: int) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
if QT_VERSION == 0:
|
||||
self.value = value
|
||||
return
|
||||
@@ -346,6 +359,7 @@ class ProgressDialog:
|
||||
QCoreApplication.processEvents()
|
||||
|
||||
def set_label(self, text: str) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
if QT_VERSION == 0:
|
||||
self.label = text
|
||||
return
|
||||
@@ -355,6 +369,7 @@ class ProgressDialog:
|
||||
QCoreApplication.processEvents()
|
||||
|
||||
def is_canceled(self) -> bool:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
if QT_VERSION == 0:
|
||||
return self._canceled
|
||||
|
||||
@@ -364,6 +379,7 @@ class ProgressDialog:
|
||||
return self._canceled
|
||||
|
||||
def close(self) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
if QT_VERSION == 0:
|
||||
return
|
||||
|
||||
@@ -375,6 +391,8 @@ class ProgressDialog:
|
||||
|
||||
Wird aufgerufen, nachdem ein modaler Subdialog (z. B. Auswahlbox)
|
||||
geschlossen wurde und der Fortschrittsdialog wieder sichtbar sein soll.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
if QT_VERSION == 0:
|
||||
return
|
||||
@@ -388,5 +406,6 @@ class ProgressDialog:
|
||||
|
||||
|
||||
def create_progress_dialog(total: int, title: str = "Fortschritt", label: str = "Verarbeite...") -> ProgressDialog:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
return ProgressDialog(total, title, label)
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ def push_message(
|
||||
|
||||
|
||||
def info(title: str, text: str, duration: int = 5):
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
level = Qgis.MessageLevel.Info
|
||||
return push_message(level, title, text, duration)
|
||||
|
||||
@@ -75,10 +76,12 @@ def warning(title: str, text: str, duration: int = 5):
|
||||
|
||||
|
||||
def error(title: str, text: str, duration: int = 5):
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
level = Qgis.MessageLevel.Critical
|
||||
return push_message(level, title, text, duration)
|
||||
|
||||
|
||||
def success(title: str, text: str, duration: int = 5):
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
level = Qgis.MessageLevel.Success
|
||||
return push_message(level, title, text, duration)
|
||||
|
||||
+16
-3
@@ -43,6 +43,8 @@ _PathLike = Union[str, Path]
|
||||
def normalize_path(path: _PathLike) -> Path:
|
||||
"""
|
||||
Normalisiert einen Pfad OS-unabhängig.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
try:
|
||||
return Path(path).expanduser().resolve()
|
||||
@@ -53,12 +55,17 @@ def normalize_path(path: _PathLike) -> Path:
|
||||
def get_home_dir() -> Path:
|
||||
"""
|
||||
Liefert das Home-Verzeichnis des aktuellen Users.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
return Path.home()
|
||||
|
||||
|
||||
def is_absolute_path(path: _PathLike) -> bool:
|
||||
"""Prüft, ob ein Pfad absolut ist."""
|
||||
"""Prüft, ob ein Pfad absolut ist.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
try:
|
||||
return Path(path).is_absolute()
|
||||
except Exception:
|
||||
@@ -66,7 +73,10 @@ def is_absolute_path(path: _PathLike) -> bool:
|
||||
|
||||
|
||||
def basename(path: _PathLike) -> str:
|
||||
"""Gibt den finalen Namen des Pfades zurück (Dateiname oder Ordner)."""
|
||||
"""Gibt den finalen Namen des Pfades zurück (Dateiname oder Ordner).
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
try:
|
||||
return Path(path).name
|
||||
except Exception:
|
||||
@@ -94,7 +104,10 @@ def is_case_sensitive_fs() -> bool:
|
||||
|
||||
|
||||
def path_suffix(path: _PathLike) -> str:
|
||||
"""Gibt die Dateiendung eines Pfades zurück (inklusive Punkt)."""
|
||||
"""Gibt die Dateiendung eines Pfades zurück (inklusive Punkt).
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
try:
|
||||
return Path(path).suffix
|
||||
except Exception:
|
||||
|
||||
@@ -129,6 +129,7 @@ except Exception:
|
||||
# ---------------------------------------------------------
|
||||
|
||||
def get_main_window():
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
try:
|
||||
return iface.mainWindow()
|
||||
except Exception:
|
||||
@@ -147,6 +148,7 @@ def open_layout_designer(layout: Any) -> Any:
|
||||
# ---------------------------------------------------------
|
||||
|
||||
def add_dock_widget(area, dock: Any) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
try:
|
||||
iface.addDockWidget(area, dock)
|
||||
except Exception:
|
||||
@@ -154,6 +156,7 @@ def add_dock_widget(area, dock: Any) -> None:
|
||||
|
||||
|
||||
def remove_dock_widget(dock: Any) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
try:
|
||||
iface.removeDockWidget(dock)
|
||||
except Exception:
|
||||
@@ -199,6 +202,7 @@ def remove_menu(menu):
|
||||
# ---------------------------------------------------------
|
||||
|
||||
def add_toolbar(toolbar: Any) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
try:
|
||||
iface.addToolBar(toolbar)
|
||||
except Exception:
|
||||
@@ -206,6 +210,7 @@ def add_toolbar(toolbar: Any) -> None:
|
||||
|
||||
|
||||
def remove_toolbar(toolbar: Any) -> None:
|
||||
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
|
||||
try:
|
||||
iface.removeToolBar(toolbar)
|
||||
except Exception:
|
||||
|
||||
@@ -58,11 +58,17 @@ QIcon: Type[Any] = object
|
||||
|
||||
|
||||
def exec_dialog(dialog: Any) -> Any:
|
||||
"""Führt Dialog modal aus (Qt6: exec(), Qt5: exec_(), Mock: YES)"""
|
||||
"""Führt Dialog modal aus (Qt6: exec(), Qt5: exec_(), Mock: YES)
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
raise NotImplementedError("Qt nicht initialisiert")
|
||||
|
||||
def debug_qt_status() -> None:
|
||||
"""Debug: Zeigt Qt-Status für Troubleshooting."""
|
||||
"""Debug: Zeigt Qt-Status für Troubleshooting.
|
||||
|
||||
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
"""
|
||||
print(f"🔍 QT_VERSION: {QT_VERSION}")
|
||||
print(f"🔍 QMessageBox Typ: {getattr(QMessageBox, '__name__', type(QMessageBox).__name__)}")
|
||||
print(f"🔍 YES Wert: {YES} (Typ: {type(YES) if YES is not None else 'None'})")
|
||||
|
||||
Reference in New Issue
Block a user