diff --git a/archinstall/tui/curses_menu.py b/archinstall/tui/curses_menu.py index 8e847273..8cc4f425 100644 --- a/archinstall/tui/curses_menu.py +++ b/archinstall/tui/curses_menu.py @@ -25,15 +25,15 @@ if TYPE_CHECKING: class AbstractCurses(metaclass=ABCMeta): - def __init__(self): + def __init__(self) -> None: self._help_window: Optional[Viewport] = None self._set_help_viewport() @abstractmethod - def resize_win(self): + def resize_win(self) -> None: pass - def clear_help_win(self): + def clear_help_win(self) -> None: if self._help_window: self._help_window.erase() @@ -41,7 +41,7 @@ class AbstractCurses(metaclass=ABCMeta): def kickoff(self, win: 'curses._CursesWindow') -> Result: pass - def _set_help_viewport(self): + def _set_help_viewport(self) -> None: max_height, max_width = tui.max_yx width = max_width - 10 height = max_height - 10 @@ -73,7 +73,7 @@ class AbstractCurses(metaclass=ABCMeta): def help_entry(self) -> ViewportEntry: return ViewportEntry(str(_('Press Ctrl+h for help')), 0, 0, STYLE.NORMAL) - def _show_help(self): + def _show_help(self) -> None: if not self._help_window: return @@ -118,10 +118,10 @@ class AbstractCurses(metaclass=ABCMeta): @dataclass class AbstractViewport: - def __init__(self): + def __init__(self) -> None: pass - def add_str(self, screen: Any, row: int, col: int, text: str, color: STYLE): + def add_str(self, screen: Any, row: int, col: int, text: str, color: STYLE) -> None: try: screen.addstr(row, col, text, tui.get_color(color)) except curses.error: @@ -214,7 +214,7 @@ class AbstractViewport: dim: _FrameDim, h_bar: str, scroll_pct: Optional[int] = None - ): + ) -> ViewportEntry: if scroll_pct is None: bottom = Chars.Lower_left + h_bar + Chars.Lower_right else: @@ -290,7 +290,7 @@ class EditViewport(AbstractViewport): y_start: int, process_key: Callable[[int], int], frame: FrameProperties - ): + ) -> None: super().__init__() self._max_height, self._max_width = tui.max_yx @@ -308,7 +308,7 @@ class EditViewport(AbstractViewport): self._init_wins() - def _init_wins(self): + def _init_wins(self) -> None: self._main_win = curses.newwin(self.height, self.width, self.y_start, self.x_start) self._main_win.nodelay(False) @@ -319,7 +319,7 @@ class EditViewport(AbstractViewport): self.x_start + 1 ) - def update(self): + def update(self) -> None: if not self._main_win: return @@ -337,12 +337,12 @@ class EditViewport(AbstractViewport): self._main_win.refresh() - def erase(self): + def erase(self) -> None: if self._main_win: self._main_win.erase() self._main_win.refresh() - def edit(self): + def edit(self) -> None: if not self._edit_win or not self._main_win: return @@ -373,7 +373,7 @@ class Viewport(AbstractViewport): y_start: int, enable_scroll: bool = False, frame: Optional[FrameProperties] = None - ): + ) -> None: super().__init__() self.width = width @@ -389,7 +389,7 @@ class Viewport(AbstractViewport): def getch(self): return self._main_win.getch() - def erase(self): + def erase(self) -> None: self._main_win.erase() self._main_win.refresh() @@ -398,7 +398,7 @@ class Viewport(AbstractViewport): entries: List[ViewportEntry], cursor_pos: int = 0, scroll_pos: Optional[int] = 0 - ): + ) -> None: visible_rows, percentage = self._find_visible_rows(entries, cursor_pos, scroll_pos) if self._frame: @@ -529,7 +529,7 @@ class EditMenu(AbstractCurses): self._last_state: Optional[Result] = None self._help_active = False - def _init_viewports(self): + def _init_viewports(self) -> None: x_offset = 0 y_offset = 0 edit_width = 50 @@ -565,10 +565,10 @@ class EditMenu(AbstractCurses): self._clear_all() return result - def resize_win(self): + def resize_win(self) -> None: self._draw() - def _clear_all(self): + def _clear_all(self) -> None: if self._help_vp: self._help_vp.erase() if self._header_vp: @@ -592,7 +592,7 @@ class EditMenu(AbstractCurses): return text - def _draw(self): + def _draw(self) -> None: if self._help_vp: self._help_vp.update([self.help_entry()], 0) @@ -767,10 +767,10 @@ class SelectMenu(AbstractCurses): if self._handle_interrupt(): return Result(ResultType.Reset, None) - def resize_win(self): + def resize_win(self) -> None: self._draw() - def _clear_all(self): + def _clear_all(self) -> None: self.clear_help_win() if self._header_vp: @@ -791,7 +791,7 @@ class SelectMenu(AbstractCurses): return [] - def _init_viewports(self, arg_prev_size: float | Literal['auto']): + def _init_viewports(self, arg_prev_size: float | Literal['auto']) -> None: footer_height = 2 # possible filter at the bottom y_offset = 0 @@ -862,7 +862,7 @@ class SelectMenu(AbstractCurses): return prev_size - def _draw(self): + def _draw(self) -> None: footer_entries = self._footer_entries() vp_entries = self._get_row_entries() @@ -890,7 +890,7 @@ class SelectMenu(AbstractCurses): viewport: Viewport, entries: List[ViewportEntry], cursor_pos: int = 0 - ): + ) -> None: if entries: viewport.update(entries, cursor_pos=cursor_pos) else: @@ -994,7 +994,7 @@ class SelectMenu(AbstractCurses): return entries - def _update_preview(self): + def _update_preview(self) -> None: if not self._preview_vp: return @@ -1017,7 +1017,7 @@ class SelectMenu(AbstractCurses): self._preview_vp.update(entries, scroll_pos=self._prev_scroll_pos) - def _calc_prev_scroll_pos(self, entries: List[ViewportEntry]): + def _calc_prev_scroll_pos(self, entries: List[ViewportEntry]) -> None: total_rows = max([e.row for e in entries]) + 1 # rows start with 0 and we need the count if self._prev_scroll_pos >= total_rows: @@ -1134,7 +1134,7 @@ class SelectMenu(AbstractCurses): self._draw() return None - def _focus_item(self, key: MenuKeys): + def _focus_item(self, key: MenuKeys) -> None: focus_item = self._item_group.focus_item next_row = 0 next_col = 0 @@ -1178,14 +1178,14 @@ class SelectMenu(AbstractCurses): class Tui: - def __init__(self): + def __init__(self) -> None: self._screen: Any = None self._colors: Dict[str, int] = {} self._component: Optional[AbstractCurses] = None signal.signal(signal.SIGWINCH, self._sig_win_resize) - def init(self): + def init(self) -> None: self._screen = curses.initscr() curses.noecho() @@ -1212,7 +1212,7 @@ class Tui: def run(self, component: AbstractCurses) -> Result: return self._main_loop(component) - def _sig_win_resize(self, signum: int, frame): + def _sig_win_resize(self, signum: int, frame) -> None: if self._component: self._component.resize_win() @@ -1220,14 +1220,14 @@ class Tui: self._screen.refresh() return component.kickoff(self._screen) - def _reset_terminal(self): + def _reset_terminal(self) -> None: os.system("reset") - def _soft_clear_terminal(self): + def _soft_clear_terminal(self) -> None: print(chr(27) + "[2J", end="") print(chr(27) + "[1;1H", end="") - def _set_up_colors(self): + def _set_up_colors(self) -> None: curses.init_pair(STYLE.NORMAL.value, curses.COLOR_WHITE, curses.COLOR_BLACK) curses.init_pair(STYLE.CURSOR_STYLE.value, curses.COLOR_CYAN, curses.COLOR_BLACK) curses.init_pair(STYLE.MENU_STYLE.value, curses.COLOR_WHITE, curses.COLOR_BLUE) diff --git a/archinstall/tui/menu_item.py b/archinstall/tui/menu_item.py index d2e66b51..6b1602b6 100644 --- a/archinstall/tui/menu_item.py +++ b/archinstall/tui/menu_item.py @@ -63,7 +63,7 @@ class MenuItemGroup: _filter_pattern: str = '' - def __post_init__(self): + def __post_init__(self) -> None: if len(self.menu_items) < 1: raise ValueError('Menu must have at least one item') @@ -118,19 +118,19 @@ class MenuItemGroup: def filter_pattern(self): return self._filter_pattern - def set_filter_pattern(self, pattern: str): + def set_filter_pattern(self, pattern: str) -> None: self._filter_pattern = pattern self.reload_focus_itme() - def append_filter(self, pattern: str): + def append_filter(self, pattern: str) -> None: self._filter_pattern += pattern self.reload_focus_itme() - def reduce_filter(self): + def reduce_filter(self) -> None: self._filter_pattern = self._filter_pattern[:-1] self.reload_focus_itme() - def set_focus_item_index(self, index: int): + def set_focus_item_index(self, index: int) -> None: items = self.items non_empty_items = [item for item in items if not item.is_empty()] if index < 0 or index >= len(non_empty_items): @@ -141,14 +141,14 @@ class MenuItemGroup: self.focus_item = item return - def reload_focus_itme(self): + def reload_focus_itme(self) -> None: if self.focus_item not in self.items: self.focus_first() def is_item_selected(self, item: MenuItem) -> bool: return item in self.selected_items - def select_current_item(self): + def select_current_item(self) -> None: if self.focus_item: if self.focus_item in self.selected_items: self.selected_items.remove(self.focus_item) @@ -179,17 +179,17 @@ class MenuItemGroup: rev_items = list(reversed(items)) return self._first(rev_items, ignore_empty) - def focus_first(self): + def focus_first(self) -> None: first_item = self.get_first_item() if first_item: self.focus_item = first_item - def focus_last(self): + def focus_last(self) -> None: last_item = self.get_last_item() if last_item: self.focus_item = last_item - def focus_prev(self, skip_empty: bool = True): + def focus_prev(self, skip_empty: bool = True) -> None: items = self.items if self.focus_item not in items: @@ -203,7 +203,7 @@ class MenuItemGroup: if self.focus_item.is_empty() and skip_empty: self.focus_prev(skip_empty) - def focus_next(self, skip_empty: bool = True): + def focus_next(self, skip_empty: bool = True) -> None: items = self.items if self.focus_item not in items: