From f41014ca4bfea3ff8a38fdf8b0b8818add68da0a Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Thu, 21 Nov 2019 02:18:01 +0100 Subject: [PATCH 1/3] Add Cards save the previous note --- aqt/addcards.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aqt/addcards.py b/aqt/addcards.py index 365618881..3372dd437 100644 --- a/aqt/addcards.py +++ b/aqt/addcards.py @@ -28,6 +28,7 @@ class AddCards(QDialog): self.setupButtons() self.onReset() self.history = [] + self.previousNote = None restoreGeom(self, "add") addHook('reset', self.onReset) addHook('currentModelChanged', self.onModelChange) @@ -83,6 +84,7 @@ class AddCards(QDialog): def onModelChange(self): oldNote = self.editor.note note = self.mw.col.newNote() + self.previousNote = None if oldNote: oldFields = list(oldNote.keys()) newFields = list(note.keys()) @@ -176,6 +178,7 @@ question on all cards."""), help="AddItems") return self.addHistory(note) self.mw.requireReset() + self.previousNote = note return note def addCards(self): From d598434bde57c0cb053327ddfbba412fcd39283f Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Thu, 21 Nov 2019 02:18:14 +0100 Subject: [PATCH 2/3] Fields are blank compare to previous note So if a note is not empty but only because sticky fields didn't change, then it's considered as empty and we can close the windows without asking --- aqt/editor.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/aqt/editor.py b/aqt/editor.py index a190febf8..ad8d1f508 100644 --- a/aqt/editor.py +++ b/aqt/editor.py @@ -371,12 +371,15 @@ class Editor: contents)) browser.onSearchActivated() - def fieldsAreBlank(self): + def fieldsAreBlank(self, previousNote=None): if not self.note: return True m = self.note.model() for c, f in enumerate(self.note.fields): - if f and not m['flds'][c]['sticky']: + notChangedvalues = {"", "
"} + if previousNote and m['flds'][c]['sticky']: + notChangedvalues.add(previousNote.fields[c]) + if f not in notChangedvalues: return False return True From 6fc89d2f96d8b1d7bc55e47c0ce088fe236e249f Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Thu, 21 Nov 2019 02:18:52 +0100 Subject: [PATCH 3/3] Use fieldsAreBlank with the previous note --- aqt/addcards.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/aqt/addcards.py b/aqt/addcards.py index 3372dd437..d4e7e27c8 100644 --- a/aqt/addcards.py +++ b/aqt/addcards.py @@ -186,9 +186,7 @@ question on all cards."""), help="AddItems") def _addCards(self): self.editor.saveAddModeVars() - note = self.editor.note - note = self.addNote(note) - if not note: + if not self.addNote(self.editor.note): return tooltip(_("Added"), period=500) # stop anything playing @@ -222,7 +220,7 @@ question on all cards."""), help="AddItems") def ifCanClose(self, onOk): def afterSave(): - ok = (self.editor.fieldsAreBlank() or + ok = (self.editor.fieldsAreBlank(self.previousNote) or askUser(_("Close and lose current input?"), defaultno=True)) if ok: onOk()