filter selection improved

This commit is contained in:
Dirk Alders 2025-07-25 00:02:00 +02:00
parent 88b826414a
commit 0506b5f02c

View File

@ -77,26 +77,31 @@ class OptionSelectList(dict):
def Toggle(self, entry_num): def Toggle(self, entry_num):
if entry_num < 0: if entry_num < 0:
self.__default_value__ = entry_num == -1 if not self.__selection_regex__:
self.__default_value__ = entry_num == -1
for key in self: for key in self:
self[key] = self.__default_value__ if self.__match__(key):
self[key] = entry_num == -1
elif entry_num > len(self): elif entry_num > len(self):
raise ValueError(f"The Entry '{entry} is not in the list") raise ValueError(f"The Entry '{entry} is not in the list")
else: else:
entry = self.__sorted_keys__()[entry_num] entry = self.__sorted_keys__()[entry_num]
self[entry] = not self[entry] self[entry] = not self[entry]
def __match__(self, key):
try:
match = len(re.findall(self.__selection_regex__, key)) > 0
except re.error:
match = True # No valid regular expression
return match
def GetSelectList(self): def GetSelectList(self):
rv = [] rv = []
if len(self) > 2: if len(self) > 2:
rv.append(('All', -1)) rv.append(('All', -1))
rv.append(('None', -2)) rv.append(('None', -2))
for index, key in enumerate(self.__sorted_keys__()): for index, key in enumerate(self.__sorted_keys__()):
try: if self.__match__(key):
match = len(re.findall(self.__selection_regex__, key)) > 0
except re.error:
match = True # No valid regular expression
if match:
prefix = "\\[X] " if self[key] else "\\[-] " prefix = "\\[X] " if self[key] else "\\[-] "
rv.append((prefix + key, index)) rv.append((prefix + key, index))
return rv return rv
@ -126,6 +131,7 @@ class LogViewerApp(App):
("q", "quit", "Quit"), ("q", "quit", "Quit"),
("c", "clear_screen", "Clear") ("c", "clear_screen", "Clear")
] ]
MAX_LOGS = 1000
def __init__(self): def __init__(self):
super().__init__() super().__init__()
@ -166,6 +172,8 @@ class LogViewerApp(App):
self.__level_select_list__.AddEntry(record.levelname) self.__level_select_list__.AddEntry(record.levelname)
self.__level_selection__.set_options(self.__level_select_list__.GetSelectList()) self.__level_selection__.set_options(self.__level_select_list__.GetSelectList())
self.all_logs.append(record) self.all_logs.append(record)
if len(self.all_logs) > self.MAX_LOGS:
self.all_logs = self.all_logs[-self.MAX_LOGS:]
self._apply_filters_to_log(record) self._apply_filters_to_log(record)
def _force(self, lvl: str) -> bool: def _force(self, lvl: str) -> bool: