base.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. """
  3. Basisklasse fuer Installer-Views.
  4. """
  5. from __future__ import annotations
  6. from typing import TYPE_CHECKING, ClassVar
  7. from textual.containers import VerticalScroll
  8. if TYPE_CHECKING:
  9. from ..config import InstallerConfig
  10. class InstallerView(VerticalScroll):
  11. """
  12. Basisklasse fuer alle Installer-Ansichten.
  13. Klassenattribute:
  14. TITLE: Anzeige-Titel der Ansicht
  15. VIEW_ID: Eindeutige ID fuer Zuordnung
  16. MODES: Liste der Modi in denen dieser View sichtbar ist
  17. """
  18. TITLE: ClassVar[str] = ""
  19. VIEW_ID: ClassVar[str] = ""
  20. MODES: ClassVar[list[str]] = ["server", "client", "standalone", "config"]
  21. def __init__(self, installer_config: InstallerConfig, **kwargs) -> None:
  22. super().__init__(**kwargs)
  23. self._config = installer_config
  24. @property
  25. def installer_config(self) -> InstallerConfig:
  26. """Zugriff auf die Installer-Konfiguration."""
  27. return self._config
  28. async def on_activate(self) -> None:
  29. """Hook: View wird aktiviert (sichtbar gemacht)."""
  30. pass
  31. async def on_deactivate(self) -> None:
  32. """Hook: View wird deaktiviert (versteckt)."""
  33. pass
  34. def validate(self) -> str | None:
  35. """
  36. Validiert die Eingaben dieses Views.
  37. Returns:
  38. Fehlermeldung oder None bei Erfolg.
  39. """
  40. return None