Zpět na projekty
TUIX v0.1Alfa

Naposledy aktualizováno: 2026-05-20

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.

Klíčový konceptKomponenty jsou uložené v interním slovníku objects, indexovaném unikátními string ID. Každá komponenta má typ, layout parametry a vlastnosti specifické pro typ (label, choices, progress, default_text).

Typy komponent

TUIX Core podporuje tři typy komponent:

TypPopisSpecifické vlastnosti
choiceInteraktivní výběrové menu s navigací klávesnicílabel, choices
progress_barVizuální indikátor průběhu (0–100)label, progress
text_inputJednořádkové zadání textulabel, 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í

VlastnostPoužitelné typy
labelchoice, progress_bar, text_input
choiceschoice
progressprogress_bar
default_texttext_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:

ParametrVýchozí
width_modifier0.5
height_modifier0.5
margin_top_modifier0.0
margin_left_modifier0.0
margin_top_modecustom
margin_left_modecustom

Aktuální omezení

Renderování jedné komponentyAktuálně lze renderovat pouze jednu komponentu a plně je podporován jen typ choice. Komponenty progress_bar a text_input lze vytvořit a konfigurovat, ale zatím nemají render implementaci.
BudoucnostPlán: multi-component layouty, slidery, checkboxy a další interaktivní typy komponent.