diff --git a/src/plugins/domain/raction.py b/src/plugins/domain/raction.py index 1d3fbdc..9bac7f7 100644 --- a/src/plugins/domain/raction.py +++ b/src/plugins/domain/raction.py @@ -9,6 +9,7 @@ class RAction(): def __init__(self, label: str, action: Callable[[], None] = None, + after_action: Callable[[], None] = None, shortcut: str = None, icon_from_theme: str = None, icon_file: str = None, @@ -28,6 +29,7 @@ class RAction(): super(RAction, self).__init__() self.label = label self.action = action + self.after_action = after_action self.shortcut = shortcut self.icon_from_theme = icon_from_theme self.icon_file = icon_file @@ -82,6 +84,7 @@ class RAction(): action.setShortcut(self.shortcut) if self.action: action.triggered.connect(self.action) + action.triggered.connect(self.after_action) if self.checkable: self._update_check_state() @@ -99,6 +102,7 @@ class RAction(): button.setShortcut(self.shortcut) if self.action: button.pressed.connect(self.action) + button.pressed.connect(self.after_action) if self.checkable: button.setChecked(self.checked) button.setCheckable(self.checkable) diff --git a/src/plugins/logfile/filterwidget.py b/src/plugins/logfile/filterwidget.py index dec0f84..5edae1d 100644 --- a/src/plugins/logfile/filterwidget.py +++ b/src/plugins/logfile/filterwidget.py @@ -182,7 +182,8 @@ class FilterWidget(QWidget): actions = self._zoned_plugin_registry.execute_flat_map("get_filter_widget_actions") for action in actions: - raction: RAction = action; + raction: RAction = action + raction.after_action = self.filter_changed button = raction.to_qpushbutton(menu) menu.addWidget(button) return menu diff --git a/src/plugins/timediff/time_diff_pre_process_lines_hook.py b/src/plugins/timediff/time_diff_pre_process_lines_hook.py index ffd7fec..4eeaea6 100644 --- a/src/plugins/timediff/time_diff_pre_process_lines_hook.py +++ b/src/plugins/timediff/time_diff_pre_process_lines_hook.py @@ -11,8 +11,12 @@ class TimeDiffPreProcessLinesHook(PreProcessLinesHook): super(TimeDiffPreProcessLinesHook, self).__init__() self.date_pattern = compile(r"\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}([,.]\d{3})") self.prev_time: Optional[datetime] = None + self.active = False def pre_process_line(self, line: str, file_io: BinaryIO) -> str: + if not self.active: + return line + time = self._parse_time(line) if time: if self.prev_time: @@ -21,7 +25,7 @@ class TimeDiffPreProcessLinesHook(PreProcessLinesHook): line_ending = self.parse_line_ending(line) time_diff_str = self.time_diff_to_str(time_diff) - time_diff_line = f"⏱ {time_diff_str}{line_ending}" + time_diff_line = f"… {time_diff_str}{line_ending}" file_io.write(time_diff_line.encode("utf8")) self.prev_time = time return line diff --git a/src/plugins/timediffplugin.py b/src/plugins/timediffplugin.py index 89acaa1..1cab5de 100644 --- a/src/plugins/timediffplugin.py +++ b/src/plugins/timediffplugin.py @@ -4,6 +4,7 @@ from PySide6.QtGui import QIcon from src.pluginbase import PluginBase from src.plugins.domain.raction import RAction +from src.plugins.logfile.filterwidget import FilterWidget from src.plugins.logfile.preprocesslineshook import PreProcessLinesHook from src.plugins.timediff.time_diff_pre_process_lines_hook import TimeDiffPreProcessLinesHook from src.i18n import _ @@ -15,6 +16,7 @@ class TimeDiffPlugin(PluginBase): self.time_diff_state = False self.time_diff_action = RAction(_(""), lambda: self._toggle_time_diff(), icon_file="icons/ionicons/stopwatch-outline.svg", checkable=True) + self.time_diff_hook = TimeDiffPreProcessLinesHook() def copy(self): return TimeDiffPlugin() @@ -26,9 +28,10 @@ class TimeDiffPlugin(PluginBase): def get_pre_process_lines_hook(self) -> Optional[PreProcessLinesHook]: if self.time_diff_state: - return TimeDiffPreProcessLinesHook() - return None + return self.time_diff_hook + return self.time_diff_hook def _toggle_time_diff(self): self.time_diff_state = not self.time_diff_state self.time_diff_action.set_checked(self.time_diff_state) + self.time_diff_hook.active = self.time_diff_state