API sestavovačů
Modul builders (tuix.core.builders) poskytuje konstanty pro čtyři vestavěné typy widgetů a helpery pro registraci. Ve v0.3 builderech navíc probíhá nativní zpracování vstupu přes callbacky.
builders.register_standard()
from tuix.core import builders
result = builders.register_standard()Zaregistruje všechny čtyři vestavěné sestavovače widgetů v enginu. Musí být voláno po engine.init() a před vytvořením jakýchkoli widgetů. Ve v0.3 jsou tyto builderey vstupně-aware a integrují se s automatickým zpracováním vstupu ve frame loopu.
| Návratová hodnota | Popis |
|---|---|
| int | 0 při úspěchu, -1 při neúspěchu |
Konstanty sestavovačů
Tyto bajtové řetězce určují typy widgetů při volání objects.create_object():
| Konstanta | Hodnota | Typ widgetu |
|---|---|---|
| builders.CANVAS | b"CanvasBuilder" | Volná kreslicí plocha s kontrolou na úrovni pixelů |
| builders.CHOICE | b"ChoiceBuilder" | Výběrové menu ovládané klávesnicí |
| builders.INPUT | b"InputBuilder" | Jednořádkový textový vstup s kurzorem |
| builders.PROGRESSBAR | b"ProgressBarBuilder" | Animovaný indikátor průběhu s přizpůsobitelným stylem |
Použití
from tuix.core import builders, objects
# Create one of each widget type
progressbar_uid = objects.create_object(builders.PROGRESSBAR, b"main", 0.5, 0.1, 0.0, 0.25)
choice_uid = objects.create_object(builders.CHOICE, b"main", 0.4, 0.5, 0.2, 0.3)
input_uid = objects.create_object(builders.INPUT, b"main", 0.4, 0.1, 0.8, 0.3)
canvas_uid = objects.create_object(builders.CANVAS, b"main", 1.0, 1.0, 0.0, 0.0)Vnitřnosti sestavovačů
Každý sestavovač je C struktura (TuixBuilder) s metadaty a pěti ukazateli na callbacky:
| Callback | Účel |
|---|---|
| create_state | Alokuje a inicializuje stav widgetu |
| destroy_state | Uvolní stav widgetu |
| handler_func | Logika aktualizace na snímek, včetně nativního zpracování vstupu |
| build_content | Vykreslí stav widgetu do pixelového bufferu |
| on_resize | Volitelné: volá se při změně rozměrů terminálu |
Sestavovače se vyhledávají podle jména lineárním průchodem (tuix_get_builder_by_name). Při pouhých čtyřech vestavěných sestavovačích je to prakticky O(1).