header.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # -*- coding: utf-8 -*-
  2. """
  3. Installer-Header — Zeigt Titel, Version und Modus.
  4. """
  5. from __future__ import annotations
  6. from textual.widget import Widget
  7. from textual.app import RenderResult
  8. from rich.text import Text
  9. class InstallerHeader(Widget):
  10. """
  11. Header-Leiste: 'Trixy Installer v1.0.0 [server]'
  12. """
  13. DEFAULT_CSS = """
  14. InstallerHeader {
  15. dock: top;
  16. height: 1;
  17. background: $accent;
  18. color: $text;
  19. text-style: bold;
  20. }
  21. """
  22. def __init__(
  23. self,
  24. version: str = "1.0.0",
  25. mode: str = "server",
  26. **kwargs,
  27. ) -> None:
  28. super().__init__(**kwargs)
  29. self._version = version
  30. self._mode = mode
  31. self._subtitle = ""
  32. @property
  33. def subtitle(self) -> str:
  34. return self._subtitle
  35. @subtitle.setter
  36. def subtitle(self, value: str) -> None:
  37. self._subtitle = value
  38. self.refresh()
  39. def render(self) -> RenderResult:
  40. text = Text()
  41. text.append(f" Trixy Installer v{self._version} ", style="bold")
  42. text.append(f"[{self._mode}]", style="italic")
  43. if self._subtitle:
  44. text.append(f" — {self._subtitle}", style="")
  45. return text