2026-03-19 16:32:01 +01:00
|
|
|
|
"""
|
|
|
|
|
|
sn_plan41/ui/tab_b_logic.py – Fachlogik für Tab B (Druck)
|
|
|
|
|
|
"""
|
|
|
|
|
|
from __future__ import annotations
|
2026-03-20 10:11:42 +01:00
|
|
|
|
from sn_basis.functions.variable_wrapper import set_variable
|
2026-03-19 16:32:01 +01:00
|
|
|
|
from sn_basis.modules.Pruefmanager import Pruefmanager
|
|
|
|
|
|
|
2026-03-20 10:11:42 +01:00
|
|
|
|
|
|
|
|
|
|
KARTENNAME_VAR = "sn_kartenname"
|
|
|
|
|
|
PLOTMASSSTAB_VAR = "sn_plotmassstab"
|
2026-03-20 10:37:08 +01:00
|
|
|
|
VIEW_VAR = "sn_view"
|
2026-03-20 12:01:44 +01:00
|
|
|
|
ZIELGROESSE_VAR = "sn_zielgroesse"
|
|
|
|
|
|
FORMFAKTOR_VAR = "sn_formfaktor"
|
2026-03-20 11:45:36 +01:00
|
|
|
|
KARTENNAME_38 = "§38"
|
|
|
|
|
|
KARTENNAME_41 = "§41"
|
2026-03-20 10:11:42 +01:00
|
|
|
|
MASSSTAB_WIE_KARTENFENSTER = "Wie Kartenfenster"
|
2026-03-20 11:45:36 +01:00
|
|
|
|
THEMA_WIE_KARTENFENSTER = "wie kartenfenster"
|
2026-03-20 10:11:42 +01:00
|
|
|
|
|
2026-03-20 11:45:36 +01:00
|
|
|
|
KARTENNAME_BY_AUSWAHL = {
|
|
|
|
|
|
KARTENNAME_38: "Planungsübersicht §38 FlurbG",
|
|
|
|
|
|
KARTENNAME_41: "Karte zum Plan über die gemeinschaftlichen und öffentlichen Anlagen (§ 41 FlurbG)",
|
2026-03-20 10:11:42 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PLOTMASSSTAB_BY_AUSWAHL = {
|
|
|
|
|
|
"1:5.000": "5000",
|
|
|
|
|
|
"1:10.000": "10000",
|
|
|
|
|
|
"1:15.000": "15000",
|
|
|
|
|
|
"1:20.000": "20000",
|
|
|
|
|
|
"1:25.000": "25000",
|
|
|
|
|
|
"1:50.000": "50000",
|
|
|
|
|
|
"1:100.000": "100000",
|
|
|
|
|
|
}
|
2026-03-19 16:32:01 +01:00
|
|
|
|
|
2026-03-20 12:01:44 +01:00
|
|
|
|
# Breite x Höhe in mm (Hochformat, DIN-Standard)
|
|
|
|
|
|
DIN_GROESSEN: dict[str, tuple[int, int]] = {
|
|
|
|
|
|
"DIN A0": (841, 1189),
|
|
|
|
|
|
"DIN A1": (594, 841),
|
|
|
|
|
|
"DIN A2": (420, 594),
|
|
|
|
|
|
"DIN A3": (297, 420),
|
|
|
|
|
|
"DIN A4": (210, 297),
|
|
|
|
|
|
}
|
|
|
|
|
|
DIN_STANDARD = "DIN A0"
|
|
|
|
|
|
|
2026-03-19 16:32:01 +01:00
|
|
|
|
class TabBLogic:
|
|
|
|
|
|
"""
|
|
|
|
|
|
Kapselt die Fachlogik von Tab B.
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, pruefmanager: Pruefmanager) -> None:
|
|
|
|
|
|
self.pruefmanager = pruefmanager
|
2026-03-20 10:11:42 +01:00
|
|
|
|
|
2026-03-20 11:45:36 +01:00
|
|
|
|
def set_kartenname_for_auswahl(self, auswahl: str) -> None:
|
|
|
|
|
|
"""Setzt die Projektvariable ``sn_kartenname`` anhand der Kartennamen-Auswahl."""
|
|
|
|
|
|
kartenname = KARTENNAME_BY_AUSWAHL.get(auswahl, "")
|
2026-03-20 10:11:42 +01:00
|
|
|
|
set_variable(KARTENNAME_VAR, kartenname, scope="project")
|
|
|
|
|
|
|
|
|
|
|
|
def set_plotmassstab_for_auswahl(self, auswahl: str, aktueller_massstab: float | None = None) -> None:
|
|
|
|
|
|
"""Setzt die Projektvariable ``sn_plotmassstab`` anhand der Maßstabsauswahl."""
|
|
|
|
|
|
if auswahl == MASSSTAB_WIE_KARTENFENSTER:
|
|
|
|
|
|
if aktueller_massstab and aktueller_massstab > 0:
|
|
|
|
|
|
set_variable(PLOTMASSSTAB_VAR, str(int(round(aktueller_massstab))), scope="project")
|
|
|
|
|
|
else:
|
|
|
|
|
|
set_variable(PLOTMASSSTAB_VAR, "", scope="project")
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
value = PLOTMASSSTAB_BY_AUSWAHL.get(auswahl, "")
|
|
|
|
|
|
set_variable(PLOTMASSSTAB_VAR, value, scope="project")
|
2026-03-20 10:37:08 +01:00
|
|
|
|
|
|
|
|
|
|
def set_view_for_auswahl(self, auswahl: str) -> None:
|
2026-03-20 11:45:36 +01:00
|
|
|
|
"""Setzt ``sn_view`` auf ``aktuell`` oder den Namen des gewählten Layerthemas."""
|
|
|
|
|
|
if auswahl == THEMA_WIE_KARTENFENSTER:
|
2026-03-20 10:37:08 +01:00
|
|
|
|
set_variable(VIEW_VAR, "aktuell", scope="project")
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
set_variable(VIEW_VAR, auswahl or "", scope="project")
|
2026-03-20 12:01:44 +01:00
|
|
|
|
|
|
|
|
|
|
def set_zielgroesse_for_auswahl(self, auswahl: str) -> None:
|
|
|
|
|
|
"""Setzt ``sn_zielgroesse`` auf den gewählten DIN-Namen."""
|
|
|
|
|
|
set_variable(ZIELGROESSE_VAR, auswahl if auswahl in DIN_GROESSEN else DIN_STANDARD, scope="project")
|
|
|
|
|
|
|
|
|
|
|
|
def set_formfaktor(self, endlosrolle: bool) -> None:
|
|
|
|
|
|
"""Setzt ``sn_formfaktor`` auf ``Endlosrolle`` oder ``Blatt``."""
|
|
|
|
|
|
set_variable(FORMFAKTOR_VAR, "Endlosrolle" if endlosrolle else "Blatt", scope="project")
|
2026-03-19 16:32:01 +01:00
|
|
|
|
|