from typing import Iterable, Sequence, Tuple, cast
from rich._win32_console import LegacyWindowsTerm, WindowsCoordinates from rich.segment import ControlCode, ControlType, Segment
def legacy_windows_render(buffer: Iterable[Segment], term: LegacyWindowsTerm) -> None: """Makes appropriate Windows Console API calls based on the segments in the buffer.
Args:
buffer (Iterable[Segment]): Iterable of Segments to convert to Win32 API calls.
term (LegacyWindowsTerm): Used to call the Windows Console API. """ for text, style, control in buffer: ifnot control: if style:
term.write_styled(text, style) else:
term.write_text(text) else:
control_codes: Sequence[ControlCode] = control for control_code in control_codes:
control_type = control_code[0] if control_type == ControlType.CURSOR_MOVE_TO:
_, x, y = cast(Tuple[ControlType, int, int], control_code)
term.move_cursor_to(WindowsCoordinates(row=y - 1, col=x - 1)) elif control_type == ControlType.CARRIAGE_RETURN:
term.write_text("\r") elif control_type == ControlType.HOME:
term.move_cursor_to(WindowsCoordinates(0, 0)) elif control_type == ControlType.CURSOR_UP:
term.move_cursor_up() elif control_type == ControlType.CURSOR_DOWN:
term.move_cursor_down() elif control_type == ControlType.CURSOR_FORWARD:
term.move_cursor_forward() elif control_type == ControlType.CURSOR_BACKWARD:
term.move_cursor_backward() elif control_type == ControlType.CURSOR_MOVE_TO_COLUMN:
_, column = cast(Tuple[ControlType, int], control_code)
term.move_cursor_to_column(column - 1) elif control_type == ControlType.HIDE_CURSOR:
term.hide_cursor() elif control_type == ControlType.SHOW_CURSOR:
term.show_cursor() elif control_type == ControlType.ERASE_IN_LINE:
_, mode = cast(Tuple[ControlType, int], control_code) if mode == 0:
term.erase_end_of_line() elif mode == 1:
term.erase_start_of_line() elif mode == 2:
term.erase_line() elif control_type == ControlType.SET_WINDOW_TITLE:
_, title = cast(Tuple[ControlType, str], control_code)
term.set_title(title)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.