Layout API
v0.5 přináší nativní layout buildry a API pro umístění dětí. Row a Column používají stack API, SplitPane řídí dva panely a Grid umisťuje děti do pevných nebo vážených tracků.
Row a Column
Row a Column jsou stack layout parenty. Připojte existující děti nebo vytvořte nové child objekty přes stack helpery a pak dolaďte gap, padding, justify, align a volitelnou barvu pozadí.
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)
objects.tuix_stack_set_padding(row, 1, 1, 1, 1)
objects.tuix_stack_set_justify(row, builders.JUSTIFY_SPACE_BETWEEN)
objects.tuix_stack_set_align(row, builders.ALIGN_STRETCH)
label_uid = objects.tuix_stack_add_object(row, 'Main', builders.TEXT, 1.0, 1.0)
buffers.set_buffer_layout_slot_by_uid(label_uid, grow=1.0, min_w=12)Override layout slotu
Layout slot popisuje, jak se dítě účastní parent layoutu. Podporuje grow, shrink, basis, min/max velikosti, align_self a grid placement pole.
| Funkce | Účel |
|---|---|
| buffers.set_buffer_layout_slot_by_uid(uid, ...) | Nastaví flex/grid slot hodnoty pro child buffer. |
| buffers.get_buffer_layout_slot_by_uid(uid) | Vrátí aktuální pole slotu jako dict. |
| buffers.set_buffer_layout_rect_by_uid(uid, left, top, width, height) | Nastaví explicitní override obdélníku v buňkách terminálu. |
| buffers.clear_buffer_layout_rect_by_uid(uid) | Zruší explicitní override obdélníku. |
Grid
Grid používá pevné a vážené tracky řádků/sloupců. Děti umisťujte přes buffers.set_buffer_grid_placement_by_uid(...) nebo grid poli v layout slotu.
grid_uid = objects.create_object(builders.GRID, 'Main', 0.9, 0.5, 0.35, 0.05)
grid = objects.get_object_by_uid(grid_uid)
objects.tuix_grid_set_columns(grid, [
(builders.GRID_TRACK_WEIGHT, 1),
(builders.GRID_TRACK_FIXED, 24),
])
objects.tuix_grid_set_rows(grid, [
(builders.GRID_TRACK_FIXED, 3),
(builders.GRID_TRACK_WEIGHT, 1),
])
objects.tuix_grid_set_gaps(grid, 1, 1)
child_uid = objects.tuix_grid_add_object(grid, 'Main', builders.TEXT, 1.0, 1.0)
buffers.set_buffer_grid_placement_by_uid(child_uid, row=1, col=0, row_span=1, col_span=2)SplitPane
SplitPane řídí dvě připojené děti. Nastavte orientaci, rozdělení poměrem nebo absolutními pixely, velikost dělítka, minimální velikosti panelů a barvy.
split_uid = objects.create_object(builders.SPLITPANE, 'Main', 0.9, 0.6, 0.2, 0.05)
split = objects.get_object_by_uid(split_uid)
objects.tuix_splitpane_set_orientation(split, builders.AXIS_HORIZONTAL)
objects.tuix_splitpane_set_split_ratio(split, 0.35)
objects.tuix_splitpane_set_min_sizes(split, 10, 10)Konstanty
| Konstanta | Význam |
|---|---|
| AXIS_HORIZONTAL / AXIS_VERTICAL | Orientace pro split pane a axis-aware widgety. |
| JUSTIFY_START / CENTER / END / SPACE_BETWEEN | Rozložení na hlavní ose pro Row a Column. |
| ALIGN_START / CENTER / END / STRETCH / AUTO | Zarovnání na vedlejší ose pro děti stacku. |
| GRID_TRACK_FIXED / GRID_TRACK_WEIGHT | Režimy velikosti grid tracků. |