Files
Plugin_SN_Plan41/ui/tab_b_logic.py
2026-03-20 10:37:08 +01:00

64 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
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"
THEMA_38 = "§38"
THEMA_41 = "§41"
MASSSTAB_WIE_KARTENFENSTER = "Wie Kartenfenster"
ANSICHT_WIE_KARTENFENSTER = "wie kartenfenster"
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",
}
class TabBLogic:
"""
Kapselt die Fachlogik von Tab B.
"""
def __init__(self, pruefmanager: Pruefmanager) -> None:
self.pruefmanager = pruefmanager
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")
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")