Add reorderCards property to guiBrowse, add guiSelectNote
This commit is contained in:
parent
a17c4e42da
commit
29260d6a00
40
README.md
40
README.md
@ -1226,6 +1226,10 @@ Search parameters are passed to Anki, check the docs for more information: https
|
|||||||
* Invokes the *Card Browser* dialog and searches for a given query. Returns an array of identifiers of the cards that
|
* Invokes the *Card Browser* dialog and searches for a given query. Returns an array of identifiers of the cards that
|
||||||
were found. Query syntax is [documented here](https://docs.ankiweb.net/searching.html).
|
were found. Query syntax is [documented here](https://docs.ankiweb.net/searching.html).
|
||||||
|
|
||||||
|
Optionally, the `reorderCards` property can be provided to reorder the cards shown in the *Card Browser*.
|
||||||
|
This is an array including the `order` and `columnId` objects. `order` can be either `ascending` or `descending` while `columnId` can be one of several column identifiers (as documented in the [Anki source code](https://github.com/ankitects/anki/blob/main/rslib/src/browser_table.rs)).
|
||||||
|
The specified column needs to be visible in the *Card Browser*.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><i>Sample request:</i></summary>
|
<summary><i>Sample request:</i></summary>
|
||||||
|
|
||||||
@ -1234,7 +1238,11 @@ Search parameters are passed to Anki, check the docs for more information: https
|
|||||||
"action": "guiBrowse",
|
"action": "guiBrowse",
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"params": {
|
"params": {
|
||||||
"query": "deck:current"
|
"query": "deck:current",
|
||||||
|
"reorderCards": {
|
||||||
|
"order": "descending",
|
||||||
|
"columnId": "noteCrt"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -1251,6 +1259,36 @@ Search parameters are passed to Anki, check the docs for more information: https
|
|||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
#### `guiSelectNote`
|
||||||
|
|
||||||
|
* Finds the open instance of the *Card Browser* dialog and selects a note given a note identifier.
|
||||||
|
Returns `True` if the *Card Browser* is open, `False` otherwise.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><i>Sample request:</i></summary>
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"action": "guiSelectNote",
|
||||||
|
"version": 6,
|
||||||
|
"params": {
|
||||||
|
"note": 1494723142483
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><i>Sample result:</i></summary>
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"result": true,
|
||||||
|
"error": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
#### `guiSelectedNotes`
|
#### `guiSelectedNotes`
|
||||||
|
|
||||||
* Finds the open instance of the *Card Browser* dialog and returns an array of identifiers of the notes that are
|
* Finds the open instance of the *Card Browser* dialog and returns an array of identifiers of the notes that are
|
||||||
|
@ -1669,7 +1669,7 @@ class AnkiConnect:
|
|||||||
|
|
||||||
|
|
||||||
@util.api()
|
@util.api()
|
||||||
def guiBrowse(self, query=None):
|
def guiBrowse(self, query=None, reorderCards=None):
|
||||||
browser = aqt.dialogs.open('Browser', self.window())
|
browser = aqt.dialogs.open('Browser', self.window())
|
||||||
browser.activateWindow()
|
browser.activateWindow()
|
||||||
|
|
||||||
@ -1680,6 +1680,23 @@ class AnkiConnect:
|
|||||||
else:
|
else:
|
||||||
browser.onSearchActivated()
|
browser.onSearchActivated()
|
||||||
|
|
||||||
|
if reorderCards is not None:
|
||||||
|
if not isinstance(reorderCards, dict):
|
||||||
|
raise Exception('reorderCards should be a dict: {}'.format(reorderCards))
|
||||||
|
if not ('columnId' in reorderCards and 'order' in reorderCards):
|
||||||
|
raise Exception('Must provide a "columnId" and a "order" property"')
|
||||||
|
|
||||||
|
cardOrder = reorderCards['order']
|
||||||
|
if cardOrder not in ('ascending', 'descending'):
|
||||||
|
raise Exception('invalid card order: {}'.format(reorderCards['order']))
|
||||||
|
|
||||||
|
cardOrder = Qt.SortOrder.DescendingOrder if cardOrder == 'descending' else Qt.SortOrder.AscendingOrder
|
||||||
|
columnId = browser.table._model.active_column_index(reorderCards['columnId'])
|
||||||
|
if columnId == None:
|
||||||
|
raise Exception('invalid columnId: {}'.format(reorderCards['columnId']))
|
||||||
|
|
||||||
|
browser.table._on_sort_column_changed(columnId, cardOrder)
|
||||||
|
|
||||||
return self.findCards(query)
|
return self.findCards(query)
|
||||||
|
|
||||||
|
|
||||||
@ -1687,6 +1704,14 @@ class AnkiConnect:
|
|||||||
def guiEditNote(self, note):
|
def guiEditNote(self, note):
|
||||||
Edit.open_dialog_and_show_note_with_id(note)
|
Edit.open_dialog_and_show_note_with_id(note)
|
||||||
|
|
||||||
|
@util.api()
|
||||||
|
def guiSelectNote(self, note):
|
||||||
|
(creator, instance) = aqt.dialogs._dialogs['Browser']
|
||||||
|
if instance is None:
|
||||||
|
return False
|
||||||
|
instance.table.clear_selection()
|
||||||
|
instance.table.select_single_card(note)
|
||||||
|
return True
|
||||||
|
|
||||||
@util.api()
|
@util.api()
|
||||||
def guiSelectedNotes(self):
|
def guiSelectedNotes(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user