cleanup
This commit is contained in:
+46
-39
@@ -120,6 +120,21 @@ class PrintLogic:
|
|||||||
self._rectangle_tool: Any | None = None
|
self._rectangle_tool: Any | None = None
|
||||||
self._previous_map_tool: Any | None = None
|
self._previous_map_tool: Any | None = None
|
||||||
|
|
||||||
|
def _failed_result(self) -> dict:
|
||||||
|
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||||
|
|
||||||
|
def _show_target_size_too_small(self) -> dict:
|
||||||
|
self.pruefmanager.zeige_hinweis(
|
||||||
|
"Zielgroesse zu klein",
|
||||||
|
"Die gewaehlte Zielgroesse reicht fuer den Einzelblatt-Druck nicht aus.",
|
||||||
|
)
|
||||||
|
return self._failed_result()
|
||||||
|
|
||||||
|
def _is_enabled_flag(self, raw_value: Any) -> bool:
|
||||||
|
if raw_value in (None, ""):
|
||||||
|
return True
|
||||||
|
return str(raw_value).strip().lower() in {"1", "true", "ja", "yes", "on"}
|
||||||
|
|
||||||
def _resolve_layer_from_project(self) -> object | None:
|
def _resolve_layer_from_project(self) -> object | None:
|
||||||
project = QgsProject.instance()
|
project = QgsProject.instance()
|
||||||
# Primär: neue zentrale Variable aus sn_verfahrensgebiet_manager
|
# Primär: neue zentrale Variable aus sn_verfahrensgebiet_manager
|
||||||
@@ -476,10 +491,15 @@ class PrintLogic:
|
|||||||
if not callable(layouts_fn):
|
if not callable(layouts_fn):
|
||||||
return False
|
return False
|
||||||
try:
|
try:
|
||||||
layout_list = layouts_fn()
|
layout_iterable = layouts_fn()
|
||||||
if not layout_list:
|
if layout_iterable is None:
|
||||||
return False
|
return False
|
||||||
layout = layout_list[-1]
|
last_layout: Any | None = None
|
||||||
|
for candidate_layout in cast(Any, layout_iterable):
|
||||||
|
last_layout = candidate_layout
|
||||||
|
if last_layout is None:
|
||||||
|
return False
|
||||||
|
layout = last_layout
|
||||||
except Exception:
|
except Exception:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
@@ -1151,7 +1171,7 @@ class PrintLogic:
|
|||||||
|
|
||||||
if kartenname_auswahl not in (KARTENNAME_38, KARTENNAME_41, KARTENNAME_BAUFREIGABE):
|
if kartenname_auswahl not in (KARTENNAME_38, KARTENNAME_41, KARTENNAME_BAUFREIGABE):
|
||||||
self.pruefmanager.zeige_hinweis("Kartennamen waehlen", "Kartennamen waehlen")
|
self.pruefmanager.zeige_hinweis("Kartennamen waehlen", "Kartennamen waehlen")
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
return self._failed_result()
|
||||||
|
|
||||||
if massstab_auswahl == MASSSTAB_WIE_KARTENFENSTER:
|
if massstab_auswahl == MASSSTAB_WIE_KARTENFENSTER:
|
||||||
# Maßstab direkt vom aktuellen Canvas lesen; Projektvariable als Fallback.
|
# Maßstab direkt vom aktuellen Canvas lesen; Projektvariable als Fallback.
|
||||||
@@ -1172,11 +1192,11 @@ class PrintLogic:
|
|||||||
|
|
||||||
if massstab_zahl <= 0:
|
if massstab_zahl <= 0:
|
||||||
self.pruefmanager.zeige_hinweis("Massstab fehlt", "Kein gueltiger Massstab angegeben.")
|
self.pruefmanager.zeige_hinweis("Massstab fehlt", "Kein gueltiger Massstab angegeben.")
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
return self._failed_result()
|
||||||
|
|
||||||
extent, layer_for_extent = self._resolve_extent(resolved_layer, druckbereich_auswahl, massstab_zahl)
|
extent, layer_for_extent = self._resolve_extent(resolved_layer, druckbereich_auswahl, massstab_zahl)
|
||||||
if extent is None:
|
if extent is None:
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
return self._failed_result()
|
||||||
|
|
||||||
if layer_for_extent is not None:
|
if layer_for_extent is not None:
|
||||||
layer_id = getattr(layer_for_extent, "id", lambda: "")() or ""
|
layer_id = getattr(layer_for_extent, "id", lambda: "")() or ""
|
||||||
@@ -1190,7 +1210,7 @@ class PrintLogic:
|
|||||||
|
|
||||||
force_fit_extent_for_min_a4 = False
|
force_fit_extent_for_min_a4 = False
|
||||||
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
||||||
din_format, auto_page_w, auto_page_h, auto_map_w, auto_map_h, _bf_fallback = self._get_baufreigabe_page_dimensions(
|
_, auto_page_w, auto_page_h, auto_map_w, auto_map_h, _bf_fallback = self._get_baufreigabe_page_dimensions(
|
||||||
kartenbild_w,
|
kartenbild_w,
|
||||||
kartenbild_h,
|
kartenbild_h,
|
||||||
max_format=zielgroesse if zielgroesse in {"DIN A4", "DIN A3"} else "DIN A3",
|
max_format=zielgroesse if zielgroesse in {"DIN A4", "DIN A3"} else "DIN A3",
|
||||||
@@ -1203,40 +1223,29 @@ class PrintLogic:
|
|||||||
formfaktor,
|
formfaktor,
|
||||||
)
|
)
|
||||||
if standard_layout is None:
|
if standard_layout is None:
|
||||||
self.pruefmanager.zeige_hinweis(
|
return self._show_target_size_too_small()
|
||||||
"Zielgroesse zu klein",
|
|
||||||
"Die gewaehlte Zielgroesse reicht fuer den Einzelblatt-Druck nicht aus.",
|
|
||||||
)
|
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
|
||||||
|
|
||||||
auto_page_w, auto_page_h, auto_map_w, auto_map_h, force_fit_extent_for_min_a4 = standard_layout
|
auto_page_w, auto_page_h, auto_map_w, auto_map_h, force_fit_extent_for_min_a4 = standard_layout
|
||||||
|
|
||||||
# Finale Sicherheitspruefung: alle Layoutobjekte muessen auf die Seite passen.
|
# Finale Sicherheitspruefung: alle Layoutobjekte muessen auf die Seite passen.
|
||||||
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
||||||
fits_page = self._does_plot_fit_page(
|
fixed_width_mm = BAUFREIGABE_LAYOUT_FIXBREITE_MM
|
||||||
auto_page_w,
|
fixed_height_mm = BAUFREIGABE_LAYOUT_FIXHOEHE_MM
|
||||||
auto_page_h,
|
|
||||||
auto_map_w,
|
|
||||||
auto_map_h,
|
|
||||||
BAUFREIGABE_LAYOUT_FIXBREITE_MM,
|
|
||||||
BAUFREIGABE_LAYOUT_FIXHOEHE_MM,
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
fits_page = self._does_plot_fit_page(
|
fixed_width_mm = STANDARD_LAYOUT_FIXBREITE_MM
|
||||||
auto_page_w,
|
fixed_height_mm = STANDARD_LAYOUT_FIXHOEHE_MM
|
||||||
auto_page_h,
|
|
||||||
auto_map_w,
|
fits_page = self._does_plot_fit_page(
|
||||||
auto_map_h,
|
auto_page_w,
|
||||||
STANDARD_LAYOUT_FIXBREITE_MM,
|
auto_page_h,
|
||||||
STANDARD_LAYOUT_FIXHOEHE_MM,
|
auto_map_w,
|
||||||
)
|
auto_map_h,
|
||||||
|
fixed_width_mm,
|
||||||
|
fixed_height_mm,
|
||||||
|
)
|
||||||
|
|
||||||
if not fits_page:
|
if not fits_page:
|
||||||
self.pruefmanager.zeige_hinweis(
|
return self._show_target_size_too_small()
|
||||||
"Zielgroesse zu klein",
|
|
||||||
"Die gewaehlte Zielgroesse reicht fuer den Einzelblatt-Druck nicht aus.",
|
|
||||||
)
|
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
|
||||||
|
|
||||||
kartenname = get_variable(KARTENNAME_VAR, scope="project") or KARTENNAME_BY_AUSWAHL.get(
|
kartenname = get_variable(KARTENNAME_VAR, scope="project") or KARTENNAME_BY_AUSWAHL.get(
|
||||||
kartenname_auswahl, "Vorlage"
|
kartenname_auswahl, "Vorlage"
|
||||||
@@ -1249,15 +1258,13 @@ class PrintLogic:
|
|||||||
default_text=kartenname,
|
default_text=kartenname,
|
||||||
)
|
)
|
||||||
if not bestaetigt:
|
if not bestaetigt:
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
return self._failed_result()
|
||||||
|
|
||||||
vorlage_name = (vorlage_name or "").strip() or kartenname
|
vorlage_name = (vorlage_name or "").strip() or kartenname
|
||||||
|
|
||||||
# Atlas-Status vorab bestimmen, damit er sowohl an create_ als auch configure_ uebergeben wird.
|
# Atlas-Status vorab bestimmen, damit er sowohl an create_ als auch configure_ uebergeben wird.
|
||||||
atlas_raw_bf = get_variable(ATLAS_ERZEUGEN_UI_VAR, scope="project")
|
atlas_raw_bf = get_variable(ATLAS_ERZEUGEN_UI_VAR, scope="project")
|
||||||
atlas_erzeugen_bf = True if atlas_raw_bf in (None, "") else str(atlas_raw_bf).strip().lower() in {
|
atlas_erzeugen_bf = self._is_enabled_flag(atlas_raw_bf)
|
||||||
"1", "true", "ja", "yes", "on",
|
|
||||||
}
|
|
||||||
|
|
||||||
# Verzweigung: Baufreigabe vs. Standard-Layout
|
# Verzweigung: Baufreigabe vs. Standard-Layout
|
||||||
try:
|
try:
|
||||||
@@ -1291,13 +1298,13 @@ class PrintLogic:
|
|||||||
)
|
)
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
self.pruefmanager.zeige_hinweis("Vorlage anlegen", str(exc))
|
self.pruefmanager.zeige_hinweis("Vorlage anlegen", str(exc))
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
return self._failed_result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
self.pruefmanager.zeige_hinweis(
|
self.pruefmanager.zeige_hinweis(
|
||||||
"Vorlage anlegen",
|
"Vorlage anlegen",
|
||||||
f"Die Vorlage konnte nicht angelegt werden: {exc}",
|
f"Die Vorlage konnte nicht angelegt werden: {exc}",
|
||||||
)
|
)
|
||||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
return self._failed_result()
|
||||||
|
|
||||||
# Nach erfolgreicher Layout-Erstellung: Atlas ggf. konfigurieren (nur falls aktiviert)
|
# Nach erfolgreicher Layout-Erstellung: Atlas ggf. konfigurieren (nur falls aktiviert)
|
||||||
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
||||||
|
|||||||
Reference in New Issue
Block a user