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 scenes
scenes.init_scene('Main')
scenes.select_scene('Main')
# later
scenes.clear_scene('Main') # keep the scene, remove buffers
scenes.free_scene('Main') # remove the sceneAktivní scéna
Pro explicitní přepínání scén používejte scenes.select_scene(name). Proxy registry také vystavuje registry.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.
scenes.set_focus('Main', widget_uid)
scenes.set_previous_focus('Main')
scenes.activate_modal('Main', dialog_uid)
active = scenes.get_active_modal('Main')
scenes.deactivate_modal('Main', dialog_uid)Transakce
v0.5 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.
scenes.begin_transaction('Main')
# update several widgets
scenes.commit_transaction('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 = scenes.get_scene_stats('Main')
freed = scenes.compact_scene_pixels('Main')
compacted_count = scenes.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 ve v0.5 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.