| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- # -*- coding: utf-8 -*-
- """
- Menuekontext fuer F-Tasten-Verwaltung.
- Verwaltet die Zuordnung von Funktionstasten zu Views
- und deren Anzeige in der Footer-Leiste.
- """
- from dataclasses import dataclass, field
- @dataclass
- class MenuBinding:
- """Bindung einer Funktionstaste an einen View."""
- key: str # z.B. "f1", "f2"
- label: str # Anzeigename, z.B. "Health"
- view_id: str # ID des zugehoerigen Views
- enabled: bool = True
- class MenuContext:
- """
- Verwaltet F-Tasten-Bindungen fuer die TUI.
- Wird von TrixyTUI genutzt, um die Footer-Leiste
- und View-Umschaltung zu steuern.
- """
- def __init__(self) -> None:
- self._bindings: dict[str, MenuBinding] = {}
- def add(self, binding: MenuBinding) -> None:
- """Fuegt eine Bindung hinzu."""
- self._bindings[binding.key] = binding
- def remove(self, key: str) -> None:
- """Entfernt eine Bindung."""
- self._bindings.pop(key, None)
- def get(self, key: str) -> MenuBinding | None:
- """Gibt eine Bindung zurueck."""
- return self._bindings.get(key)
- def get_all(self) -> list[MenuBinding]:
- """Gibt alle Bindungen numerisch sortiert zurueck."""
- def _sort_key(b: MenuBinding) -> int:
- # "f1" -> 1, "f10" -> 10, etc.
- try:
- return int(b.key[1:])
- except (ValueError, IndexError):
- return 99
- return sorted(self._bindings.values(), key=_sort_key)
- def get_view_id(self, key: str) -> str | None:
- """Gibt die View-ID fuer eine Taste zurueck."""
- binding = self._bindings.get(key)
- if binding and binding.enabled:
- return binding.view_id
- return None
|