cleanup
This commit is contained in:
+40
-33
@@ -120,6 +120,21 @@ class PrintLogic:
|
||||
self._rectangle_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:
|
||||
project = QgsProject.instance()
|
||||
# Primär: neue zentrale Variable aus sn_verfahrensgebiet_manager
|
||||
@@ -476,10 +491,15 @@ class PrintLogic:
|
||||
if not callable(layouts_fn):
|
||||
return False
|
||||
try:
|
||||
layout_list = layouts_fn()
|
||||
if not layout_list:
|
||||
layout_iterable = layouts_fn()
|
||||
if layout_iterable is None:
|
||||
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:
|
||||
return False
|
||||
else:
|
||||
@@ -1151,7 +1171,7 @@ class PrintLogic:
|
||||
|
||||
if kartenname_auswahl not in (KARTENNAME_38, KARTENNAME_41, KARTENNAME_BAUFREIGABE):
|
||||
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:
|
||||
# Maßstab direkt vom aktuellen Canvas lesen; Projektvariable als Fallback.
|
||||
@@ -1172,11 +1192,11 @@ class PrintLogic:
|
||||
|
||||
if massstab_zahl <= 0:
|
||||
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)
|
||||
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:
|
||||
layer_id = getattr(layer_for_extent, "id", lambda: "")() or ""
|
||||
@@ -1190,7 +1210,7 @@ class PrintLogic:
|
||||
|
||||
force_fit_extent_for_min_a4 = False
|
||||
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_h,
|
||||
max_format=zielgroesse if zielgroesse in {"DIN A4", "DIN A3"} else "DIN A3",
|
||||
@@ -1203,40 +1223,29 @@ class PrintLogic:
|
||||
formfaktor,
|
||||
)
|
||||
if standard_layout is None:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Zielgroesse zu klein",
|
||||
"Die gewaehlte Zielgroesse reicht fuer den Einzelblatt-Druck nicht aus.",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
return self._show_target_size_too_small()
|
||||
|
||||
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.
|
||||
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
||||
fits_page = self._does_plot_fit_page(
|
||||
auto_page_w,
|
||||
auto_page_h,
|
||||
auto_map_w,
|
||||
auto_map_h,
|
||||
BAUFREIGABE_LAYOUT_FIXBREITE_MM,
|
||||
BAUFREIGABE_LAYOUT_FIXHOEHE_MM,
|
||||
)
|
||||
fixed_width_mm = BAUFREIGABE_LAYOUT_FIXBREITE_MM
|
||||
fixed_height_mm = BAUFREIGABE_LAYOUT_FIXHOEHE_MM
|
||||
else:
|
||||
fixed_width_mm = STANDARD_LAYOUT_FIXBREITE_MM
|
||||
fixed_height_mm = STANDARD_LAYOUT_FIXHOEHE_MM
|
||||
|
||||
fits_page = self._does_plot_fit_page(
|
||||
auto_page_w,
|
||||
auto_page_h,
|
||||
auto_map_w,
|
||||
auto_map_h,
|
||||
STANDARD_LAYOUT_FIXBREITE_MM,
|
||||
STANDARD_LAYOUT_FIXHOEHE_MM,
|
||||
fixed_width_mm,
|
||||
fixed_height_mm,
|
||||
)
|
||||
|
||||
if not fits_page:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Zielgroesse zu klein",
|
||||
"Die gewaehlte Zielgroesse reicht fuer den Einzelblatt-Druck nicht aus.",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
return self._show_target_size_too_small()
|
||||
|
||||
kartenname = get_variable(KARTENNAME_VAR, scope="project") or KARTENNAME_BY_AUSWAHL.get(
|
||||
kartenname_auswahl, "Vorlage"
|
||||
@@ -1249,15 +1258,13 @@ class PrintLogic:
|
||||
default_text=kartenname,
|
||||
)
|
||||
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
|
||||
|
||||
# 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_erzeugen_bf = True if atlas_raw_bf in (None, "") else str(atlas_raw_bf).strip().lower() in {
|
||||
"1", "true", "ja", "yes", "on",
|
||||
}
|
||||
atlas_erzeugen_bf = self._is_enabled_flag(atlas_raw_bf)
|
||||
|
||||
# Verzweigung: Baufreigabe vs. Standard-Layout
|
||||
try:
|
||||
@@ -1291,13 +1298,13 @@ class PrintLogic:
|
||||
)
|
||||
except ValueError as 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:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Vorlage anlegen",
|
||||
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)
|
||||
if kartenname_auswahl == KARTENNAME_BAUFREIGABE:
|
||||
|
||||
Reference in New Issue
Block a user