mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
hook prettify_json
This commit is contained in:
parent
e9f4ac0e14
commit
e4986c7784
3 changed files with 48 additions and 8 deletions
|
@ -26,6 +26,7 @@ import aqt
|
|||
import aqt.forms
|
||||
from anki.httpclient import HttpClient
|
||||
from anki.lang import _, ngettext
|
||||
from aqt import gui_hooks
|
||||
from aqt.qt import *
|
||||
from aqt.utils import (
|
||||
TR,
|
||||
|
@ -1284,15 +1285,11 @@ class ConfigEditor(QDialog):
|
|||
self.form.scrollArea.setVisible(False)
|
||||
|
||||
def updateText(self, conf):
|
||||
self.form.editor.setPlainText(
|
||||
json.dumps(
|
||||
conf,
|
||||
ensure_ascii=False,
|
||||
sort_keys=True,
|
||||
indent=4,
|
||||
separators=(",", ": "),
|
||||
)
|
||||
text = json.dumps(
|
||||
conf, ensure_ascii=False, sort_keys=True, indent=4, separators=(",", ": "),
|
||||
)
|
||||
text = gui_hooks.addon_config_editor_will_display_json(text)
|
||||
self.form.editor.setPlainText(text)
|
||||
|
||||
def onClose(self):
|
||||
saveGeom(self, "addonconf")
|
||||
|
|
|
@ -75,6 +75,37 @@ class _AddCardsWillShowHistoryMenuHook:
|
|||
add_cards_will_show_history_menu = _AddCardsWillShowHistoryMenuHook()
|
||||
|
||||
|
||||
class _AddonConfigEditorWillDisplayJsonFilter:
|
||||
"""Allows changing the text of the json configuration before actually
|
||||
displaying it to the user. For example, you can replace "\n" by
|
||||
some actual new line. Then you can replace the new lines by "\n"
|
||||
while reading the file and let the user uses real new line in
|
||||
string instead of its encoding."""
|
||||
|
||||
_hooks: List[Callable[[str], str]] = []
|
||||
|
||||
def append(self, cb: Callable[[str], str]) -> None:
|
||||
"""(text: str)"""
|
||||
self._hooks.append(cb)
|
||||
|
||||
def remove(self, cb: Callable[[str], str]) -> None:
|
||||
if cb in self._hooks:
|
||||
self._hooks.remove(cb)
|
||||
|
||||
def __call__(self, text: str) -> str:
|
||||
for filter in self._hooks:
|
||||
try:
|
||||
text = filter(text)
|
||||
except:
|
||||
# if the hook fails, remove it
|
||||
self._hooks.remove(filter)
|
||||
raise
|
||||
return text
|
||||
|
||||
|
||||
addon_config_editor_will_display_json = _AddonConfigEditorWillDisplayJsonFilter()
|
||||
|
||||
|
||||
class _AvPlayerDidBeginPlayingHook:
|
||||
_hooks: List[Callable[["aqt.sound.Player", "anki.sound.AVTag"], None]] = []
|
||||
|
||||
|
|
|
@ -452,6 +452,18 @@ def emptyNewCard():
|
|||
args=["player: aqt.sound.Player", "tag: anki.sound.AVTag"],
|
||||
),
|
||||
Hook(name="av_player_did_end_playing", args=["player: aqt.sound.Player"]),
|
||||
# Addon
|
||||
###################
|
||||
Hook(
|
||||
name="addon_config_editor_will_display_json",
|
||||
args=["text: str"],
|
||||
return_type="str",
|
||||
doc="""Allows changing the text of the json configuration before actually
|
||||
displaying it to the user. For example, you can replace "\\\\n" by
|
||||
some actual new line. Then you can replace the new lines by "\\\\n"
|
||||
while reading the file and let the user uses real new line in
|
||||
string instead of its encoding.""",
|
||||
),
|
||||
# Other
|
||||
###################
|
||||
Hook(
|
||||
|
|
Loading…
Reference in a new issue