diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index ea18263c4..c0f6f1a61 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -1310,25 +1310,3 @@ class EditorWebView(AnkiWebView): clipboard = self.editor.mw.app.clipboard() assert clipboard is not None return clipboard - - -def set_cloze_button(editor: Editor) -> None: - action = "show" if editor.note_type()["type"] == MODEL_CLOZE else "hide" - editor.web.eval( - 'require("anki/ui").loaded.then(() =>' - f'require("anki/NoteEditor").instances[0].toolbar.toolbar.{action}("cloze")' - "); " - ) - - -def set_image_occlusion_button(editor: Editor) -> None: - action = "show" if editor.current_notetype_is_image_occlusion() else "hide" - editor.web.eval( - 'require("anki/ui").loaded.then(() =>' - f'require("anki/NoteEditor").instances[0].toolbar.toolbar.{action}("image-occlusion-button")' - "); " - ) - - -gui_hooks.editor_did_load_note.append(set_cloze_button) -gui_hooks.editor_did_load_note.append(set_image_occlusion_button) diff --git a/ts/lib/sveltelib/dynamic-slotting.ts b/ts/lib/sveltelib/dynamic-slotting.ts index db0bb12f9..8cc3b3293 100644 --- a/ts/lib/sveltelib/dynamic-slotting.ts +++ b/ts/lib/sveltelib/dynamic-slotting.ts @@ -240,6 +240,7 @@ export interface DefaultSlotInterface extends Record { show(position: Identifier): Promise; hide(position: Identifier): Promise; toggle(position: Identifier): Promise; + setShown(position: Identifier, shown: boolean): Promise; } export function defaultInterface({ @@ -287,12 +288,20 @@ export function defaultInterface({ }, id); } + function setShown(id: Identifier, shown: boolean): Promise { + return updateProps((props: T): T => { + props.detach.set(!shown); + return props; + }, id); + } + return { insert, append, show, hide, toggle, + setShown, }; } diff --git a/ts/routes/editor/NoteEditor.svelte b/ts/routes/editor/NoteEditor.svelte index 104258d2a..00a0a13a2 100644 --- a/ts/routes/editor/NoteEditor.svelte +++ b/ts/routes/editor/NoteEditor.svelte @@ -503,7 +503,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import { ImageOcclusionFieldIndexes } from "@generated/anki/image_occlusion_pb"; - import { StockNotetype_OriginalStockKind } from "@generated/anki/notetypes_pb"; + import { + Notetype_Config_Kind, + StockNotetype_OriginalStockKind, + } from "@generated/anki/notetypes_pb"; import type { Notetype } from "@generated/anki/notetypes_pb"; import { getFieldNames, @@ -715,6 +718,15 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html ); focusField(focusTo); toolbar.inlineButtons?.setColorButtons([lastTextColor, lastHighlightColor]); + await toolbar.toolbar?.setShown( + "image-occlusion-button", + notetype.config?.originalStockKind === + StockNotetype_OriginalStockKind.IMAGE_OCCLUSION, + ); + await toolbar.toolbar?.setShown( + "cloze", + notetype.config?.kind === Notetype_Config_Kind.CLOZE, + ); setTags(tags); setTagsCollapsed(await getMeta(tagsCollapsedMetaKey)); setMathjaxEnabled((await getColConfig("renderMathjax")) ?? true);