diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 94f43b70b..3f77cc306 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -93,6 +93,7 @@ qxo <49526356@qq.com> Spooghetti420 Danish Prakash Araceli Yanez +Sam Bradshaw ******************** diff --git a/qt/aqt/modelchooser.py b/qt/aqt/modelchooser.py index 06e3e4a92..f886c65af 100644 --- a/qt/aqt/modelchooser.py +++ b/qt/aqt/modelchooser.py @@ -79,7 +79,18 @@ class ModelChooser(QHBoxLayout): def nameFunc() -> list[str]: return [nt.name for nt in self.deck.models.all_names_and_ids()] - ret = StudyDeck( + def callback(ret: StudyDeck) -> None: + if not ret.name: + return + m = self.deck.models.by_name(ret.name) + self.deck.conf["curModel"] = m["id"] + cdeck = self.deck.decks.current() + cdeck["mid"] = m["id"] + self.deck.decks.save(cdeck) + gui_hooks.current_note_type_did_change(current) + self.mw.reset() + + StudyDeck( self.mw, names=nameFunc, accept=tr.actions_choose(), @@ -90,16 +101,8 @@ class ModelChooser(QHBoxLayout): buttons=[edit], cancel=True, geomKey="selectModel", + callback=callback, ) - if not ret.name: - return - m = self.deck.models.by_name(ret.name) - self.deck.conf["curModel"] = m["id"] - cdeck = self.deck.decks.current() - cdeck["mid"] = m["id"] - self.deck.decks.save(cdeck) - gui_hooks.current_note_type_did_change(current) - self.mw.reset() def updateModels(self) -> None: self.models.setText(self.deck.models.current()["name"].replace("&", "&&")) diff --git a/qt/aqt/studydeck.py b/qt/aqt/studydeck.py index adc432ca1..1a91785ab 100644 --- a/qt/aqt/studydeck.py +++ b/qt/aqt/studydeck.py @@ -36,6 +36,7 @@ class StudyDeck(QDialog): dyn: bool = False, buttons: Optional[list[Union[str, QPushButton]]] = None, geomKey: str = "default", + callback: Union[Callable, None] = None, ) -> None: QDialog.__init__(self, parent or mw) self.mw = mw @@ -87,7 +88,11 @@ class StudyDeck(QDialog): self.show() # redraw after show so position at center correct self.redraw("", current) - self.exec() + self.callback = callback + if callback: + self.open() + else: + self.exec() def eventFilter(self, obj: QObject, evt: QEvent) -> bool: if isinstance(evt, QKeyEvent) and evt.type() == QEvent.Type.KeyPress: @@ -152,6 +157,8 @@ class StudyDeck(QDialog): showInfo(tr.decks_please_select_something()) return self.name = self.names[self.form.list.currentRow()] + if self.callback: + self.callback(self) QDialog.accept(self) def reject(self) -> None: