TUIX v0.4Beta
API sestavovačů
Modul builders (tuix.core.builders) poskytuje konstanty pro vestavěné typy widgetů a helpery pro registraci. Ve v0.4 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 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.4 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.PROGRESSBAR | b"ProgressBarBuilder" | Horizontální plnící pruh s vlastními znaky a barvami |
| builders.CHOICE | b"ChoiceBuilder" | Seznamové menu ovládané klávesnicí |
| builders.INPUT | b"InputBuilder" | Jednořádkový textový vstup s podporou placeholderu |
| builders.CANVAS | b"CanvasBuilder" | Volná kreslicí plocha pro pixely, čáry, obdélníky, kruhy, text a sprity |
| builders.TEXT | b"TextBuilder" | Vložený text s průběžnou aktualizací fg/bg barev |
| builders.BOX | b"BoxBuilder" | Rámovaný kontejner s titulkem a ovládáním barev |
| builders.DIVIDER | b"DividerBuilder" | Horizontální nebo vertikální oddělovač s vlastním symbolem a barvou |
| builders.BADGE | b"BadgeBuilder" | Kompaktní štítek s paletou popředí/pozadí |
| builders.BUTTON | b"ButtonBuilder" | Klikatelné tlačítko aktivovatelné klávesnicí |
| builders.ICON | b"IconBuilder" | Vycentrovaný symbol/ikona s nastavitelnými barvami |
| builders.TAG | b"TagBuilder" | Štítek ve stylu chipu s nastavitelnými závorkami |
| builders.STATUS | b"StatusBuilder" | Widget pro zobrazení stavu IDLE/OK/WARN/ERROR |
| builders.MENU | b"MenuBuilder" | Interaktivní menu s výběrem klávesnicí a myší |
| builders.SCROLL_CONTAINER | b"ScrollContainerBuilder" | Posuvné okno nad virtuálním obsahem |
Použití
from tuix.core import builders, objects
# Create a mix of built-in widget types
text_uid = objects.create_object(builders.TEXT, b"main", 0.3, 0.1, 0.0, 0.0)
box_uid = objects.create_object(builders.BOX, b"main", 0.4, 0.3, 0.1, 0.1)
button_uid = objects.create_object(builders.BUTTON, b"main", 0.2, 0.1, 0.5, 0.1)
menu_uid = objects.create_object(builders.MENU, b"main", 0.3, 0.4, 0.1, 0.5)
scroll_uid = objects.create_object(builders.SCROLL_CONTAINER, b"main", 0.5, 0.5, 0.4, 0.3)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 |
Vstupní model ve v0.4Ruční volání jako objects.tuix_choice_feed_input() a objects.tuix_input_feed_input() jsou kvůli kompatibilitě stále dostupná, ale standardní flow ve v0.4 je automatické zpracování vstupu přes builder callbacky a routování fokusu přes hitmapu.
Sestavovače se vyhledávají podle jména lineárním průchodem (tuix_get_builder_by_name). Při malé pevné sadě vestavěných sestavovačů je to prakticky O(1).