TUIX v0.5Beta
Změny v0.5 oproti v0.4
Tato stránka vypisuje předpoklady dokumentace v0.4, které se ve v0.5 změnily, a nová API, která se mají používat v novém kódu.
Zastaralé předpoklady z v0.4
| Předpoklad ve v0.4 | Aktualizace ve v0.5 | Důvod |
|---|---|---|
| Rozšířená sada builderů ve v0.4 byla hlavně sada samostatných widgetů. | v0.5 přidává layout parenty a viewport/modal widgety: Row, Column, SplitPane, Grid, Checkbox, ListView, TextArea a Dialog. | Knihovna nyní podporuje nativní vnořenou kompozici místo toho, aby aplikace ručně umisťovaly každý obdélník. |
| ScrollContainer byl dokumentován hlavně jako běžný widget. | ScrollContainer je nyní plnohodnotný vlastník viewportu s velikostí obsahu, offsetem, insets, clippingem, hitmapou a integrací routování vstupu. | Odscrollované děti potřebují vstup a hit testing odpovídající viditelnému obsahu, ne raw souřadnicím bufferu. |
| Dialogové/modální chování bylo nutné skládat z fokusu a vlastních widgetů. | Použijte DialogBuilder plus objects.tuix_dialog_* a scenes.activate_modal()/deactivate_modal(). | Modální UI potřebuje backdrop, zachycení fokusu, vlastnictví dětí, close flagy a izolaci vstupu jako jeden ucelený kontrakt. |
| Layout příklady často závisely na ruční proporcionální geometrii a parent_uid. | Použijte stack, splitpane, grid, layout-slot, layout-rect a grid-placement API. | Engine nyní umí počítat geometrii dětí parent-first a držet bufferovou hierarchii konzistentní s renderingem. |
| Routování myši bylo popisováno hlavně jako focus plus hitmap picking. | v0.5 přidává opravy pro intenzivní hover/drag, vlastnictví viewportu, obecné zachycení myši a capture API v engine. | Drag a scroll interakce musí dál dostávat události myši, i když pohyb ukazatele přejde přes hranice dětí. |
| Detaily vlastnictví pixelů nebyly v aplikačních docs viditelné. | v0.5 dokumentuje pixels_owned a bezpečnější core-owned kopie dočasných bufferů z builderů. | Resize, teardown, kompaktace a cleanup cachovaných pixelů potřebují explicitní pravidla vlastnictví kvůli bezpečnosti paměti. |
| Kompatibilní názvy byly promíchané s kanonickými názvy. | Docs nyní jasně označují kompatibilní aliasy jako menu_set_options, status_set_status, button_is_pressed, scroll_container_get_scroll_pos a box_set_color. | Starý kód dál funguje, zatímco nový kód má jasnější preferované API. |
Nový povrch API ve v0.5
- Layout buildry: builders.ROW, builders.COLUMN, builders.SPLITPANE, builders.SPLIT_PANE a builders.GRID.
- Viewport a modální widgety: builders.CHECKBOX, builders.LISTVIEW, builders.LIST_VIEW, builders.TEXTAREA, builders.TEXT_AREA a builders.DIALOG.
- Layout konstanty: AXIS_*, JUSTIFY_*, ALIGN_*, GRID_TRACK_FIXED a GRID_TRACK_WEIGHT.
- API scén: select_scene, aktivace modalu, transakce, statistiky a kompaktace.
- Buffer API: layout sloty, layout rect override, grid placement, bohatší snapshoty, pixels_owned a snapshoty podle UID.
- Object API: stack, splitpane, grid, checkbox, listview, textarea, dialog a viewport helpery ScrollContaineru.
- Engine API: get_core_loop_stats a helpery pro zachycení myši.
Doporučený migrační pattern
from tuix.core import engine, builders, scenes, objects, buffers, input
engine.init()
builders.register_standard()
scenes.init_scene('Main')
scenes.select_scene('Main')
input.listen()
# Prefer a layout parent over manual child positioning.
row_uid = objects.create_object(builders.ROW, 'Main', 0.9, 0.2, 0.05, 0.05)
row = objects.get_object_by_uid(row_uid)
objects.tuix_stack_set_gap(row, 2)
child_uid = objects.tuix_stack_add_object(row, 'Main', builders.TEXT, 1.0, 1.0)
buffers.set_buffer_layout_slot_by_uid(child_uid, grow=1.0, min_w=12)
engine.main_loop()
input.stop()
engine.shutdown()