mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 07:22:23 -04:00
Preserve identical fields when switching note types
This commit is contained in:
parent
1b0750ba9b
commit
df4b74f7bb
1 changed files with 26 additions and 2 deletions
|
@ -30,7 +30,7 @@ class AddCards(QDialog):
|
||||||
self.forceClose = False
|
self.forceClose = False
|
||||||
restoreGeom(self, "add")
|
restoreGeom(self, "add")
|
||||||
addHook('reset', self.onReset)
|
addHook('reset', self.onReset)
|
||||||
addHook('currentModelChanged', self.onReset)
|
addHook('currentModelChanged', self.onModelChange)
|
||||||
addCloseShortcut(self)
|
addCloseShortcut(self)
|
||||||
self.show()
|
self.show()
|
||||||
self.setupNewNote()
|
self.setupNewNote()
|
||||||
|
@ -86,6 +86,30 @@ class AddCards(QDialog):
|
||||||
self.editor.setNote(f, focus=True)
|
self.editor.setNote(f, focus=True)
|
||||||
return f
|
return f
|
||||||
|
|
||||||
|
def onModelChange(self):
|
||||||
|
oldNote = self.editor.note
|
||||||
|
note = self.setupNewNote(set=False)
|
||||||
|
if oldNote:
|
||||||
|
oldFields = oldNote.keys()
|
||||||
|
newFields = note.keys()
|
||||||
|
for n, f in enumerate(note.model()['flds']):
|
||||||
|
fieldName = f['name']
|
||||||
|
try:
|
||||||
|
oldFieldName = oldNote.model()['flds'][n]['name']
|
||||||
|
except IndexError:
|
||||||
|
oldFieldName = None
|
||||||
|
# copy identical fields
|
||||||
|
if fieldName in oldFields:
|
||||||
|
note[fieldName] = oldNote[fieldName]
|
||||||
|
# set non-identical fields by field index
|
||||||
|
elif oldFieldName and oldFieldName not in newFields:
|
||||||
|
try:
|
||||||
|
note.fields[n] = oldNote.fields[n]
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
self.editor.currentField = 0
|
||||||
|
self.editor.setNote(note, focus=True)
|
||||||
|
|
||||||
def onReset(self, model=None, keep=False):
|
def onReset(self, model=None, keep=False):
|
||||||
oldNote = self.editor.note
|
oldNote = self.editor.note
|
||||||
note = self.setupNewNote(set=False)
|
note = self.setupNewNote(set=False)
|
||||||
|
@ -180,7 +204,7 @@ question on all cards."""), help="AddItems")
|
||||||
if not self.canClose():
|
if not self.canClose():
|
||||||
return
|
return
|
||||||
remHook('reset', self.onReset)
|
remHook('reset', self.onReset)
|
||||||
remHook('currentModelChanged', self.onReset)
|
remHook('currentModelChanged', self.onModelChange)
|
||||||
clearAudioQueue()
|
clearAudioQueue()
|
||||||
self.removeTempNote(self.editor.note)
|
self.removeTempNote(self.editor.note)
|
||||||
self.editor.setNote(None)
|
self.editor.setNote(None)
|
||||||
|
|
Loading…
Reference in a new issue