diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4014ce283..aaa0f0367 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -87,6 +87,7 @@ Alexander Giorev Ren Tatsumoto lolilolicon Gesa Stupperich +git9527 ******************** diff --git a/qt/aqt/addcards.py b/qt/aqt/addcards.py index 18712b24d..f5280c233 100644 --- a/qt/aqt/addcards.py +++ b/qt/aqt/addcards.py @@ -74,7 +74,10 @@ class AddCards(QDialog): on_notetype_changed=self.on_notetype_change, ) self.deck_chooser = DeckChooser( - self.mw, self.form.deckArea, starting_deck_id=DeckId(defaults.deck_id) + self.mw, + self.form.deckArea, + starting_deck_id=DeckId(defaults.deck_id), + on_deck_changed=self.on_deck_changed, ) def helpRequested(self) -> None: @@ -117,6 +120,9 @@ class AddCards(QDialog): def show_notetype_selector(self) -> None: self.editor.call_after_note_saved(self.notetype_chooser.choose_notetype) + def on_deck_changed(self, deck_id: int) -> None: + gui_hooks.add_cards_did_change_deck(deck_id) + def on_notetype_change(self, notetype_id: NotetypeId) -> None: # need to adjust current deck? if deck_id := self.col.default_deck_for_notetype(notetype_id): diff --git a/qt/aqt/deckchooser.py b/qt/aqt/deckchooser.py index 19261ddc8..3939933e1 100644 --- a/qt/aqt/deckchooser.py +++ b/qt/aqt/deckchooser.py @@ -16,6 +16,7 @@ class DeckChooser(QHBoxLayout): widget: QWidget, label: bool = True, starting_deck_id: Optional[DeckId] = None, + on_deck_changed: Optional[Callable[[int], None]] = None, ) -> None: QHBoxLayout.__init__(self) self._widget = widget # type: ignore @@ -27,6 +28,7 @@ class DeckChooser(QHBoxLayout): if starting_deck_id is None: starting_deck_id = DeckId(self.mw.col.get_config("curDeck", default=1) or 1) self.selected_deck_id = starting_deck_id + self.on_deck_changed = on_deck_changed def _setup_ui(self, show_label: bool) -> None: self.setContentsMargins(0, 0, 0, 0) @@ -98,7 +100,11 @@ class DeckChooser(QHBoxLayout): geomKey="selectDeck", ) if ret.name: - self.selected_deck_id = self.mw.col.decks.by_name(ret.name)["id"] + new_selected_deck_id = self.mw.col.decks.by_name(ret.name)["id"] + if self.selected_deck_id != new_selected_deck_id: + self.selected_deck_id = new_selected_deck_id + if func := self.on_deck_changed: + func(new_selected_deck_id) # legacy diff --git a/qt/tools/genhooks_gui.py b/qt/tools/genhooks_gui.py index fb3a26ef3..8910a1c17 100644 --- a/qt/tools/genhooks_gui.py +++ b/qt/tools/genhooks_gui.py @@ -787,6 +787,12 @@ gui_hooks.webview_did_inject_style_into_page.append(mytest) doc="""Executed after the user selects a new note type when adding cards.""", ), + Hook( + name="add_cards_did_change_deck", + args=["new_deck_id: int"], + doc="""Executed after the user selects a new different deck when + adding cards.""", + ), # Editing ################### Hook(