Merge pull request #137 from hgiesel/furtherdev

Make guiAddCards have a return value
This commit is contained in:
Alex Yatskov 2020-02-23 11:22:36 -08:00 committed by GitHub
commit 96bb9e17c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 17 deletions

View File

@ -1594,6 +1594,8 @@ guarantee that your application continues to function properly in the future.
The `closeAfterAdding` member inside `options` group can be set to true to create a dialog that closes upon adding the note. The `closeAfterAdding` member inside `options` group can be set to true to create a dialog that closes upon adding the note.
Invoking the action mutliple times with this option will create _multiple windows_. Invoking the action mutliple times with this option will create _multiple windows_.
The result is the ID of the note which would be added, if the user chose to confirm the *Add Cards* dialogue.
*Sample request*: *Sample request*:
```json ```json
{ {
@ -1621,7 +1623,7 @@ guarantee that your application continues to function properly in the future.
*Sample result*: *Sample result*:
```json ```json
{ {
"result": null, "result": 1496198395707,
"error": null "error": null
} }
``` ```

View File

@ -977,44 +977,53 @@ class AnkiConnect:
aqt.dialogs.open(windowName, self.window()) aqt.dialogs.open(windowName, self.window())
addCards.setAndFocusNote(editor.note) addCards.setAndFocusNote(editor.note)
return ankiNote.id
elif note is not None: elif note is not None:
currentWindow = aqt.dialogs._dialogs['AddCards'][1] collection = self.collection()
ankiNote = anki.notes.Note(collection, model)
# fill out card beforehand, so we can be sure of the note id
if 'fields' in note:
for name, value in note['fields'].items():
if name in ankiNote:
ankiNote[name] = value
if 'tags' in note:
ankiNote.tags = note['tags']
def openNewWindow(): def openNewWindow():
nonlocal ankiNote
addCards = aqt.dialogs.open('AddCards', self.window()) addCards = aqt.dialogs.open('AddCards', self.window())
if savedMid: if savedMid:
deck['mid'] = savedMid deck['mid'] = savedMid
editor = addCards.editor addCards.editor.note = ankiNote
ankiNote = editor.note addCards.editor.loadNote()
addCards.editor.updateTags()
# we have to fill out the card in the callback
# otherwise we can't assure, the new window is open
if 'fields' in note:
for name, value in note['fields'].items():
if name in ankiNote:
ankiNote[name] = value
editor.loadNote()
if 'tags' in note:
ankiNote.tags = note['tags']
editor.updateTags()
addCards.activateWindow() addCards.activateWindow()
aqt.dialogs.open('AddCards', self.window()) aqt.dialogs.open('AddCards', self.window())
addCards.setAndFocusNote(editor.note) addCards.setAndFocusNote(addCards.editor.note)
currentWindow = aqt.dialogs._dialogs['AddCards'][1]
if currentWindow is not None: if currentWindow is not None:
currentWindow.closeWithCallback(openNewWindow) currentWindow.closeWithCallback(openNewWindow)
else: else:
openNewWindow() openNewWindow()
return ankiNote.id
else: else:
addCards = aqt.dialogs.open('AddCards', self.window()) addCards = aqt.dialogs.open('AddCards', self.window())
addCards.activateWindow() addCards.activateWindow()
return addCards.editor.note.id
@util.api() @util.api()
def guiReviewActive(self): def guiReviewActive(self):
return self.reviewer().card is not None and self.window().state == 'review' return self.reviewer().card is not None and self.window().state == 'review'