From 952d94344052a15d3ba7ac2079efd8906047b2ac Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Fri, 3 Apr 2020 10:54:54 +0200 Subject: [PATCH] hook add_card_did_init --- qt/aqt/addcards.py | 1 + qt/aqt/gui_hooks.py | 24 ++++++++++++++++++++++++ qt/tools/genhooks_gui.py | 1 + 3 files changed, 26 insertions(+) diff --git a/qt/aqt/addcards.py b/qt/aqt/addcards.py index 2ed2e964a..0b35a47c0 100644 --- a/qt/aqt/addcards.py +++ b/qt/aqt/addcards.py @@ -46,6 +46,7 @@ class AddCards(QDialog): gui_hooks.state_did_reset.append(self.onReset) gui_hooks.current_note_type_did_change.append(self.onModelChange) addCloseShortcut(self) + gui_hooks.add_cards_did_init(self) self.show() def setupEditor(self) -> None: diff --git a/qt/aqt/gui_hooks.py b/qt/aqt/gui_hooks.py index d3227e841..88b6872ef 100644 --- a/qt/aqt/gui_hooks.py +++ b/qt/aqt/gui_hooks.py @@ -50,6 +50,30 @@ class _AddCardsDidAddNoteHook: add_cards_did_add_note = _AddCardsDidAddNoteHook() +class _AddCardsDidInitHook: + _hooks: List[Callable[["aqt.addcards.AddCards"], None]] = [] + + def append(self, cb: Callable[["aqt.addcards.AddCards"], None]) -> None: + """(addcards: aqt.addcards.AddCards)""" + self._hooks.append(cb) + + def remove(self, cb: Callable[["aqt.addcards.AddCards"], None]) -> None: + if cb in self._hooks: + self._hooks.remove(cb) + + def __call__(self, addcards: aqt.addcards.AddCards) -> None: + for hook in self._hooks: + try: + hook(addcards) + except: + # if the hook fails, remove it + self._hooks.remove(hook) + raise + + +add_cards_did_init = _AddCardsDidInitHook() + + class _AddCardsWillAddNoteFilter: """Decides whether the note should be added to the collection or not. It is assumed to come from the addCards window. diff --git a/qt/tools/genhooks_gui.py b/qt/tools/genhooks_gui.py index 13e6400b2..39cb22e28 100644 --- a/qt/tools/genhooks_gui.py +++ b/qt/tools/genhooks_gui.py @@ -432,6 +432,7 @@ def emptyNewCard(): args=["addcards: aqt.addcards.AddCards", "menu: QMenu"], legacy_hook="AddCards.onHistory", ), + Hook(name="add_cards_did_init", args=["addcards: aqt.addcards.AddCards"],), Hook( name="add_cards_did_add_note", args=["note: anki.notes.Note"],