forked from Daniel/Plugin_SN_Plan41
Bezeichnungen Thema und Ansicht konsistent zur QGIS-Verwendung getauscht (alt=Thema, neu=Kartenname, alt=Ansicht,neu=Thema)
This commit is contained in:
@@ -9,14 +9,14 @@ from sn_basis.modules.Pruefmanager import Pruefmanager
|
|||||||
KARTENNAME_VAR = "sn_kartenname"
|
KARTENNAME_VAR = "sn_kartenname"
|
||||||
PLOTMASSSTAB_VAR = "sn_plotmassstab"
|
PLOTMASSSTAB_VAR = "sn_plotmassstab"
|
||||||
VIEW_VAR = "sn_view"
|
VIEW_VAR = "sn_view"
|
||||||
THEMA_38 = "§38"
|
KARTENNAME_38 = "§38"
|
||||||
THEMA_41 = "§41"
|
KARTENNAME_41 = "§41"
|
||||||
MASSSTAB_WIE_KARTENFENSTER = "Wie Kartenfenster"
|
MASSSTAB_WIE_KARTENFENSTER = "Wie Kartenfenster"
|
||||||
ANSICHT_WIE_KARTENFENSTER = "wie kartenfenster"
|
THEMA_WIE_KARTENFENSTER = "wie kartenfenster"
|
||||||
|
|
||||||
KARTENNAME_BY_THEMA = {
|
KARTENNAME_BY_AUSWAHL = {
|
||||||
THEMA_38: "Planungsübersicht §38 FlurbG",
|
KARTENNAME_38: "Planungsübersicht §38 FlurbG",
|
||||||
THEMA_41: "Karte zum Plan über die gemeinschaftlichen und öffentlichen Anlagen (§ 41 FlurbG)",
|
KARTENNAME_41: "Karte zum Plan über die gemeinschaftlichen und öffentlichen Anlagen (§ 41 FlurbG)",
|
||||||
}
|
}
|
||||||
|
|
||||||
PLOTMASSSTAB_BY_AUSWAHL = {
|
PLOTMASSSTAB_BY_AUSWAHL = {
|
||||||
@@ -37,9 +37,9 @@ class TabBLogic:
|
|||||||
def __init__(self, pruefmanager: Pruefmanager) -> None:
|
def __init__(self, pruefmanager: Pruefmanager) -> None:
|
||||||
self.pruefmanager = pruefmanager
|
self.pruefmanager = pruefmanager
|
||||||
|
|
||||||
def set_kartenname_for_thema(self, thema: str) -> None:
|
def set_kartenname_for_auswahl(self, auswahl: str) -> None:
|
||||||
"""Setzt die Projektvariable ``sn_kartenname`` anhand des gewählten Druckthemas."""
|
"""Setzt die Projektvariable ``sn_kartenname`` anhand der Kartennamen-Auswahl."""
|
||||||
kartenname = KARTENNAME_BY_THEMA.get(thema, "")
|
kartenname = KARTENNAME_BY_AUSWAHL.get(auswahl, "")
|
||||||
set_variable(KARTENNAME_VAR, kartenname, scope="project")
|
set_variable(KARTENNAME_VAR, kartenname, scope="project")
|
||||||
|
|
||||||
def set_plotmassstab_for_auswahl(self, auswahl: str, aktueller_massstab: float | None = None) -> None:
|
def set_plotmassstab_for_auswahl(self, auswahl: str, aktueller_massstab: float | None = None) -> None:
|
||||||
@@ -55,8 +55,8 @@ class TabBLogic:
|
|||||||
set_variable(PLOTMASSSTAB_VAR, value, scope="project")
|
set_variable(PLOTMASSSTAB_VAR, value, scope="project")
|
||||||
|
|
||||||
def set_view_for_auswahl(self, auswahl: str) -> None:
|
def set_view_for_auswahl(self, auswahl: str) -> None:
|
||||||
"""Setzt ``sn_view`` auf ``aktuell`` oder den gewählten Layer/Themennamen."""
|
"""Setzt ``sn_view`` auf ``aktuell`` oder den Namen des gewählten Layerthemas."""
|
||||||
if auswahl == ANSICHT_WIE_KARTENFENSTER:
|
if auswahl == THEMA_WIE_KARTENFENSTER:
|
||||||
set_variable(VIEW_VAR, "aktuell", scope="project")
|
set_variable(VIEW_VAR, "aktuell", scope="project")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
134
ui/tab_b_ui.py
134
ui/tab_b_ui.py
@@ -22,16 +22,16 @@ from sn_plan41.ui.tab_b_logic import (
|
|||||||
TabBLogic,
|
TabBLogic,
|
||||||
MASSSTAB_WIE_KARTENFENSTER,
|
MASSSTAB_WIE_KARTENFENSTER,
|
||||||
PLOTMASSSTAB_BY_AUSWAHL,
|
PLOTMASSSTAB_BY_AUSWAHL,
|
||||||
ANSICHT_WIE_KARTENFENSTER,
|
THEMA_WIE_KARTENFENSTER,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
THEMA_VAR = "tab_b_thema"
|
KARTENNAME_VAR = "tab_b_kartenname"
|
||||||
THEMA_PLACEHOLDER = "Thema wählen"
|
KARTENNAME_PLACEHOLDER = "Kartenname wählen"
|
||||||
THEMA_38 = "§38"
|
KARTENNAME_38 = "§38"
|
||||||
THEMA_41 = "§41"
|
KARTENNAME_41 = "§41"
|
||||||
MASSSTAB_VAR = "tab_b_massstab"
|
MASSSTAB_VAR = "tab_b_massstab"
|
||||||
ANSICHT_VAR = "tab_b_ansicht"
|
THEMA_VAR = "tab_b_thema"
|
||||||
|
|
||||||
class TabB(QWidget):
|
class TabB(QWidget):
|
||||||
"""
|
"""
|
||||||
@@ -62,9 +62,9 @@ class TabB(QWidget):
|
|||||||
self.pruefmanager: Optional[Pruefmanager] = None
|
self.pruefmanager: Optional[Pruefmanager] = None
|
||||||
|
|
||||||
self.logic: Optional[TabBLogic] = None
|
self.logic: Optional[TabBLogic] = None
|
||||||
self._thema_combo: Optional[QComboBox] = None
|
self._kartenname_combo: Optional[QComboBox] = None
|
||||||
self._massstab_combo: Optional[QComboBox] = None
|
self._massstab_combo: Optional[QComboBox] = None
|
||||||
self._ansicht_combo: Optional[QComboBox] = None
|
self._thema_combo: Optional[QComboBox] = None
|
||||||
self._theme_signal_connected = False
|
self._theme_signal_connected = False
|
||||||
self._connected_theme_collection: object = None # Referenz für sauberes Trennen
|
self._connected_theme_collection: object = None # Referenz für sauberes Trennen
|
||||||
|
|
||||||
@@ -80,15 +80,15 @@ class TabB(QWidget):
|
|||||||
self.pruefmanager = pruefmanager
|
self.pruefmanager = pruefmanager
|
||||||
self.logic = TabBLogic(pruefmanager=self.pruefmanager)
|
self.logic = TabBLogic(pruefmanager=self.pruefmanager)
|
||||||
|
|
||||||
if self._thema_combo:
|
if self._kartenname_combo:
|
||||||
self.logic.set_kartenname_for_thema(self._thema_combo.currentText())
|
self.logic.set_kartenname_for_auswahl(self._kartenname_combo.currentText())
|
||||||
if self._massstab_combo:
|
if self._massstab_combo:
|
||||||
self.logic.set_plotmassstab_for_auswahl(
|
self.logic.set_plotmassstab_for_auswahl(
|
||||||
self._massstab_combo.currentText(),
|
self._massstab_combo.currentText(),
|
||||||
self._get_current_canvas_scale(),
|
self._get_current_canvas_scale(),
|
||||||
)
|
)
|
||||||
if self._ansicht_combo:
|
if self._thema_combo:
|
||||||
self.logic.set_view_for_auswahl(self._ansicht_combo.currentText())
|
self.logic.set_view_for_auswahl(self._thema_combo.currentText())
|
||||||
|
|
||||||
def _build_ui(self) -> None:
|
def _build_ui(self) -> None:
|
||||||
"""Erstellt die reduzierte UI für die Themenauswahl."""
|
"""Erstellt die reduzierte UI für die Themenauswahl."""
|
||||||
@@ -96,16 +96,16 @@ class TabB(QWidget):
|
|||||||
main_layout.setSpacing(4)
|
main_layout.setSpacing(4)
|
||||||
main_layout.setContentsMargins(4, 4, 4, 4)
|
main_layout.setContentsMargins(4, 4, 4, 4)
|
||||||
|
|
||||||
thema_label = QLabel("Thema")
|
kartenname_label = QLabel("Kartenname")
|
||||||
thema_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
kartenname_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||||
main_layout.addWidget(thema_label)
|
main_layout.addWidget(kartenname_label)
|
||||||
|
|
||||||
self._thema_combo = QComboBox(self)
|
self._kartenname_combo = QComboBox(self)
|
||||||
self._thema_combo.addItem(THEMA_PLACEHOLDER)
|
self._kartenname_combo.addItem(KARTENNAME_PLACEHOLDER)
|
||||||
self._thema_combo.addItem(THEMA_38)
|
self._kartenname_combo.addItem(KARTENNAME_38)
|
||||||
self._thema_combo.addItem(THEMA_41)
|
self._kartenname_combo.addItem(KARTENNAME_41)
|
||||||
self._thema_combo.currentTextChanged.connect(self._on_thema_changed)
|
self._kartenname_combo.currentTextChanged.connect(self._on_kartenname_changed)
|
||||||
main_layout.addWidget(self._thema_combo)
|
main_layout.addWidget(self._kartenname_combo)
|
||||||
|
|
||||||
massstab_label = QLabel("Maßstab")
|
massstab_label = QLabel("Maßstab")
|
||||||
massstab_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
massstab_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||||
@@ -117,29 +117,29 @@ class TabB(QWidget):
|
|||||||
self._massstab_combo.currentTextChanged.connect(self._on_massstab_changed)
|
self._massstab_combo.currentTextChanged.connect(self._on_massstab_changed)
|
||||||
main_layout.addWidget(self._massstab_combo)
|
main_layout.addWidget(self._massstab_combo)
|
||||||
|
|
||||||
ansicht_label = QLabel("Ansicht")
|
thema_label = QLabel("Thema")
|
||||||
ansicht_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
thema_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||||
main_layout.addWidget(ansicht_label)
|
main_layout.addWidget(thema_label)
|
||||||
|
|
||||||
self._ansicht_combo = QComboBox(self)
|
self._thema_combo = QComboBox(self)
|
||||||
self._ansicht_combo.addItem(ANSICHT_WIE_KARTENFENSTER)
|
self._thema_combo.addItem(THEMA_WIE_KARTENFENSTER)
|
||||||
self._ansicht_combo.addItems(self._get_gespeicherte_ansichten())
|
self._thema_combo.addItems(self._get_gespeicherte_themen())
|
||||||
self._ansicht_combo.currentTextChanged.connect(self._on_ansicht_changed)
|
self._thema_combo.currentTextChanged.connect(self._on_thema_changed)
|
||||||
main_layout.addWidget(self._ansicht_combo)
|
main_layout.addWidget(self._thema_combo)
|
||||||
|
|
||||||
main_layout.addStretch(1)
|
main_layout.addStretch(1)
|
||||||
self.setLayout(main_layout)
|
self.setLayout(main_layout)
|
||||||
|
|
||||||
def _restore_state(self) -> None:
|
def _restore_state(self) -> None:
|
||||||
"""Stellt die gespeicherten Combobox-Zustände wieder her."""
|
"""Stellt die gespeicherten Combobox-Zustände wieder her."""
|
||||||
if not self._thema_combo or not self._massstab_combo or not self._ansicht_combo:
|
if not self._kartenname_combo or not self._massstab_combo or not self._thema_combo:
|
||||||
return
|
return
|
||||||
|
|
||||||
saved_thema = get_variable(THEMA_VAR, scope="project")
|
saved_kartenname = get_variable(KARTENNAME_VAR, scope="project")
|
||||||
if saved_thema in (THEMA_38, THEMA_41):
|
if saved_kartenname in (KARTENNAME_38, KARTENNAME_41):
|
||||||
self._thema_combo.setCurrentText(saved_thema)
|
self._kartenname_combo.setCurrentText(saved_kartenname)
|
||||||
else:
|
else:
|
||||||
self._thema_combo.setCurrentText(THEMA_PLACEHOLDER)
|
self._kartenname_combo.setCurrentText(KARTENNAME_PLACEHOLDER)
|
||||||
|
|
||||||
saved_massstab = get_variable(MASSSTAB_VAR, scope="project")
|
saved_massstab = get_variable(MASSSTAB_VAR, scope="project")
|
||||||
valid_massstaebe = [MASSSTAB_WIE_KARTENFENSTER, *PLOTMASSSTAB_BY_AUSWAHL.keys()]
|
valid_massstaebe = [MASSSTAB_WIE_KARTENFENSTER, *PLOTMASSSTAB_BY_AUSWAHL.keys()]
|
||||||
@@ -148,25 +148,25 @@ class TabB(QWidget):
|
|||||||
else:
|
else:
|
||||||
self._massstab_combo.setCurrentText(MASSSTAB_WIE_KARTENFENSTER)
|
self._massstab_combo.setCurrentText(MASSSTAB_WIE_KARTENFENSTER)
|
||||||
|
|
||||||
aktuelle_themen = [ANSICHT_WIE_KARTENFENSTER, *self._get_gespeicherte_ansichten()]
|
aktuelle_themen = [THEMA_WIE_KARTENFENSTER, *self._get_gespeicherte_themen()]
|
||||||
self._ansicht_combo.clear()
|
self._thema_combo.clear()
|
||||||
self._ansicht_combo.addItems(aktuelle_themen)
|
self._thema_combo.addItems(aktuelle_themen)
|
||||||
|
|
||||||
saved_ansicht = get_variable(ANSICHT_VAR, scope="project")
|
saved_thema = get_variable(THEMA_VAR, scope="project")
|
||||||
if saved_ansicht in aktuelle_themen:
|
if saved_thema in aktuelle_themen:
|
||||||
self._ansicht_combo.setCurrentText(saved_ansicht)
|
self._thema_combo.setCurrentText(saved_thema)
|
||||||
else:
|
else:
|
||||||
self._ansicht_combo.setCurrentText(ANSICHT_WIE_KARTENFENSTER)
|
self._thema_combo.setCurrentText(THEMA_WIE_KARTENFENSTER)
|
||||||
|
|
||||||
def _on_thema_changed(self, value: str) -> None:
|
def _on_kartenname_changed(self, value: str) -> None:
|
||||||
"""Persistiert die Themenauswahl und setzt den Kartennamen."""
|
"""Persistiert die Kartennamen-Auswahl und setzt ``sn_kartenname``."""
|
||||||
if value in (THEMA_38, THEMA_41):
|
if value in (KARTENNAME_38, KARTENNAME_41):
|
||||||
set_variable(THEMA_VAR, value, scope="project")
|
set_variable(KARTENNAME_VAR, value, scope="project")
|
||||||
else:
|
else:
|
||||||
set_variable(THEMA_VAR, "", scope="project")
|
set_variable(KARTENNAME_VAR, "", scope="project")
|
||||||
|
|
||||||
if self.logic:
|
if self.logic:
|
||||||
self.logic.set_kartenname_for_thema(value)
|
self.logic.set_kartenname_for_auswahl(value)
|
||||||
|
|
||||||
def _on_massstab_changed(self, value: str) -> None:
|
def _on_massstab_changed(self, value: str) -> None:
|
||||||
"""Persistiert Maßstabsauswahl und setzt ``sn_plotmassstab``."""
|
"""Persistiert Maßstabsauswahl und setzt ``sn_plotmassstab``."""
|
||||||
@@ -175,9 +175,9 @@ class TabB(QWidget):
|
|||||||
if self.logic:
|
if self.logic:
|
||||||
self.logic.set_plotmassstab_for_auswahl(value, self._get_current_canvas_scale())
|
self.logic.set_plotmassstab_for_auswahl(value, self._get_current_canvas_scale())
|
||||||
|
|
||||||
def _on_ansicht_changed(self, value: str) -> None:
|
def _on_thema_changed(self, value: str) -> None:
|
||||||
"""Persistiert die Ansichtsauswahl und setzt ``sn_view``."""
|
"""Persistiert die Thema-Auswahl und setzt ``sn_view``."""
|
||||||
set_variable(ANSICHT_VAR, value, scope="project")
|
set_variable(THEMA_VAR, value, scope="project")
|
||||||
if self.logic:
|
if self.logic:
|
||||||
self.logic.set_view_for_auswahl(value)
|
self.logic.set_view_for_auswahl(value)
|
||||||
|
|
||||||
@@ -214,13 +214,13 @@ class TabB(QWidget):
|
|||||||
if signal is None:
|
if signal is None:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
signal.disconnect(self._refresh_ansicht_combo_live)
|
signal.disconnect(self._refresh_thema_combo_live)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
self._connected_theme_collection = None
|
self._connected_theme_collection = None
|
||||||
|
|
||||||
def _connect_theme_collection_signals(self) -> None:
|
def _connect_theme_collection_signals(self) -> None:
|
||||||
"""Verbindet Signale der Theme-Collection für Live-Aktualisierung der Ansichtsliste."""
|
"""Verbindet Signale der Theme-Collection für Live-Aktualisierung der Themenliste."""
|
||||||
if self._theme_signal_connected:
|
if self._theme_signal_connected:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ class TabB(QWidget):
|
|||||||
if signal is None:
|
if signal is None:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
signal.connect(self._refresh_ansicht_combo_live)
|
signal.connect(self._refresh_thema_combo_live)
|
||||||
connected_any = True
|
connected_any = True
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
@@ -247,29 +247,29 @@ class TabB(QWidget):
|
|||||||
self._connected_theme_collection = theme_collection
|
self._connected_theme_collection = theme_collection
|
||||||
self._theme_signal_connected = connected_any
|
self._theme_signal_connected = connected_any
|
||||||
|
|
||||||
def _refresh_ansicht_combo_live(self, *args) -> None:
|
def _refresh_thema_combo_live(self, *args) -> None:
|
||||||
"""Aktualisiert die Ansicht-Combobox bei Änderungen gespeicherter Layerthemen."""
|
"""Aktualisiert die Thema-Combobox bei Änderungen gespeicherter Layerthemen."""
|
||||||
_ = args
|
_ = args
|
||||||
if not self._ansicht_combo:
|
if not self._thema_combo:
|
||||||
return
|
return
|
||||||
|
|
||||||
vorherige_auswahl = self._ansicht_combo.currentText() or ANSICHT_WIE_KARTENFENSTER
|
vorherige_auswahl = self._thema_combo.currentText() or THEMA_WIE_KARTENFENSTER
|
||||||
eintraege = [ANSICHT_WIE_KARTENFENSTER, *self._get_gespeicherte_ansichten()]
|
eintraege = [THEMA_WIE_KARTENFENSTER, *self._get_gespeicherte_themen()]
|
||||||
|
|
||||||
self._ansicht_combo.blockSignals(True)
|
self._thema_combo.blockSignals(True)
|
||||||
self._ansicht_combo.clear()
|
self._thema_combo.clear()
|
||||||
self._ansicht_combo.addItems(eintraege)
|
self._thema_combo.addItems(eintraege)
|
||||||
|
|
||||||
if vorherige_auswahl in eintraege:
|
if vorherige_auswahl in eintraege:
|
||||||
self._ansicht_combo.setCurrentText(vorherige_auswahl)
|
self._thema_combo.setCurrentText(vorherige_auswahl)
|
||||||
else:
|
else:
|
||||||
self._ansicht_combo.setCurrentText(ANSICHT_WIE_KARTENFENSTER)
|
self._thema_combo.setCurrentText(THEMA_WIE_KARTENFENSTER)
|
||||||
self._ansicht_combo.blockSignals(False)
|
self._thema_combo.blockSignals(False)
|
||||||
|
|
||||||
self._on_ansicht_changed(self._ansicht_combo.currentText())
|
self._on_thema_changed(self._thema_combo.currentText())
|
||||||
|
|
||||||
def _get_gespeicherte_ansichten(self) -> list[str]:
|
def _get_gespeicherte_themen(self) -> list[str]:
|
||||||
"""Liefert die Namen der im Projekt gespeicherten Layerthemen."""
|
"""Liefert die Namen der im Projekt gespeicherten Layerthemen (QgsMapThemeCollection)."""
|
||||||
try:
|
try:
|
||||||
theme_collection = QgsProject.instance().mapThemeCollection()
|
theme_collection = QgsProject.instance().mapThemeCollection()
|
||||||
if theme_collection is None:
|
if theme_collection is None:
|
||||||
|
|||||||
Reference in New Issue
Block a user