mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
Sort decks according to their paths
Currently it's sorted alphabetically. Because of this, "A::B" appears between "A9" and "AA" in list of decks.
This commit is contained in:
parent
77741977a1
commit
5d55c4cda2
2 changed files with 11 additions and 4 deletions
|
@ -5,7 +5,6 @@ from __future__ import annotations
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
import operator
|
|
||||||
import unicodedata
|
import unicodedata
|
||||||
from typing import Any, Dict, List, Optional, Set, Tuple, Union
|
from typing import Any, Dict, List, Optional, Set, Tuple, Union
|
||||||
|
|
||||||
|
@ -298,6 +297,10 @@ class DeckManager:
|
||||||
def _basename(self, name: str) -> Any:
|
def _basename(self, name: str) -> Any:
|
||||||
return self._path(name)[-1]
|
return self._path(name)[-1]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def key(cls, deck: Dict[str, Any]) -> List[str]:
|
||||||
|
return cls._path(deck["name"])
|
||||||
|
|
||||||
def _ensureParents(self, name: str) -> Any:
|
def _ensureParents(self, name: str) -> Any:
|
||||||
"Ensure parents exist, and return name with case matching parents."
|
"Ensure parents exist, and return name with case matching parents."
|
||||||
s = ""
|
s = ""
|
||||||
|
@ -455,7 +458,7 @@ class DeckManager:
|
||||||
|
|
||||||
def _checkDeckTree(self) -> None:
|
def _checkDeckTree(self) -> None:
|
||||||
decks = self.col.decks.all()
|
decks = self.col.decks.all()
|
||||||
decks.sort(key=operator.itemgetter("name"))
|
decks.sort(key=self.key)
|
||||||
names: Set[str] = set()
|
names: Set[str] = set()
|
||||||
|
|
||||||
for deck in decks:
|
for deck in decks:
|
||||||
|
@ -571,7 +574,7 @@ class DeckManager:
|
||||||
childMap = {}
|
childMap = {}
|
||||||
|
|
||||||
# go through all decks, sorted by name
|
# go through all decks, sorted by name
|
||||||
for deck in sorted(self.all(), key=operator.itemgetter("name")):
|
for deck in sorted(self.all(), key=self.key):
|
||||||
node: Dict[int, Any] = {}
|
node: Dict[int, Any] = {}
|
||||||
childMap[deck["id"]] = node
|
childMap[deck["id"]] = node
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
import aqt
|
import aqt
|
||||||
|
from anki.decks import DeckManager
|
||||||
from anki.lang import _
|
from anki.lang import _
|
||||||
from aqt import gui_hooks
|
from aqt import gui_hooks
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
|
@ -51,7 +52,10 @@ class StudyDeck(QDialog):
|
||||||
if title:
|
if title:
|
||||||
self.setWindowTitle(title)
|
self.setWindowTitle(title)
|
||||||
if not names:
|
if not names:
|
||||||
names = sorted(self.mw.col.decks.allNames(dyn=dyn, force_default=False))
|
names = sorted(
|
||||||
|
self.mw.col.decks.allNames(dyn=dyn, force_default=False),
|
||||||
|
key=DeckManager._path,
|
||||||
|
)
|
||||||
self.nameFunc = None
|
self.nameFunc = None
|
||||||
self.origNames = names
|
self.origNames = names
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue