diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index ed183e40e..b2199a238 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -83,6 +83,7 @@ class Editor: self.setupWeb() self.setupShortcuts() self.setupTags() + gui_hooks.editor_did_init(self) # Initial setup ############################################################ diff --git a/qt/aqt/gui_hooks.py b/qt/aqt/gui_hooks.py index a066504ab..0115ef948 100644 --- a/qt/aqt/gui_hooks.py +++ b/qt/aqt/gui_hooks.py @@ -1028,6 +1028,30 @@ class _EditorDidFocusFieldHook: editor_did_focus_field = _EditorDidFocusFieldHook() +class _EditorDidInitHook: + _hooks: List[Callable[["aqt.editor.Editor"], None]] = [] + + def append(self, cb: Callable[["aqt.editor.Editor"], None]) -> None: + """(editor: aqt.editor.Editor)""" + self._hooks.append(cb) + + def remove(self, cb: Callable[["aqt.editor.Editor"], None]) -> None: + if cb in self._hooks: + self._hooks.remove(cb) + + def __call__(self, editor: aqt.editor.Editor) -> None: + for hook in self._hooks: + try: + hook(editor) + except: + # if the hook fails, remove it + self._hooks.remove(hook) + raise + + +editor_did_init = _EditorDidInitHook() + + class _EditorDidInitButtonsHook: _hooks: List[Callable[[List, "aqt.editor.Editor"], None]] = [] diff --git a/qt/tools/genhooks_gui.py b/qt/tools/genhooks_gui.py index be3232a92..1dd08c430 100644 --- a/qt/tools/genhooks_gui.py +++ b/qt/tools/genhooks_gui.py @@ -497,6 +497,7 @@ def emptyNewCard(): name="editor_web_view_did_init", args=["editor_web_view: aqt.editor.EditorWebView"], ), + Hook(name="editor_did_init", args=["editor: aqt.editor.Editor"],), # Sound/video ################### Hook(name="av_player_will_play", args=["tag: anki.sound.AVTag"]),