Scény
Scéna je pojmenovaná kolekce bufferů a objektů. Renderuje se pouze vybraná scéna, ale neaktivní scény mohou zůstat v paměti pro rychlé přepnutí, sběr statistik nebo pozdější kompaktaci.
Životní cyklus scény
from tuix.core import scene
scene.init_scene(b'Main')
scene.select_scene(b'Main')
# later
scene.clear_scene(b'Main') # keep the scene, remove buffers
scene.free_scene(b'Main') # remove the sceneAktivní scéna
Pro explicitní přepínání scén používejte scene.select_scene(name). Proxy registry také vystavuje core.registry.current_scene_name kvůli kompatibilitě a nízkoúrovňovému řízení.
Focus a modální stav
Klávesnicový vstup se routuje přes focus scény. Dialogy a další modální flow mohou aktivovat modální UID, takže vstup je omezen na daný podstrom, dokud se modal nedeaktivuje.
scene.set_focus(b'Main', widget_uid)
scene.set_previous_focus(b'Main')
scene.activate_modal(b'Main', dialog_uid)
active = scene.get_active_modal(b'Main')
scene.deactivate_modal(b'Main', dialog_uid)Transakce
TUIX Core vystavuje transakce scén pro seskupení více aktualizací widgetů. Používejte je okolo dávek změn, které se mají potvrdit společně před dalším viditelným snímkem.
scene.begin_transaction(b'Main')
# update several widgets
scene.commit_transaction(b'Main')Statistiky a kompaktace
Scény sledují aktivitu a paměťové statistiky jako buffer_count, current_focus, last_active_frame, pixel_bytes a approx_heap_bytes. Kompaktace studených scén může uvolnit pixelové úložiště neaktivních scén a zachovat strukturu scény.
stats = scene.get_scene_stats(b'Main')
freed = scene.compact_scene_pixels(b'Main')
compacted_count = scene.compact_cold_scenes(
cold_frames=300,
min_pixel_bytes=1_000_000,
keep_active_scene=True,
)Hierarchie
Buffery mohou tvořit parent/child stromy. Layout buildry na této hierarchii stojí, aby parent kontejnery mohly přepočítat geometrii dětí před kompozicí. Self-parenting a cykly odmítá bufferová vrstva.