# -*- coding: utf-8 -*- """ Basisklassen fuer TUI-Views. MainView und SubMainView definieren die Struktur fuer alle Bildschirmansichten im Config-Tool. """ from __future__ import annotations from typing import TYPE_CHECKING, ClassVar from textual.containers import VerticalScroll if TYPE_CHECKING: from trixy_core.config_app import ConfigConnection class MainView(VerticalScroll): """ Basisklasse fuer Hauptansichten. Jeder MainView repraesentiert eine F-Tasten-Ansicht (z.B. F1=Health, F2=Config). Klassenattribute: TITLE: Anzeige-Titel der Ansicht VIEW_ID: Eindeutige ID fuer Zuordnung """ TITLE: ClassVar[str] = "" VIEW_ID: ClassVar[str] = "" def __init__(self, connection: "ConfigConnection | None" = None, **kwargs) -> None: super().__init__(**kwargs) self._connection = connection @property def connection(self) -> "ConfigConnection | None": """Netzwerk-Verbindung zur Instanz.""" return self._connection @connection.setter def connection(self, value: "ConfigConnection | None") -> None: self._connection = value async def on_activate(self) -> None: """Hook: View wird aktiviert (sichtbar gemacht).""" pass async def on_deactivate(self) -> None: """Hook: View wird deaktiviert (versteckt).""" pass async def refresh_data(self) -> None: """Aktualisiert die angezeigten Daten.""" pass class SubMainView(MainView): """ Basisklasse fuer Unteransichten. Wird als Kind eines MainView verwendet und erweitert dessen Titel. Klassenattribute: PARENT_VIEW_ID: VIEW_ID des uebergeordneten Views SUBTITLE: Untertitel (wird an Parent-Titel angehaengt) """ PARENT_VIEW_ID: ClassVar[str] = "" SUBTITLE: ClassVar[str] = ""