From 5e3261a8de547798304d239653f9a49c1a1a671d Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 5 May 2026 19:57:35 +0200 Subject: [PATCH] fortschrittsanzeige grenzpunkte kommt zeitiger --- ui/tabs/working_tab.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/ui/tabs/working_tab.py b/ui/tabs/working_tab.py index c306f04..914249e 100644 --- a/ui/tabs/working_tab.py +++ b/ui/tabs/working_tab.py @@ -8,7 +8,7 @@ from sn_basis.functions import Qgis, QgsProject #QgsMessageLog from sn_basis.functions.qgisui_wrapper import QgsMapLayerComboBox from sn_basis.functions.qgiscore_wrapper import QgsMapLayerProxyModel from sn_basis.functions.verfahrensgebiet_manager import get_verfahrensgebiet_layer_id, set_verfahrensgebiet_layer_id -from sn_basis.functions.dialog_wrapper import show_info_dialog +from sn_basis.functions.dialog_wrapper import show_info_dialog, create_progress_dialog from sn_basis.modules.Pruefmanager import Pruefmanager from sn_basis.modules.pruef_ergebnis import pruef_ergebnis from qgis.utils import iface @@ -411,9 +411,20 @@ class WorkingTab(QWidget): Die Gemarkungsschlüssel werden per Spatial-Join aus der Geometrie des aktuell gewählten Verfahrensgebiet-Layers abgeleitet. """ + # ------------------------------------------------------------------ # + # Schritt 0: Fortschrittsdialog sofort anzeigen # + # ------------------------------------------------------------------ # + # 4 Vorbereitungsschritte (Geometrie, Gemarkungen, Hits, Laden) – + # die genaue Schrittzahl wird in grenzpunkte_gemarkungsweise verfeinert. + prog = create_progress_dialog( + 4, "Grenzpunkte aus ALKIS laden", "Verfahrensgebiet prüfen …" + ) + prog.set_value(0) + # Verfahrensgebiet-Layer aus dem Dropdown holen vg_layer = self.verf_layer_combo.currentLayer() if not vg_layer or not vg_layer.isValid(): + prog.close() warning( "Grenzpunkte", "Kein Verfahrensgebiet-Layer gewählt. Bitte zuerst ein Verfahrensgebiet laden.", @@ -424,6 +435,7 @@ class WorkingTab(QWidget): # Geometrie des ersten Features als Suchgeometrie feats = list(vg_layer.getFeatures()) if not feats: + prog.close() warning("Grenzpunkte", "Verfahrensgebiet-Layer enthält keine Features.", duration=5) return @@ -432,14 +444,21 @@ class WorkingTab(QWidget): vg_geom = QgsGeometry.unaryUnion([f.geometry() for f in feats if f.hasGeometry()]) if not vg_geom or vg_geom.isEmpty(): + prog.close() warning("Grenzpunkte", "Verfahrensgebiet-Layer hat keine Geometrie.", duration=5) return + prog.set_label("Gemarkungsschlüssel per WFS ermitteln …") + prog.set_value(1) + if prog.is_canceled(): + return + # Gemarkungsschlüssel per Spatial-Join ermitteln (identisch zu VG-Workflow) schluessel_namen = gemarkung_schluessel_und_namen_von_vg_geometrie(vg_geom) schluessel_liste = [nr for nr, _ in schluessel_namen] if not schluessel_liste: + prog.close() warning( "Grenzpunkte", "Keine Gemarkungen für das Verfahrensgebiet gefunden. " @@ -448,7 +467,13 @@ class WorkingTab(QWidget): ) return + prog.set_label(f"{len(schluessel_liste)} Gemarkung(en) gefunden – Grenzpunkte laden …") + prog.set_value(2) + if prog.is_canceled(): + return + self._set_busy(self.btn_grenz_alkis, True, "Grenzpunkte aus ALKIS laden") + prog.close() # Vorbereitungs-Dialog schließen; grenzpunkte_gemarkungsweise öffnet eigenen try: joined_layer = grenzpunkte_gemarkungsweise(self, schluessel_liste, vg_geom=vg_geom)