mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Add compiled hook model_did_init_buttons
This commit is contained in:
parent
ad27e0149a
commit
633d769490
2 changed files with 51 additions and 1 deletions
|
@ -17,6 +17,7 @@ from anki.hooks import runFilter, runHook
|
|||
from anki.models import NoteType
|
||||
from aqt.qt import QDialog, QEvent, QMenu
|
||||
from aqt.tagedit import TagEdit
|
||||
from aqt.models import Models
|
||||
|
||||
# New hook/filter handling
|
||||
##############################################################################
|
||||
|
@ -1869,6 +1870,55 @@ class _ModelsAdvancedWillShowHook:
|
|||
models_advanced_will_show = _ModelsAdvancedWillShowHook()
|
||||
|
||||
|
||||
class _ModelsDidInitButtonsFilter:
|
||||
"""Allows adding buttons to the Model dialog"""
|
||||
|
||||
_hooks: List[
|
||||
Callable[
|
||||
[List[Tuple[str, Callable[[Models], None]]], Models],
|
||||
List[Tuple[str, Callable[[Models], None]]],
|
||||
]
|
||||
] = []
|
||||
|
||||
def append(
|
||||
self,
|
||||
cb: Callable[
|
||||
[List[Tuple[str, Callable[[Models], None]]], Models],
|
||||
List[Tuple[str, Callable[[Models], None]]],
|
||||
],
|
||||
) -> None:
|
||||
"""(buttons: List[Tuple[str, Callable[[Models], None]]], models: Models)"""
|
||||
self._hooks.append(cb)
|
||||
|
||||
def remove(
|
||||
self,
|
||||
cb: Callable[
|
||||
[List[Tuple[str, Callable[[Models], None]]], Models],
|
||||
List[Tuple[str, Callable[[Models], None]]],
|
||||
],
|
||||
) -> None:
|
||||
if cb in self._hooks:
|
||||
self._hooks.remove(cb)
|
||||
|
||||
def count(self) -> int:
|
||||
return len(self._hooks)
|
||||
|
||||
def __call__(
|
||||
self, buttons: List[Tuple[str, Callable[[Models], None]]], models: Models
|
||||
) -> List[Tuple[str, Callable[[Models], None]]]:
|
||||
for filter in self._hooks:
|
||||
try:
|
||||
buttons = filter(buttons, models)
|
||||
except:
|
||||
# if the hook fails, remove it
|
||||
self._hooks.remove(filter)
|
||||
raise
|
||||
return buttons
|
||||
|
||||
|
||||
models_did_init_buttons = _ModelsDidInitButtonsFilter()
|
||||
|
||||
|
||||
class _OverviewDidRefreshHook:
|
||||
"""Allow to update the overview window. E.g. add the deck name in the
|
||||
title."""
|
||||
|
|
|
@ -689,7 +689,7 @@ hooks = [
|
|||
Hook(
|
||||
name="models_did_init_buttons",
|
||||
args=["buttons: List[Tuple[str, Callable[[Models], None]]]", "models: Models"],
|
||||
return_type="buttons: List[Tuple[str, Callable[[Models], None]]]",
|
||||
return_type="List[Tuple[str, Callable[[Models], None]]]",
|
||||
doc="""Allows adding buttons to the Model dialog""",
|
||||
),
|
||||
# Stats
|
||||
|
|
Loading…
Reference in a new issue