Zpět na projekty
TUIX v0.1Alfa

Naposledy aktualizováno: 2026-05-20

Interní API

NestabilníInterní metody mají prefix _ a nejsou součástí veřejného API. Mohou se změnit nebo být odstraněny bez upozornění v jakékoli verzi. Nespoléhejte na ně v produkčním kódu.

Interní část Styles

_precompute_styles()

Spočítá a vrátí plně vyřešený slovník stylů aplikací aktivního presetu a následným překrytím non-None hodnot z custom_styles. Vrací deep copy výsledku.

# Called internally — returns merged styles dict
resolved = engine.styles._precompute_styles()

_cache_styles()

Volá _precompute_styles() a uloží výsledek do engine.styles.cached_styles. Volá se automaticky po každém set_custom_style(), remove_custom_style() nebo změně stylu.

Interní část RenderEngine

_wrap_and_center(text, max_width)

Zalomí text tak, aby se vešel do max_width znaků a horizontálně vycentruje blok. Zpracovává explicitní nové řádky. Vrací seznam vypaddingovaných stringů, každý přesně max_width znaků široký.

ParametrTypPopis
textstrText labelu pro zalomení a centrování
max_widthintMaximální šířka ve znacích (vnitřní šířka komponenty)

_draw_choice(obj, text)

Vykreslí kompletní choice komponentu: horní okraj, oblast textu labelu, oblast tlačítek a spodní okraj. Parametr text jsou předem zalomené řádky labelu. Po renderu volá engine.input.listen(choices) pro spuštění input smyčky.

_draw_buttons(*, obj, choices, max_width, max_height)

Renderuje interaktivní oblast tlačítek uvnitř choice boxu. Tlačítka jsou horizontálně centrovaná, více tlačítek v řádku je odděleno 4 mezerami. Vybrané tlačítko je zvýrazněno ANSI kódy z cache stylů. Dlouhé názvy tlačítek se dělí pomocí visual_width().

ParametrTypPopis
objdictSlovník komponenty
choiceslistSeznam choices (řádky slovníků tlačítek)
max_widthintVnitřní šířka pro oblast tlačítek
max_heightintMaximální počet řádků pro tlačítka

_handle_selection_change(key, choices)

Aktualizuje selected_row a selected_index podle směru klávesy ('up', 'down', 'left', 'right'). Omezí hodnoty do platných rozsahů. Zavolá _refresh() pro redraw.

_refresh(*, selected_row, selected_index)

Aktualizuje selection state RenderEnginu a spustí plný redraw vyčištěním obrazovky a voláním draw().

Interní část LayoutEngine

_compute_all()

Načte rozměry terminálu přes shutil.get_terminal_size() a spočítá x, y, margin_top, margin_left a rohové souřadnice pro všechny komponenty ve slovníku objects. Voláno automaticky z RenderEngine.draw().

Pro každou komponentu vypočtený layout obsahuje:

  • x: int(width_modifier * terminal_cols)
  • y: int(height_modifier * terminal_rows)
  • margin_top: custom → int(modifier * rows), centered → (rows - y) // 2
  • margin_left: custom → int(modifier * cols), centered → (cols - x) // 2
  • corners.top_left: (margin_left, margin_top)
  • corners.bottom_right: (margin_left + x, margin_top + y)

Interní část InputHandler

get_key()

Low-level detekce kláves specifická pro platformu. Na Windows používá msvcrt.getch() s dvoubajtovými sekvencemi šipek (prefix 0xE0). Na Unixu přepne terminál do raw režimu přes termios, čte přes select() s timeoutem 0.1 s a poté obnoví nastavení terminálu.

Návratová hodnotaWindows kódUnix sekvence
'up'0xE0 + 'H'\x1b[A
'down'0xE0 + 'P'\x1b[B
'right'0xE0 + 'M'\x1b[C
'left'0xE0 + 'K'\x1b[D
'enter'\r or \n\r or \n
NoneNebyla stisknuta klávesaNebyla stisknuta klávesa