Widgety
Widgety jsou nativní buildry plus stav konkrétního objektu. Python vytváří objekty a volá typované setter/getter API; C builder vlastní per-frame zpracování událostí, layout, resize a generování pixelů.
Systém builderů
Po core.init() zavolejte content_builder.register_standard(), abyste zaregistrovali všechny vestavěné buildry pod namespace `tuix`. Konstanty builderů jsou bytes odpovídající nativním názvům builderů, například content_builder.TEXT nebo content_builder.GRID.
Vytvoření widgetu
uid = objects.create_object(
content_builder.BUTTON,
b'Main',
0.25, 0.08, # width_mod, height_mod
0.1, 0.1 # margin_top_mod, margin_left_mod
)
button = objects.get_object_by_uid(uid)
objects.tuix_button_set_label(button, 'Run')Proporcionální geometrie
U běžných objektů jsou width_mod, height_mod, margin_top_mod a margin_left_mod zlomky velikosti terminálu. U layout dětí mohou parent buildry přepsat finální obdélníky pomocí layout slotů, grid placementu a layout rect API.
Kategorie widgetů
| Kategorie | Buildry | Poznámky |
|---|---|---|
| Basic display | TEXT, BOX, DIVIDER, BADGE, TAG, STATUS | Štítky, rámy, oddělovače a jednoduchý stylovaný text citlivý na grafémy. |
| Interactive controls | BUTTON, CLICKABLE_TEXT, CHOICE, INPUT, CHECKBOX, MENU | Widgety s podporou klávesnice a myši a query/take API pro stav. |
| Drawing | CANVAS | API pro ruční kreslení pixelů, čar, obdélníků, kruhů, textu a spritů. |
| Viewport widgets | SCROLL_CONTAINER, LIST_VIEW, TEXT_AREA | Widgety vlastnící scroll offsety, velikost obsahu a clipping. |
| Layout parents | ROW, COLUMN, SPLIT_PANE, GRID | Nativní kontejnery, které umisťují child buffery. |
| Modal UI | DIALOG | Tělo dialogu, backdrop, zachycení fokusu a stav požadavku na zavření. |
Zpracování vstupu
Vestavěné interaktivní widgety zpracovávají vstup z klávesnice a ukazatele během nativní frame smyčky. Aplikační logika čte a spotřebovává stav událostí widgetu pomocí jednorázových getterů (jako `tuix_button_take_pressed()`, `tuix_checkbox_take_changed()`, `tuix_choice_is_confirmed()`, `tuix_input_is_submitted()` nebo `tuix_listview_take_activated()`).
Snapshoty
Pro read-only inspekci používejte buffer.get_buffer_snapshot(...), buffer.get_buffer_snapshot_by_uid(...) a objects.get_object_snapshot_by_uid(...). Pro diagnostiku nespoléhejte na raw nativní ukazatele.