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 10:11:42 +01:00
|
|
|
|
THEMA_38 = "§38"
|
|
|
|
|
|
THEMA_41 = "§41"
|
|
|
|
|
|
MASSSTAB_WIE_KARTENFENSTER = "Wie Kartenfenster"
|
2026-03-20 10:37:08 +01:00
|
|
|
|
ANSICHT_WIE_KARTENFENSTER = "wie kartenfenster"
|
2026-03-20 10:11:42 +01:00
|
|
|
|
|
|
|
|
|
|
KARTENNAME_BY_THEMA = {
|
|
|
|
|
|
THEMA_38: "Planungsübersicht §38 FlurbG",
|
|
|
|
|
|
THEMA_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",
|
|
|
|
|
|
}
|
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
|
|
|
|
|
|
|
|
|
|
def set_kartenname_for_thema(self, thema: str) -> None:
|
|
|
|
|
|
"""Setzt die Projektvariable ``sn_kartenname`` anhand des gewählten Druckthemas."""
|
|
|
|
|
|
kartenname = KARTENNAME_BY_THEMA.get(thema, "")
|
|
|
|
|
|
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:
|
|
|
|
|
|
"""Setzt ``sn_view`` auf ``aktuell`` oder den gewählten Layer/Themennamen."""
|
|
|
|
|
|
if auswahl == ANSICHT_WIE_KARTENFENSTER:
|
|
|
|
|
|
set_variable(VIEW_VAR, "aktuell", scope="project")
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
set_variable(VIEW_VAR, auswahl or "", scope="project")
|
2026-03-19 16:32:01 +01:00
|
|
|
|
|