base.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # -*- coding: utf-8 -*-
  2. """
  3. Basisklassen fuer TUI-Views.
  4. MainView und SubMainView definieren die Struktur
  5. fuer alle Bildschirmansichten im Config-Tool.
  6. """
  7. from __future__ import annotations
  8. from typing import TYPE_CHECKING, ClassVar
  9. from textual.containers import VerticalScroll
  10. if TYPE_CHECKING:
  11. from trixy_core.config_app import ConfigConnection
  12. class MainView(VerticalScroll):
  13. """
  14. Basisklasse fuer Hauptansichten.
  15. Jeder MainView repraesentiert eine F-Tasten-Ansicht
  16. (z.B. F1=Health, F2=Config).
  17. Klassenattribute:
  18. TITLE: Anzeige-Titel der Ansicht
  19. VIEW_ID: Eindeutige ID fuer Zuordnung
  20. """
  21. TITLE: ClassVar[str] = ""
  22. VIEW_ID: ClassVar[str] = ""
  23. def __init__(self, connection: "ConfigConnection | None" = None, **kwargs) -> None:
  24. super().__init__(**kwargs)
  25. self._connection = connection
  26. @property
  27. def connection(self) -> "ConfigConnection | None":
  28. """Netzwerk-Verbindung zur Instanz."""
  29. return self._connection
  30. @connection.setter
  31. def connection(self, value: "ConfigConnection | None") -> None:
  32. self._connection = value
  33. async def on_activate(self) -> None:
  34. """Hook: View wird aktiviert (sichtbar gemacht)."""
  35. pass
  36. async def on_deactivate(self) -> None:
  37. """Hook: View wird deaktiviert (versteckt)."""
  38. pass
  39. async def refresh_data(self) -> None:
  40. """Aktualisiert die angezeigten Daten."""
  41. pass
  42. class SubMainView(MainView):
  43. """
  44. Basisklasse fuer Unteransichten.
  45. Wird als Kind eines MainView verwendet und
  46. erweitert dessen Titel.
  47. Klassenattribute:
  48. PARENT_VIEW_ID: VIEW_ID des uebergeordneten Views
  49. SUBTITLE: Untertitel (wird an Parent-Titel angehaengt)
  50. """
  51. PARENT_VIEW_ID: ClassVar[str] = ""
  52. SUBTITLE: ClassVar[str] = ""