diff --git a/qt/aqt/gui_hooks.py b/qt/aqt/gui_hooks.py index eed241f7e..50f6861a5 100644 --- a/qt/aqt/gui_hooks.py +++ b/qt/aqt/gui_hooks.py @@ -1206,6 +1206,30 @@ class _MediaSyncDidStartOrStopHook: media_sync_did_start_or_stop = _MediaSyncDidStartOrStopHook() +class _ModelsAdvancedWillShowHook: + _hooks: List[Callable[[QDialog], None]] = [] + + def append(self, cb: Callable[[QDialog], None]) -> None: + """(advanced: QDialog)""" + self._hooks.append(cb) + + def remove(self, cb: Callable[[QDialog], None]) -> None: + if cb in self._hooks: + self._hooks.remove(cb) + + def __call__(self, advanced: QDialog) -> None: + for hook in self._hooks: + try: + hook(advanced) + except: + # if the hook fails, remove it + self._hooks.remove(hook) + raise + + +models_advanced_will_show = _ModelsAdvancedWillShowHook() + + class _OverviewDidRefreshHook: """Allow to update the overview window. E.g. add the deck name in the title.""" diff --git a/qt/aqt/models.py b/qt/aqt/models.py index 86f7a4e96..e23d081d9 100644 --- a/qt/aqt/models.py +++ b/qt/aqt/models.py @@ -6,7 +6,7 @@ from operator import itemgetter import aqt.clayout from anki import stdmodels from anki.lang import _, ngettext -from aqt import AnkiQt +from aqt import AnkiQt, gui_hooks from aqt.qt import * from aqt.utils import ( askUser, @@ -124,6 +124,7 @@ class Models(QDialog): d.setWindowTitle(_("Options for %s") % self.model["name"]) frm.buttonBox.helpRequested.connect(lambda: openHelp("latex")) restoreGeom(d, "modelopts") + gui_hooks.models_advanced_will_show(d) d.exec_() saveGeom(d, "modelopts") self.model["latexsvg"] = frm.latexsvg.isChecked() diff --git a/qt/tools/genhooks_gui.py b/qt/tools/genhooks_gui.py index dcf543979..73fa1c8f0 100644 --- a/qt/tools/genhooks_gui.py +++ b/qt/tools/genhooks_gui.py @@ -503,6 +503,9 @@ def emptyNewCard(): args=["dialog: aqt.addons.AddonsDialog", "add_on: aqt.addons.AddonMeta"], doc="""Allows doing an action when a single add-on is selected.""", ), + # Model + ################### + Hook(name="models_advanced_will_show", args=["advanced: QDialog"],), # Other ################### Hook(