Zpět na projekty
TUIX v0.5Beta

Naposledy aktualizováno: 2026-05-20

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.4Aktualizace ve v0.5Dů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()