mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Fix Create Copy
This commit is contained in:
parent
d5d298fc3f
commit
ae42f5685b
4 changed files with 20 additions and 21 deletions
|
@ -65,12 +65,11 @@ class NewAddCards(QMainWindow):
|
|||
if deck_id or (deck_id := self.col.default_deck_for_notetype(note.mid)):
|
||||
self.deck_chooser.selected_deck_id = deck_id
|
||||
|
||||
new_note = self._new_note()
|
||||
new_note.fields = note.fields[:]
|
||||
new_note.tags = note.tags[:]
|
||||
|
||||
self.editor.orig_note_id = note.id
|
||||
self.setAndFocusNote(new_note)
|
||||
self.editor.load_note(
|
||||
mid=note.mid,
|
||||
original_note_id=note.id,
|
||||
focus_to=0,
|
||||
)
|
||||
|
||||
def setupEditor(self) -> None:
|
||||
self.editor = aqt.editor.NewEditor(
|
||||
|
@ -109,9 +108,6 @@ class NewAddCards(QMainWindow):
|
|||
def helpRequested(self) -> None:
|
||||
openHelp(HelpPage.ADDING_CARD_AND_NOTE)
|
||||
|
||||
def setAndFocusNote(self, note: Note) -> None:
|
||||
self.editor.set_note(note, focusTo=0)
|
||||
|
||||
def show_notetype_selector(self) -> None:
|
||||
self.editor.call_after_note_saved(self.notetype_chooser.choose_notetype)
|
||||
|
||||
|
@ -147,11 +143,6 @@ class NewAddCards(QMainWindow):
|
|||
update_deck=False,
|
||||
)
|
||||
|
||||
def _new_note(self) -> Note:
|
||||
return self.col.new_note(
|
||||
self.col.models.get(self.notetype_chooser.selected_notetype_id)
|
||||
)
|
||||
|
||||
def add_current_note(self) -> None:
|
||||
self.editor.web.eval(f"addCurrentNote({self.deck_chooser.selected_deck_id})")
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@ from dataclasses import dataclass
|
|||
from random import randrange
|
||||
from typing import Any
|
||||
|
||||
from anki._legacy import deprecated
|
||||
from anki.cards import Card
|
||||
from anki.hooks import runFilter
|
||||
from anki.models import NotetypeId
|
||||
|
@ -85,8 +84,6 @@ class NewEditor:
|
|||
# Similar to currentField, but not set to None on a blur. May be
|
||||
# outside the bounds of the current notetype.
|
||||
self.last_field_index: int | None = None
|
||||
# used when creating a copy of an existing note
|
||||
self.orig_note_id: NoteId | None = None
|
||||
# current card, for card layout
|
||||
self.card: Card | None = None
|
||||
self.state: EditorState = EditorState.INITIAL
|
||||
|
@ -397,7 +394,6 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
|
|||
self.currentField = None
|
||||
self.load_note(mid, focus_to=focus_to)
|
||||
|
||||
@deprecated(replaced_by=set_nid)
|
||||
def set_note(
|
||||
self,
|
||||
note: Note | None,
|
||||
|
@ -413,7 +409,12 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
|
|||
self.widget.hide()
|
||||
|
||||
@on_editor_ready
|
||||
def load_note(self, mid: int, focus_to: int | None = None) -> None:
|
||||
def load_note(
|
||||
self,
|
||||
mid: int,
|
||||
original_note_id: NoteId | None = None,
|
||||
focus_to: int | None = None,
|
||||
) -> None:
|
||||
self.widget.show()
|
||||
|
||||
def oncallback(arg: Any) -> None:
|
||||
|
@ -426,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(self.orig_note_id)});"
|
||||
js = f"loadNote({json.dumps(self.nid)}, {mid}, {json.dumps(focus_to)}, {json.dumps(original_note_id)});"
|
||||
self.web.evalWithCallback(
|
||||
f'require("anki/ui").loaded.then(() => {{ {js} }})', oncallback
|
||||
)
|
||||
|
|
|
@ -1167,7 +1167,7 @@ timerStopped = false;
|
|||
|
||||
def on_create_copy(self) -> None:
|
||||
if self.card:
|
||||
aqt.dialogs.open("AddCards", self.mw).set_note(
|
||||
aqt.dialogs.open("NewAddCards", self.mw).set_note(
|
||||
self.card.note(), self.card.current_deck_id()
|
||||
)
|
||||
|
||||
|
|
|
@ -924,6 +924,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
}),
|
||||
);
|
||||
}
|
||||
if (originalNoteId) {
|
||||
const originalNote = await getNote({
|
||||
nid: originalNoteId,
|
||||
});
|
||||
note!.fields = originalNote.fields;
|
||||
note!.tags = originalNote.tags;
|
||||
}
|
||||
const fieldValues = (
|
||||
await Promise.all(
|
||||
note!.fields.map((field) => encodeIriPaths({ val: field })),
|
||||
|
|
Loading…
Reference in a new issue