mirror of
https://github.com/ankitects/anki.git
synced 2025-11-07 05:07:10 -05:00
hook tag_editor_received_a_key
I expect it to be useful for add-ons such as https://github.com/fonol/anki-search-inside-add-card which interact with the tag line
This commit is contained in:
parent
cb5b122c7c
commit
4b34e71030
3 changed files with 31 additions and 1 deletions
|
|
@ -13,7 +13,8 @@ import anki
|
||||||
import aqt
|
import aqt
|
||||||
from anki.cards import Card
|
from anki.cards import Card
|
||||||
from anki.hooks import runFilter, runHook
|
from anki.hooks import runFilter, runHook
|
||||||
from aqt.qt import QDialog, QMenu
|
from aqt.qt import QDialog, QEvent, QMenu
|
||||||
|
from aqt.tagedit import TagEdit
|
||||||
|
|
||||||
# New hook/filter handling
|
# New hook/filter handling
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
@ -1927,6 +1928,30 @@ class _StyleDidInitFilter:
|
||||||
style_did_init = _StyleDidInitFilter()
|
style_did_init = _StyleDidInitFilter()
|
||||||
|
|
||||||
|
|
||||||
|
class _TagEditorReceivedAKeyHook:
|
||||||
|
_hooks: List[Callable[[TagEdit, QEvent], None]] = []
|
||||||
|
|
||||||
|
def append(self, cb: Callable[[TagEdit, QEvent], None]) -> None:
|
||||||
|
"""(tag_edit: TagEdit, evt: QEvent)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(self, cb: Callable[[TagEdit, QEvent], None]) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def __call__(self, tag_edit: TagEdit, evt: QEvent) -> None:
|
||||||
|
for hook in self._hooks:
|
||||||
|
try:
|
||||||
|
hook(tag_edit, evt)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(hook)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
tag_editor_received_a_key = _TagEditorReceivedAKeyHook()
|
||||||
|
|
||||||
|
|
||||||
class _TopToolbarDidInitLinksHook:
|
class _TopToolbarDidInitLinksHook:
|
||||||
"""Used to modify or add links in the top toolbar of Anki's main window
|
"""Used to modify or add links in the top toolbar of Anki's main window
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from aqt import gui_hooks
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -76,6 +77,7 @@ class TagEdit(QLineEdit):
|
||||||
Qt.Key_Delete,
|
Qt.Key_Delete,
|
||||||
):
|
):
|
||||||
self.showCompleter()
|
self.showCompleter()
|
||||||
|
gui_hooks.tag_editor_received_a_key(self, evt)
|
||||||
|
|
||||||
def showCompleter(self):
|
def showCompleter(self):
|
||||||
self.completer.setCompletionPrefix(self.text())
|
self.completer.setCompletionPrefix(self.text())
|
||||||
|
|
|
||||||
|
|
@ -509,6 +509,9 @@ def emptyNewCard():
|
||||||
doc="""Allows changing the javascript commands to load note before
|
doc="""Allows changing the javascript commands to load note before
|
||||||
executing it and do change in the QT editor.""",
|
executing it and do change in the QT editor.""",
|
||||||
),
|
),
|
||||||
|
# Tag
|
||||||
|
###################
|
||||||
|
Hook(name="tag_editor_received_a_key", args=["tag_edit: TagEdit", "evt: QEvent"]),
|
||||||
# Sound/video
|
# Sound/video
|
||||||
###################
|
###################
|
||||||
Hook(name="av_player_will_play", args=["tag: anki.sound.AVTag"]),
|
Hook(name="av_player_will_play", args=["tag: anki.sound.AVTag"]),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue