ComponentAPI
Třída ComponentAPI spravuje životní cyklus UI objektů. Je dostupná přes engine.components a poskytuje metody pro vytváření, konfiguraci, získávání a mazání komponent.
Typy komponent
TUIX Core podporuje tři typy komponent:
| Typ | Popis | Specifické vlastnosti |
|---|---|---|
| choice | Interaktivní výběrové menu s navigací klávesnicí | label, choices |
| progress_bar | Vizuální indikátor průběhu (0–100) | label, progress |
| text_input | Jednořádkové zadání textu | label, default_text |
Vytváření komponent
Použijte create(type, id) pro registraci nové komponenty. Vyhodí ValueError, pokud ID už existuje nebo je typ neznámý.
engine.components.create('choice', 'my_menu')
engine.components.create('progress_bar', 'loader')
engine.components.create('text_input', 'name_field')Každá vytvořená komponenta je inicializována s výchozími layout parametry: width_modifier=0.5, height_modifier=0.5, margin_top_modifier=0.0, margin_left_modifier=0.0 a oba margin módy nastaveny na 'custom'.
Nastavení vlastností
Použijte set_property(id, param, value) pro konfiguraci komponenty. Metoda ověří, že parametr existuje a je použitelný pro daný typ komponenty.
# Choice menu
engine.components.set_property(id='my_menu', param='label', value='Pick one:')
engine.components.set_property(id='my_menu', param='choices', value=[
[{'name': 'Option A', 'action': 'a'}],
[{'name': 'Option B', 'action': 'b'}, {'name': 'Option C', 'action': 'c'}]
])
# Progress bar
engine.components.set_property(id='loader', param='progress', value=75)
# Text input
engine.components.set_property(id='name_field', param='default_text', value='John')Kompatibilita vlastností
| Vlastnost | Použitelné typy |
|---|---|
| label | choice, progress_bar, text_input |
| choices | choice |
| progress | progress_bar |
| default_text | text_input |
Struktura choices
Vlastnost choices je seznam řádků. Každý řádek je seznam slovníků tlačítek s klíči 'name' (zobrazovaný text) a 'action' (identifikátor). Tlačítka ve stejném řádku se vykreslují vedle sebe, různé řádky se zobrazí na samostatných řádcích.
# Two rows: first has 2 buttons, second has 1 button
choices = [
[{'name': 'Save', 'action': 'save'}, {'name': 'Load', 'action': 'load'}],
[{'name': 'Quit', 'action': 'quit'}]
]Získání a smazání
Použijte get(id) pro získání slovníku komponenty a delete(id) pro odstranění. Obě metody vyhodí ValueError, pokud ID neexistuje.
obj = engine.components.get('my_menu')
print(obj['type']) # 'choice'
engine.components.delete('my_menu')Výchozí layout parametry
Každá komponenta je vytvořena s následujícími výchozími layout hodnotami:
| Parametr | Výchozí |
|---|---|
| width_modifier | 0.5 |
| height_modifier | 0.5 |
| margin_top_modifier | 0.0 |
| margin_left_modifier | 0.0 |
| margin_top_mode | custom |
| margin_left_mode | custom |