Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions archinstall/tui/menu_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,9 +231,15 @@ def set_action_for_all(self, action: Callable[[Any], Any]) -> None:
def items(self) -> list[MenuItem]:
pattern = self._filter_pattern.lower()
items = filter(lambda item: item.is_empty() or pattern in item.text.lower(), self._menu_items)
l_items = list(items)
l_items = sorted(items, key=self._items_score)
return l_items

def _items_score(self, item: MenuItem) -> int:
pattern = self._filter_pattern.lower()
if item.text.lower().startswith(pattern):
return 0
return 1

@property
def filter_pattern(self) -> str:
return self._filter_pattern
Expand All @@ -244,17 +250,17 @@ def has_filter(self) -> bool:
def set_filter_pattern(self, pattern: str) -> None:
self._filter_pattern = pattern
delattr(self, 'items') # resetting the cache
self._reload_focus_item()
self.focus_first()

def append_filter(self, pattern: str) -> None:
self._filter_pattern += pattern
delattr(self, 'items') # resetting the cache
self._reload_focus_item()
self.focus_first()

def reduce_filter(self) -> None:
self._filter_pattern = self._filter_pattern[:-1]
delattr(self, 'items') # resetting the cache
self._reload_focus_item()
self.focus_first()

def _reload_focus_item(self) -> None:
if len(self.items) > 0:
Expand Down Expand Up @@ -413,7 +419,7 @@ def get_view_items(self) -> list[list[MenuItem]]:

start, end = 0, 0

if len(self._view_items) == 0 or self._prev_row_idx == -1 or self._item_group.has_filter(): # initial setup or filter
if len(self._view_items) == 0 or self._prev_row_idx == -1 or focus_row_idx == 0: # initial setup
if focus_row_idx < self._total_rows:
start = 0
end = self._total_rows
Expand Down