feature/Druck_tab #14

Merged
Daniel merged 11 commits from feature/Druck_tab into unstable 2026-03-20 22:58:48 +01:00
Showing only changes of commit 6a4c7b4609 - Show all commits

View File

@@ -66,11 +66,13 @@ class TabB(QWidget):
self._massstab_combo: Optional[QComboBox] = None
self._ansicht_combo: Optional[QComboBox] = None
self._theme_signal_connected = False
self._connected_theme_collection: object = None # Referenz für sauberes Trennen
self._build_ui()
self._restore_state()
self._connect_theme_collection_signals()
self._connect_project_signals()
def set_services(self, pruefmanager: Pruefmanager, data_grabber: DataGrabber) -> None:
"""Injiziert Services vom übergeordneten DockWidget."""
@@ -179,6 +181,44 @@ class TabB(QWidget):
if self.logic:
self.logic.set_view_for_auswahl(value)
def _connect_project_signals(self) -> None:
"""Verbindet QgsProject-Signale für Projektwechsel/-neuladen."""
project = QgsProject.instance()
for signal_name in ("readProject", "newProjectCreated", "cleared"):
signal = getattr(project, signal_name, None)
if signal is None:
continue
try:
signal.connect(self._on_project_changed)
except Exception:
pass
def _on_project_changed(self, *args) -> None:
"""Reagiert auf Projektwechsel: Signale neu binden, Combobox und State auffrischen."""
_ = args
# Alte Theme-Collection-Signals zuerst trennen
self._disconnect_theme_collection_signals()
# Neu verbinden für das jetzt geladene Projekt
self._theme_signal_connected = False
self._connect_theme_collection_signals()
# Ansicht-Liste + gespeicherten State wiederherstellen
self._restore_state()
def _disconnect_theme_collection_signals(self) -> None:
"""Trennt Signale der alten Theme-Collection sauber."""
collection = self._connected_theme_collection
if collection is None:
return
for signal_name in ("mapThemesChanged", "changed", "themeChanged"):
signal = getattr(collection, signal_name, None)
if signal is None:
continue
try:
signal.disconnect(self._refresh_ansicht_combo_live)
except Exception:
pass
self._connected_theme_collection = None
def _connect_theme_collection_signals(self) -> None:
"""Verbindet Signale der Theme-Collection für Live-Aktualisierung der Ansichtsliste."""
if self._theme_signal_connected:
@@ -203,6 +243,8 @@ class TabB(QWidget):
except Exception:
pass
if connected_any:
self._connected_theme_collection = theme_collection
self._theme_signal_connected = connected_any
def _refresh_ansicht_combo_live(self, *args) -> None: