Přehled TUIX Core v0.5
TUIX je modulární terminálový UI engine inspirovaný webovými technologiemi. Nabízí komponentový model podobný DOM, systém vnořeného layoutu, viewport-aware pipeline pro vstup a renderování a bufferový renderer pro strukturovaná terminálová rozhraní.
Verze 0.5 zachovává nízkoúrovňové jádro C + Cython, ale zaměřuje se na kompozici a stabilitu: bezpečnější vlastnictví pixelů, zpevnění resize a teardown cest, nižší lock contention v renderovací cestě, row/column/split/grid layout buildry, viewport widgety, modální dialogy, transakce scén, bohatší snapshoty a zachycení myši.
Architektura
Runtime je rozdělen do tří vrstev: nativní C engine pro buffery, layout, hitmapy, kompozici, diffing a terminálový výstup; Cython bridge pro rychlá volání bindingů; a Python moduly pro životní cyklus scén, tvorbu objektů, konfiguraci widgetů, snapshoty a řízení aplikace.
Každý snímek směruje vstup, vyřeší geometrii, nechá buildry aktualizovat stav a obsah, složí viditelné buffery a podle možností zapisuje jen rozdíly viditelné v terminálu.
Vestavěné typy widgetů
| Widget | Název builderu | Popis |
|---|---|---|
| Progressbar | ProgressBarBuilder | Vodorovný ukazatel průběhu s nastavitelnou hodnotou, znaky výplně/prázdna, barvami a volitelným procentem. |
| Choice | ChoiceBuilder | Seznam voleb ovladatelný klávesnicí se stavem potvrzení. |
| Input | InputBuilder | Jednořádkový textový vstup s placeholderem, pohybem kurzoru a stavem odeslání. |
| Canvas | CanvasBuilder | Volná kreslicí plocha pro pixely, primitiva, text, raw buffery a cachované sprity. |
| Text | TextBuilder | Vložený text s runtime řízením barvy popředí a pozadí. |
| Box | BoxBuilder | Rámovaný kontejner s titulkem, okrajem a barvami pozadí. |
| Divider | DividerBuilder | Vodorovný nebo svislý oddělovač s vlastním symbolem a barvou. |
| Badge | BadgeBuilder | Kompaktní štítek s paletou popředí/pozadí. |
| Button | ButtonBuilder | Klikatelné a klávesnicí aktivovatelné tlačítko se spotřebovatelným stavem stisku. |
| Tag | TagBuilder | Štítek typu chip s nastavitelnými závorkami a barvami. |
| Status | StatusBuilder | Stavový štítek IDLE/OK/WARN/ERROR s nastavitelnou paletou. |
| Menu | MenuBuilder | Interaktivní menu s titulkem, výběrem položek a stavem aktivace. |
| ScrollContainer | ScrollContainerBuilder | Kontejner založený na viewportu s virtuální velikostí obsahu, offsety a helpery pro připojení dětí. |
| Row | RowBuilder | Vodorovný stack layout parent s gapem, paddingem, justify, align a sloty dětí. |
| Column | ColumnBuilder | Svislý stack layout parent používající stejné stack API jako Row. |
| SplitPane | SplitPaneBuilder | Dvou-panelový layout s orientací, rozdělením poměrem/pixely, velikostí dělítka a minimy panelů. |
| Grid | GridBuilder | Grid layout s pevnými a váženými řádky/sloupci, gapy, paddingem a override umístění. |
| Checkbox | CheckboxBuilder | Přepínač s popiskem, checked/disabled stavem a spotřebovatelným příznakem změny. |
| ListView | ListViewBuilder | Virtuální seznam nad viewportem s výběrem a aktivací. |
| TextArea | TextAreaBuilder | Víceřádkový editor nad viewportem s titulkem, placeholderem, textem a read-only režimem. |
| Dialog | DialogBuilder | Modální dialog s backdropem, zachycením fokusu, velikostí těla, paddingem, barvami a zavíráním. |
Mapa modulů
| Modul | Účel |
|---|---|
| tuix.core.engine | Životní cyklus enginu, jedno-snímkový main loop, statistiky smyčky a zachycení myši. |
| tuix.core.scenes | Tvorba a výběr scén, focus, modální stav, transakce, statistiky a kompaktace. |
| tuix.core.registry | Ukazatel aktivní scény a zrcadlený nízkoúrovňový stav registry. |
| tuix.core.builders | Konstanty builderů, layout/grid konstanty a standardní registrace. |
| tuix.core.objects | Tvorba objektů a runtime API pro widgety, layouty, viewporty a modály. |
| tuix.core.buffers | Hierarchie bufferů, z-index, layout sloty, grid placement, snapshoty a uvolňování. |
| tuix.core.input | Input listener a spotřebovávající/nespotřebovávající snapshoty. |
Co je nového ve 0.5
- Kontrakt vnořeného layoutu s TuixLayoutSlot, TuixLayoutRect, parent-first rebuildem podstromů a per-child slot/grid override.
- Nové Row, Column, SplitPane a Grid buildry pro nativní kompozici layoutu.
- Nové widgety Checkbox, ListView, TextArea a Dialog.
- Scrollable kontejnery se nyní účastní viewport-aware geometrie, hitmapy, kompozitoru a routování vstupu.
- Zpevnění vlastnictví bufferů pomocí pixels_owned, bezpečnější dočasné buffery z builderů, opravy resize a teardown cest.
- Nižší lock contention v renderovací cestě díky spouštění builder callbacků mimo globální registry lock tam, kde to snapshoty a kopie umožňují.
- Python bindingy nyní pokrývají výběr scén, transakce, aktivaci modálů, zachycení myši, layout/grid override, bohatší snapshoty a viewport/widget API.
Známá omezení
- TUIX Core zůstává nízkoúrovňový engine, ne vysokoúrovňový aplikační framework.
- Chybí vestavěný systém témat/stylů nad rámec stylování jednotlivých widgetů.
- Hlavní smyčka je synchronní; integrace s async smyčkou není vestavěná.