From 48bb1931a010906c0d17a7f5a858e783fa3e9e0c Mon Sep 17 00:00:00 2001 From: Tobias Manske Date: Thu, 9 Sep 2021 18:37:52 +0200 Subject: [PATCH] Cleanup --- __init__.py | 54 +++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/__init__.py b/__init__.py index 2c1afd1..e8cbd6a 100644 --- a/__init__.py +++ b/__init__.py @@ -3,48 +3,50 @@ import json from anki import hooks from aqt import editor from aqt.webview import AnkiWebView -from aqt.utils import showInfo from aqt.theme import theme_manager -from aqt import addcards from aqt import gui_hooks from aqt import mw -class Editor_Preview(object): +class EditorPreview(object): - def addcards_hook(self, ac: addcards): - layout = ac.form.fieldsArea.layout() - ac.web_view = AnkiWebView(title="preview") - layout.addWidget(ac.web_view) - ac.web_view.stdHtml( - ac.mw.reviewer.revHtml(), + def __init__(self): + gui_hooks.editor_did_init.append(self.editor_init_hook) + gui_hooks.editor_did_load_note.append(self.editor_note_hook) + gui_hooks.editor_did_fire_typing_timer.append(self.onedit_hook) + + def editor_init_hook(self, ed: editor.Editor): + self.webview = AnkiWebView(title="editor_preview") + # This is taken out of clayout.py + self.webview.stdHtml( + ed.mw.reviewer.revHtml(), css=["css/reviewer.css"], js=[ "js/mathjax.js", "js/vendor/mathjax/tex-chtml.js", "js/reviewer.js", ], - context=ac, + context=ed, ) - note = ac.editor.note - if ac.editor.card: - ord = ac.editor.card.ord - else: - ord = 0 - c = note.ephemeral_card() - a = ac.mw.prepare_card_text_for_display(c.answer()) - a = gui_hooks.card_will_show(a, c, "clayoutAnswer") - bodyclass = theme_manager.body_classes_for_card_ord(c.ord, ac.mw.pm.night_mode()) - ac.web_view.eval(f"_showAnswer({json.dumps(a)},'{bodyclass}');") - self.web_view = ac.web_view + layout = ed.outerLayout + # very arbitrary max size + # otherwise the browse window is not usable + self.webview.setMaximumHeight = 400 + layout.addWidget(self.webview, 1) - def onedit_hook(self, note): + def editor_note_hook(self, editor): + self.onedit_hook(editor.note) + + + def _obtainCardText(self, note): c = note.ephemeral_card() a = mw.prepare_card_text_for_display(c.answer()) a = gui_hooks.card_will_show(a, c, "clayoutAnswer") bodyclass = theme_manager.body_classes_for_card_ord(c.ord, mw.pm.night_mode()) - self.web_view.eval(f"_showAnswer({json.dumps(a)},'{bodyclass}');") + + return f"_showAnswer({json.dumps(a)},'{bodyclass}');" + + def onedit_hook(self, note): + self.webview.eval(self._obtainCardText(note)) -eprev = Editor_Preview() -gui_hooks.add_cards_did_init.append(eprev.addcards_hook) -gui_hooks.editor_did_fire_typing_timer.append(eprev.onedit_hook) +eprev = EditorPreview()