""" sn_plan41/ui/tab_b_logic.py – Fachlogik für Tab B (Druck) """ from __future__ import annotations from sn_basis.functions.variable_wrapper import set_variable from sn_basis.modules.Pruefmanager import Pruefmanager KARTENNAME_VAR = "sn_kartenname" PLOTMASSSTAB_VAR = "sn_plotmassstab" VIEW_VAR = "sn_view" ZIELGROESSE_VAR = "sn_zielgroesse" FORMFAKTOR_VAR = "sn_formfaktor" KARTENNAME_38 = "§38" KARTENNAME_41 = "§41" MASSSTAB_WIE_KARTENFENSTER = "Wie Kartenfenster" THEMA_WIE_KARTENFENSTER = "wie kartenfenster" KARTENNAME_BY_AUSWAHL = { KARTENNAME_38: "Planungsübersicht §38 FlurbG", KARTENNAME_41: "Karte zum Plan über die gemeinschaftlichen und öffentlichen Anlagen (§ 41 FlurbG)", } 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", } # 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" class TabBLogic: """ Kapselt die Fachlogik von Tab B. """ def __init__(self, pruefmanager: Pruefmanager) -> None: self.pruefmanager = pruefmanager def set_kartenname_for_auswahl(self, auswahl: str) -> None: """Setzt die Projektvariable ``sn_kartenname`` anhand der Kartennamen-Auswahl.""" kartenname = KARTENNAME_BY_AUSWAHL.get(auswahl, "") 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") def set_view_for_auswahl(self, auswahl: str) -> None: """Setzt ``sn_view`` auf ``aktuell`` oder den Namen des gewählten Layerthemas.""" if auswahl == THEMA_WIE_KARTENFENSTER: set_variable(VIEW_VAR, "aktuell", scope="project") return set_variable(VIEW_VAR, auswahl or "", scope="project") 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")