diff --git a/mqtt_sniffer.py b/mqtt_sniffer.py index ff0511a..d5621a7 100644 --- a/mqtt_sniffer.py +++ b/mqtt_sniffer.py @@ -62,26 +62,31 @@ class OptionSelectList(dict): def Toggle(self, entry_num): 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: - self[key] = self.__default_value__ + if self.__match__(key): + self[key] = entry_num == -1 elif entry_num > len(self): raise ValueError(f"The Entry '{entry} is not in the list") else: entry = self.__sorted_keys__()[entry_num] 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): rv = [] if len(self) > 2: rv.append(('All', -1)) rv.append(('None', -2)) for index, key in enumerate(self.__sorted_keys__()): - try: - match = len(re.findall(self.__selection_regex__, key)) > 0 - except re.error: - match = True # No valid regular expression - if match: + if self.__match__(key): prefix = "\\[X] " if self[key] else "\\[-] " rv.append((prefix + key, index)) return rv @@ -111,7 +116,7 @@ class MqttSniffer(App): ("q", "quit", "Quit"), ("c", "clear_screen", "Clear") ] - MAX_LOGS = 50 + MAX_LOGS = 1000 def __init__(self, args, password): super().__init__()