Add top_toolbar_did_init_links hook
Allows extending the links in the top toolbar, in a similar fashion to editor_did_init_shortcuts
This commit is contained in:
parent
d0284f759d
commit
18ae9e612e
@ -1041,6 +1041,38 @@ class _StyleDidInitFilter:
|
|||||||
style_did_init = _StyleDidInitFilter()
|
style_did_init = _StyleDidInitFilter()
|
||||||
|
|
||||||
|
|
||||||
|
class _TopToolbarDidInitLinksHook:
|
||||||
|
_hooks: List[
|
||||||
|
Callable[[List[Tuple[str, str, str]], "aqt.toolbar.Toolbar"], None]
|
||||||
|
] = []
|
||||||
|
|
||||||
|
def append(
|
||||||
|
self, cb: Callable[[List[Tuple[str, str, str]], "aqt.toolbar.Toolbar"], None]
|
||||||
|
) -> None:
|
||||||
|
"""(links: List[Tuple[str, str, str]], top_toolbar: aqt.toolbar.Toolbar)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(
|
||||||
|
self, cb: Callable[[List[Tuple[str, str, str]], "aqt.toolbar.Toolbar"], None]
|
||||||
|
) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def __call__(
|
||||||
|
self, links: List[Tuple[str, str, str]], top_toolbar: aqt.toolbar.Toolbar
|
||||||
|
) -> None:
|
||||||
|
for hook in self._hooks:
|
||||||
|
try:
|
||||||
|
hook(links, top_toolbar)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(hook)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
top_toolbar_did_init_links = _TopToolbarDidInitLinksHook()
|
||||||
|
|
||||||
|
|
||||||
class _UndoStateDidChangeHook:
|
class _UndoStateDidChangeHook:
|
||||||
_hooks: List[Callable[[bool], None]] = []
|
_hooks: List[Callable[[bool], None]] = []
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import aqt
|
import aqt
|
||||||
from anki.lang import _
|
from anki.lang import _
|
||||||
|
from aqt import gui_hooks
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
from aqt.webview import AnkiWebView
|
from aqt.webview import AnkiWebView
|
||||||
|
|
||||||
@ -47,12 +48,13 @@ class Toolbar:
|
|||||||
|
|
||||||
def _centerLinks(self):
|
def _centerLinks(self):
|
||||||
links = [
|
links = [
|
||||||
["decks", _("Decks"), _("Shortcut key: %s") % "D"],
|
("decks", _("Decks"), _("Shortcut key: %s") % "D"),
|
||||||
["add", _("Add"), _("Shortcut key: %s") % "A"],
|
("add", _("Add"), _("Shortcut key: %s") % "A"),
|
||||||
["browse", _("Browse"), _("Shortcut key: %s") % "B"],
|
("browse", _("Browse"), _("Shortcut key: %s") % "B"),
|
||||||
["stats", _("Stats"), _("Shortcut key: %s") % "T"],
|
("stats", _("Stats"), _("Shortcut key: %s") % "T"),
|
||||||
["sync", _("Sync"), _("Shortcut key: %s") % "Y"],
|
("sync", _("Sync"), _("Shortcut key: %s") % "Y"),
|
||||||
]
|
]
|
||||||
|
gui_hooks.top_toolbar_did_init_links(links, self)
|
||||||
return self._linkHTML(links)
|
return self._linkHTML(links)
|
||||||
|
|
||||||
def _linkHTML(self, links):
|
def _linkHTML(self, links):
|
||||||
|
@ -187,6 +187,10 @@ hooks = [
|
|||||||
return_type="str",
|
return_type="str",
|
||||||
legacy_hook="setupStyle",
|
legacy_hook="setupStyle",
|
||||||
),
|
),
|
||||||
|
Hook(
|
||||||
|
name="top_toolbar_did_init_links",
|
||||||
|
args=["links: List[Tuple[str, str, str]]", "top_toolbar: aqt.toolbar.Toolbar",],
|
||||||
|
),
|
||||||
# Adding cards
|
# Adding cards
|
||||||
###################
|
###################
|
||||||
Hook(
|
Hook(
|
||||||
|
Loading…
Reference in New Issue
Block a user