diff --git a/qt/aqt/gui_hooks.py b/qt/aqt/gui_hooks.py index ff8721ed9..86fa5bdb3 100644 --- a/qt/aqt/gui_hooks.py +++ b/qt/aqt/gui_hooks.py @@ -520,6 +520,34 @@ class _CurrentNoteTypeDidChangeHook: current_note_type_did_change = _CurrentNoteTypeDidChangeHook() +class _DebugConsoleDidEvaluatePythonFilter: + """Allows processing the debug result. E.g. logging queries and + result, saving last query to display it later...""" + + _hooks: List[Callable[[str, str, QDialog], str]] = [] + + def append(self, cb: Callable[[str, str, QDialog], str]) -> None: + """(output: str, query: str, debug_window: QDialog)""" + self._hooks.append(cb) + + def remove(self, cb: Callable[[str, str, QDialog], str]) -> None: + if cb in self._hooks: + self._hooks.remove(cb) + + def __call__(self, output: str, query: str, debug_window: QDialog) -> str: + for filter in self._hooks: + try: + output = filter(output, query, debug_window) + except: + # if the hook fails, remove it + self._hooks.remove(filter) + raise + return output + + +debug_console_did_evaluate_python = _DebugConsoleDidEvaluatePythonFilter() + + class _DebugConsoleWillShowHook: """Allows editing the debug window. E.g. setting a default code, or previous code.""" diff --git a/qt/aqt/main.py b/qt/aqt/main.py index 38e434dbf..3f3034bb5 100644 --- a/qt/aqt/main.py +++ b/qt/aqt/main.py @@ -1404,9 +1404,17 @@ will be lost. Continue?""" else: buf += "... %s\n" % line try: - frm.log.appendPlainText(buf + (self._output or "")) + to_append = buf + (self._output or "") + to_append = gui_hooks.debug_console_did_evaluate_python( + to_append, text, frm + ) + frm.log.appendPlainText(to_append) except UnicodeDecodeError: - frm.log.appendPlainText(_("")) + to_append = _("") + to_append = gui_hooks.debug_console_did_evaluate_python( + to_append, text, frm + ) + frm.log.appendPlainText(to_append) frm.log.ensureCursorVisible() # System specific code diff --git a/qt/tools/genhooks_gui.py b/qt/tools/genhooks_gui.py index be60a24b6..e3049cd00 100644 --- a/qt/tools/genhooks_gui.py +++ b/qt/tools/genhooks_gui.py @@ -98,6 +98,13 @@ hooks = [ doc="""Allows editing the debug window. E.g. setting a default code, or previous code.""", ), + Hook( + name="debug_console_did_evaluate_python", + args=["output: str", "query: str", "debug_window: QDialog"], + return_type="str", + doc="""Allows processing the debug result. E.g. logging queries and + result, saving last query to display it later...""", + ), # Card layout ################### Hook(