| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # -*- 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] = ""
|