Don't import models in gui_hooks to avoid circular import

This commit is contained in:
Henrik Giesel 2020-08-23 17:40:01 +02:00
parent ea787c73a5
commit 3287c42ace
2 changed files with 22 additions and 12 deletions

View file

@ -17,7 +17,6 @@ from anki.hooks import runFilter, runHook
from anki.models import NoteType from anki.models import NoteType
from aqt.qt import QDialog, QEvent, QMenu from aqt.qt import QDialog, QEvent, QMenu
from aqt.tagedit import TagEdit from aqt.tagedit import TagEdit
from aqt.models import Models
# New hook/filter handling # New hook/filter handling
############################################################################## ##############################################################################
@ -1875,26 +1874,35 @@ class _ModelsDidInitButtonsFilter:
_hooks: List[ _hooks: List[
Callable[ Callable[
[List[Tuple[str, Callable[[Models], None]]], Models], [
List[Tuple[str, Callable[[Models], None]]], "List[Tuple[str, Callable[[aqt.models.Models], None]]]",
"aqt.models.Models",
],
List[Tuple[str, Callable[[aqt.models.Models], None]]],
] ]
] = [] ] = []
def append( def append(
self, self,
cb: Callable[ cb: Callable[
[List[Tuple[str, Callable[[Models], None]]], Models], [
List[Tuple[str, Callable[[Models], None]]], "List[Tuple[str, Callable[[aqt.models.Models], None]]]",
"aqt.models.Models",
],
List[Tuple[str, Callable[[aqt.models.Models], None]]],
], ],
) -> None: ) -> None:
"""(buttons: List[Tuple[str, Callable[[Models], None]]], models: Models)""" """(buttons: List[Tuple[str, Callable[[aqt.models.Models], None]]], models: aqt.models.Models)"""
self._hooks.append(cb) self._hooks.append(cb)
def remove( def remove(
self, self,
cb: Callable[ cb: Callable[
[List[Tuple[str, Callable[[Models], None]]], Models], [
List[Tuple[str, Callable[[Models], None]]], "List[Tuple[str, Callable[[aqt.models.Models], None]]]",
"aqt.models.Models",
],
List[Tuple[str, Callable[[aqt.models.Models], None]]],
], ],
) -> None: ) -> None:
if cb in self._hooks: if cb in self._hooks:
@ -1904,8 +1912,10 @@ class _ModelsDidInitButtonsFilter:
return len(self._hooks) return len(self._hooks)
def __call__( def __call__(
self, buttons: List[Tuple[str, Callable[[Models], None]]], models: Models self,
) -> List[Tuple[str, Callable[[Models], None]]]: buttons: List[Tuple[str, Callable[[aqt.models.Models], None]]],
models: aqt.models.Models,
) -> List[Tuple[str, Callable[[aqt.models.Models], None]]]:
for filter in self._hooks: for filter in self._hooks:
try: try:
buttons = filter(buttons, models) buttons = filter(buttons, models)

View file

@ -688,8 +688,8 @@ hooks = [
Hook(name="models_advanced_will_show", args=["advanced: QDialog"],), Hook(name="models_advanced_will_show", args=["advanced: QDialog"],),
Hook( Hook(
name="models_did_init_buttons", name="models_did_init_buttons",
args=["buttons: List[Tuple[str, Callable[[Models], None]]]", "models: Models"], args=["buttons: List[Tuple[str, Callable[[aqt.models.Models], None]]]", "models: aqt.models.Models"],
return_type="List[Tuple[str, Callable[[Models], None]]]", return_type="List[Tuple[str, Callable[[aqt.models.Models], None]]]",
doc="""Allows adding buttons to the Model dialog""", doc="""Allows adding buttons to the Model dialog""",
), ),
# Stats # Stats