From 829da5a84af80eb12f56ffbf9aeb64bf1e818060 Mon Sep 17 00:00:00 2001 From: Abdo Date: Sat, 16 Aug 2025 20:39:21 +0300 Subject: [PATCH] Use defaults_for_adding() --- qt/aqt/editor.py | 2 +- qt/aqt/mediasrv.py | 1 + ts/lib/components/DeckChooser.svelte | 6 +++ ts/lib/components/ItemChooser.svelte | 5 +++ ts/lib/components/NotetypeChooser.svelte | 6 +++ ts/routes/editor/NoteEditor.svelte | 41 +++++++++++++++++-- .../editor-toolbar/EditorChoosers.svelte | 18 ++++++-- 7 files changed, 72 insertions(+), 7 deletions(-) diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index fd11d1b45..08b3dc44d 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -427,7 +427,7 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too gui_hooks.editor_did_load_note(self) assert self.mw.pm.profile is not None - js = f"loadNote({json.dumps(self.nid)}, {mid}, {json.dumps(focus_to)}, {json.dumps(original_note_id)});" + js = f"loadNote({json.dumps(self.nid)}, {mid}, {json.dumps(focus_to)}, {json.dumps(original_note_id)}, {json.dumps(self.mw.reviewer.card.id if self.mw.reviewer.card else None)});" self.web.evalWithCallback( f'require("anki/ui").loaded.then(() => {{ {js} }})', oncallback ) diff --git a/qt/aqt/mediasrv.py b/qt/aqt/mediasrv.py index 4ab3971ad..af9ab60ef 100644 --- a/qt/aqt/mediasrv.py +++ b/qt/aqt/mediasrv.py @@ -973,6 +973,7 @@ exposed_backend_list = [ "get_note", "new_note", "note_fields_check", + "defaults_for_adding", # NotetypesService "get_notetype", "get_notetype_names", diff --git a/ts/lib/components/DeckChooser.svelte b/ts/lib/components/DeckChooser.svelte index d79543ff0..59ca750a4 100644 --- a/ts/lib/components/DeckChooser.svelte +++ b/ts/lib/components/DeckChooser.svelte @@ -15,6 +15,11 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html } let { selectedDeck = $bindable(null), onChange }: Props = $props(); let decks: DeckNameId[] = $state([]); + let itemChooser: ItemChooser | null = $state(null); + + export function select(notetypeId: bigint) { + itemChooser?.select(notetypeId); + } $effect(() => { getDeckNames({ skipEmptyDefault: true, includeFiltered: false }).then( @@ -26,6 +31,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html item.id === itemId); + selectedItem = item ? item : null; + } + $effect(() => { if (!selectedItem && items.length > 0) { selectedItem = items[0]; diff --git a/ts/lib/components/NotetypeChooser.svelte b/ts/lib/components/NotetypeChooser.svelte index 1feb82c99..4820bdd92 100644 --- a/ts/lib/components/NotetypeChooser.svelte +++ b/ts/lib/components/NotetypeChooser.svelte @@ -16,6 +16,11 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html } let { selectedNotetype = $bindable(null), onChange }: Props = $props(); let notetypes: NotetypeNameId[] = $state([]); + let itemChooser: ItemChooser | null = $state(null); + + export function select(notetypeId: bigint) { + itemChooser?.select(notetypeId); + } $effect(() => { getNotetypeNames({}).then((response) => { @@ -25,6 +30,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html encodeIriPaths({ val: field })), @@ -1040,9 +1062,16 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html notetypeId: bigint, focusTo: number, originalNoteId: bigint | null, + reviewerCardId: bigint | null, ) { loadDebouncer.schedule(async () => { - await loadNoteInner(nid, notetypeId, focusTo, originalNoteId); + await loadNoteInner( + nid, + notetypeId, + focusTo, + originalNoteId, + reviewerCardId, + ); }); } @@ -1205,7 +1234,13 @@ components and functionality for general note editing. on:drop={checkNonLegacy(handlePickerDrop)} > {#if mode === "add" && !isLegacy} - + {/if} diff --git a/ts/routes/editor/editor-toolbar/EditorChoosers.svelte b/ts/routes/editor/editor-toolbar/EditorChoosers.svelte index 815c1fbdc..c706990a8 100644 --- a/ts/routes/editor/editor-toolbar/EditorChoosers.svelte +++ b/ts/routes/editor/editor-toolbar/EditorChoosers.svelte @@ -12,13 +12,17 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html interface Props { selectedNotetype: NotetypeNameId | null; - selectedDeck: DeckNameId | null; + selectedDeck?: DeckNameId | null; + notetypeChooser?: NotetypeChooser; + deckChooser?: DeckChooser; onNotetypeChange?: (notetype: NotetypeNameId) => void; onDeckChange?: (deck: DeckNameId) => void; } let { selectedNotetype = $bindable(null), selectedDeck = $bindable(null), + notetypeChooser = $bindable(), + deckChooser = $bindable(), onNotetypeChange, onDeckChange, }: Props = $props(); @@ -27,11 +31,19 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html

{tr.notetypesType()}

- +

{tr.decksDeck()}

- +