mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -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)):
|
if deck_id or (deck_id := self.col.default_deck_for_notetype(note.mid)):
|
||||||
self.deck_chooser.selected_deck_id = deck_id
|
self.deck_chooser.selected_deck_id = deck_id
|
||||||
|
|
||||||
new_note = self._new_note()
|
self.editor.load_note(
|
||||||
new_note.fields = note.fields[:]
|
mid=note.mid,
|
||||||
new_note.tags = note.tags[:]
|
original_note_id=note.id,
|
||||||
|
focus_to=0,
|
||||||
self.editor.orig_note_id = note.id
|
)
|
||||||
self.setAndFocusNote(new_note)
|
|
||||||
|
|
||||||
def setupEditor(self) -> None:
|
def setupEditor(self) -> None:
|
||||||
self.editor = aqt.editor.NewEditor(
|
self.editor = aqt.editor.NewEditor(
|
||||||
|
@ -109,9 +108,6 @@ class NewAddCards(QMainWindow):
|
||||||
def helpRequested(self) -> None:
|
def helpRequested(self) -> None:
|
||||||
openHelp(HelpPage.ADDING_CARD_AND_NOTE)
|
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:
|
def show_notetype_selector(self) -> None:
|
||||||
self.editor.call_after_note_saved(self.notetype_chooser.choose_notetype)
|
self.editor.call_after_note_saved(self.notetype_chooser.choose_notetype)
|
||||||
|
|
||||||
|
@ -147,11 +143,6 @@ class NewAddCards(QMainWindow):
|
||||||
update_deck=False,
|
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:
|
def add_current_note(self) -> None:
|
||||||
self.editor.web.eval(f"addCurrentNote({self.deck_chooser.selected_deck_id})")
|
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 random import randrange
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from anki._legacy import deprecated
|
|
||||||
from anki.cards import Card
|
from anki.cards import Card
|
||||||
from anki.hooks import runFilter
|
from anki.hooks import runFilter
|
||||||
from anki.models import NotetypeId
|
from anki.models import NotetypeId
|
||||||
|
@ -85,8 +84,6 @@ class NewEditor:
|
||||||
# Similar to currentField, but not set to None on a blur. May be
|
# Similar to currentField, but not set to None on a blur. May be
|
||||||
# outside the bounds of the current notetype.
|
# outside the bounds of the current notetype.
|
||||||
self.last_field_index: int | None = None
|
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
|
# current card, for card layout
|
||||||
self.card: Card | None = None
|
self.card: Card | None = None
|
||||||
self.state: EditorState = EditorState.INITIAL
|
self.state: EditorState = EditorState.INITIAL
|
||||||
|
@ -397,7 +394,6 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
|
||||||
self.currentField = None
|
self.currentField = None
|
||||||
self.load_note(mid, focus_to=focus_to)
|
self.load_note(mid, focus_to=focus_to)
|
||||||
|
|
||||||
@deprecated(replaced_by=set_nid)
|
|
||||||
def set_note(
|
def set_note(
|
||||||
self,
|
self,
|
||||||
note: Note | None,
|
note: Note | None,
|
||||||
|
@ -413,7 +409,12 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
|
||||||
self.widget.hide()
|
self.widget.hide()
|
||||||
|
|
||||||
@on_editor_ready
|
@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()
|
self.widget.show()
|
||||||
|
|
||||||
def oncallback(arg: Any) -> None:
|
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)
|
gui_hooks.editor_did_load_note(self)
|
||||||
|
|
||||||
assert self.mw.pm.profile is not None
|
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(
|
self.web.evalWithCallback(
|
||||||
f'require("anki/ui").loaded.then(() => {{ {js} }})', oncallback
|
f'require("anki/ui").loaded.then(() => {{ {js} }})', oncallback
|
||||||
)
|
)
|
||||||
|
|
|
@ -1167,7 +1167,7 @@ timerStopped = false;
|
||||||
|
|
||||||
def on_create_copy(self) -> None:
|
def on_create_copy(self) -> None:
|
||||||
if self.card:
|
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()
|
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 = (
|
const fieldValues = (
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
note!.fields.map((field) => encodeIriPaths({ val: field })),
|
note!.fields.map((field) => encodeIriPaths({ val: field })),
|
||||||
|
|
Loading…
Reference in a new issue