Merge pull request #497 from Arthur-Milchior/addon_dialog_hook_will_show
hook addons_dialog_will_show
This commit is contained in:
commit
78dd812f94
@ -706,6 +706,7 @@ class AddonsDialog(QDialog):
|
|||||||
self.setAcceptDrops(True)
|
self.setAcceptDrops(True)
|
||||||
self.redrawAddons()
|
self.redrawAddons()
|
||||||
restoreGeom(self, "addons")
|
restoreGeom(self, "addons")
|
||||||
|
gui_hooks.addons_dialog_will_show(self)
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
def dragEnterEvent(self, event):
|
def dragEnterEvent(self, event):
|
||||||
@ -783,6 +784,7 @@ class AddonsDialog(QDialog):
|
|||||||
or self.mgr.configAction(addon.dir_name)
|
or self.mgr.configAction(addon.dir_name)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
gui_hooks.addons_dialog_did_change_selected_addon(self, addon)
|
||||||
return
|
return
|
||||||
|
|
||||||
def selectedAddons(self) -> List[str]:
|
def selectedAddons(self) -> List[str]:
|
||||||
|
@ -135,6 +135,67 @@ class _AddonConfigEditorWillSaveJsonFilter:
|
|||||||
addon_config_editor_will_save_json = _AddonConfigEditorWillSaveJsonFilter()
|
addon_config_editor_will_save_json = _AddonConfigEditorWillSaveJsonFilter()
|
||||||
|
|
||||||
|
|
||||||
|
class _AddonsDialogDidChangeSelectedAddonHook:
|
||||||
|
"""Allows doing an action when a single add-on is selected."""
|
||||||
|
|
||||||
|
_hooks: List[
|
||||||
|
Callable[["aqt.addons.AddonsDialog", "aqt.addons.AddonMeta"], None]
|
||||||
|
] = []
|
||||||
|
|
||||||
|
def append(
|
||||||
|
self, cb: Callable[["aqt.addons.AddonsDialog", "aqt.addons.AddonMeta"], None]
|
||||||
|
) -> None:
|
||||||
|
"""(dialog: aqt.addons.AddonsDialog, add_on: aqt.addons.AddonMeta)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(
|
||||||
|
self, cb: Callable[["aqt.addons.AddonsDialog", "aqt.addons.AddonMeta"], None]
|
||||||
|
) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def __call__(
|
||||||
|
self, dialog: aqt.addons.AddonsDialog, add_on: aqt.addons.AddonMeta
|
||||||
|
) -> None:
|
||||||
|
for hook in self._hooks:
|
||||||
|
try:
|
||||||
|
hook(dialog, add_on)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(hook)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
addons_dialog_did_change_selected_addon = _AddonsDialogDidChangeSelectedAddonHook()
|
||||||
|
|
||||||
|
|
||||||
|
class _AddonsDialogWillShowHook:
|
||||||
|
"""Allows changing the add-on dialog before it is shown. E.g. add
|
||||||
|
buttons."""
|
||||||
|
|
||||||
|
_hooks: List[Callable[["aqt.addons.AddonsDialog"], None]] = []
|
||||||
|
|
||||||
|
def append(self, cb: Callable[["aqt.addons.AddonsDialog"], None]) -> None:
|
||||||
|
"""(dialog: aqt.addons.AddonsDialog)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(self, cb: Callable[["aqt.addons.AddonsDialog"], None]) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def __call__(self, dialog: aqt.addons.AddonsDialog) -> None:
|
||||||
|
for hook in self._hooks:
|
||||||
|
try:
|
||||||
|
hook(dialog)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(hook)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
addons_dialog_will_show = _AddonsDialogWillShowHook()
|
||||||
|
|
||||||
|
|
||||||
class _AvPlayerDidBeginPlayingHook:
|
class _AvPlayerDidBeginPlayingHook:
|
||||||
_hooks: List[Callable[["aqt.sound.Player", "anki.sound.AVTag"], None]] = []
|
_hooks: List[Callable[["aqt.sound.Player", "anki.sound.AVTag"], None]] = []
|
||||||
|
|
||||||
|
@ -488,6 +488,17 @@ def emptyNewCard():
|
|||||||
received from the user before actually reading it. For
|
received from the user before actually reading it. For
|
||||||
example, you can replace new line in strings by some "\\\\n".""",
|
example, you can replace new line in strings by some "\\\\n".""",
|
||||||
),
|
),
|
||||||
|
Hook(
|
||||||
|
name="addons_dialog_will_show",
|
||||||
|
args=["dialog: aqt.addons.AddonsDialog"],
|
||||||
|
doc="""Allows changing the add-on dialog before it is shown. E.g. add
|
||||||
|
buttons.""",
|
||||||
|
),
|
||||||
|
Hook(
|
||||||
|
name="addons_dialog_did_change_selected_addon",
|
||||||
|
args=["dialog: aqt.addons.AddonsDialog", "add_on: aqt.addons.AddonMeta"],
|
||||||
|
doc="""Allows doing an action when a single add-on is selected.""",
|
||||||
|
),
|
||||||
# Other
|
# Other
|
||||||
###################
|
###################
|
||||||
Hook(
|
Hook(
|
||||||
|
Loading…
Reference in New Issue
Block a user