mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Remove options for all/allNames
Instead, we always see default deck if it has a child As indicated in https://github.com/ankitects/anki/pull/452
This commit is contained in:
parent
1126ae293e
commit
927749d7a6
2 changed files with 41 additions and 15 deletions
|
@ -219,7 +219,7 @@ class DeckManager:
|
||||||
self.select(int(list(self.decks.keys())[0]))
|
self.select(int(list(self.decks.keys())[0]))
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
def allNames(self, dyn: bool = True, forceDefault: bool = True) -> List:
|
def allNames(self, dyn: bool = True, force_default: bool = True) -> List:
|
||||||
"An unsorted list of all deck names."
|
"An unsorted list of all deck names."
|
||||||
if dyn:
|
if dyn:
|
||||||
return [x["name"] for x in self.all(force_default=force_default)]
|
return [x["name"] for x in self.all(force_default=force_default)]
|
||||||
|
@ -228,8 +228,15 @@ class DeckManager:
|
||||||
x["name"] for x in self.all(force_default=force_default) if not x["dyn"]
|
x["name"] for x in self.all(force_default=force_default) if not x["dyn"]
|
||||||
]
|
]
|
||||||
|
|
||||||
def all(self, force_default: int = ALL_DECKS) -> List:
|
def all(self, force_default: bool = True) -> List:
|
||||||
"A list of all decks."
|
"""A list of all decks.
|
||||||
|
|
||||||
|
list contains default deck if either:
|
||||||
|
* force_default is True
|
||||||
|
* there are no other deck
|
||||||
|
* default deck contains a card
|
||||||
|
* default deck has a child (assumed not to be the case if assume_no_child)
|
||||||
|
"""
|
||||||
decks = list(self.decks.values())
|
decks = list(self.decks.values())
|
||||||
if not force_default and not self.shouldDefaultBeDisplayed(force_default):
|
if not force_default and not self.shouldDefaultBeDisplayed(force_default):
|
||||||
decks = [deck for deck in decks if deck["id"] != 1]
|
decks = [deck for deck in decks if deck["id"] != 1]
|
||||||
|
@ -509,33 +516,40 @@ class DeckManager:
|
||||||
self._recoverOrphans()
|
self._recoverOrphans()
|
||||||
self._checkDeckTree()
|
self._checkDeckTree()
|
||||||
|
|
||||||
def shouldDeckBeDisplayed(self, deck, force_default: int = ALL_DECKS) -> bool:
|
def shouldDeckBeDisplayed(
|
||||||
|
self, deck, force_default: bool = True, assume_no_child: bool = False
|
||||||
|
) -> bool:
|
||||||
"""Whether the deck should appear in main window, browser side list, filter, deck selection...
|
"""Whether the deck should appear in main window, browser side list, filter, deck selection...
|
||||||
|
|
||||||
True, except for empty default deck without children"""
|
True, except for empty default deck without children"""
|
||||||
if deck["id"] != "1":
|
if deck["id"] != "1":
|
||||||
return True
|
return True
|
||||||
return self.shouldDefaultBeDisplayed(force_default)
|
return self.shouldDefaultBeDisplayed(force_default, assume_no_child)
|
||||||
|
|
||||||
def shouldDefaultBeDisplayed(
|
def shouldDefaultBeDisplayed(
|
||||||
self, force_default: int = ALL_DECKS, defaultDeck=None
|
self,
|
||||||
|
force_default: bool = True,
|
||||||
|
assume_no_child: bool = False,
|
||||||
|
defaultDeck=None,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Whether the default deck should appear in main window, browser side list, filter, deck selection...
|
"""Whether the default deck should appear in main window, browser side list, filter, deck selection...
|
||||||
|
|
||||||
True, except for empty default deck (without children)"""
|
True, except for empty default deck (without children)"""
|
||||||
if force_default == ALL_DECKS:
|
if force_default:
|
||||||
return True
|
return True
|
||||||
if self.col.db.scalar("select 1 from cards where did = 1 limit 1"):
|
if self.col.db.scalar("select 1 from cards where did = 1 limit 1"):
|
||||||
return True
|
return True
|
||||||
if len(self.decks) == 1:
|
if len(self.decks) == 1:
|
||||||
return True
|
return True
|
||||||
if force_default == WITHOUT_EMPTY_LEAF_DEFAULT:
|
# looking for children
|
||||||
if defaultDeck is None:
|
if assume_no_child:
|
||||||
defaultDeck = self.get(1)
|
return False
|
||||||
defaultName = defaultDeck["name"]
|
if defaultDeck is None:
|
||||||
for name in self.allNames():
|
defaultDeck = self.get(1)
|
||||||
if name.startswith(f"{defaultName}::"):
|
defaultName = defaultDeck["name"]
|
||||||
return True
|
for name in self.allNames():
|
||||||
|
if name.startswith(f"{defaultName}::"):
|
||||||
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Deck selection
|
# Deck selection
|
||||||
|
|
|
@ -1156,6 +1156,15 @@ by clicking on one on the left."""
|
||||||
|
|
||||||
def fillGroups(root, grps, head=""):
|
def fillGroups(root, grps, head=""):
|
||||||
for g in grps:
|
for g in grps:
|
||||||
|
baseName = g[0]
|
||||||
|
did = g[1]
|
||||||
|
children = g[5]
|
||||||
|
if str(did) == "1" and not children:
|
||||||
|
if not self.mw.col.decks.shouldDefaultBeDisplayed(
|
||||||
|
force_default=False, assume_no_child=True
|
||||||
|
):
|
||||||
|
|
||||||
|
continue
|
||||||
item = SidebarItem(
|
item = SidebarItem(
|
||||||
g[0],
|
g[0],
|
||||||
":/icons/deck.svg",
|
":/icons/deck.svg",
|
||||||
|
@ -1312,7 +1321,10 @@ by clicking on one on the left."""
|
||||||
subm.addSeparator()
|
subm.addSeparator()
|
||||||
addDecks(subm, children)
|
addDecks(subm, children)
|
||||||
else:
|
else:
|
||||||
parent.addItem(shortname, self._filterFunc("deck", name))
|
if did != 1 or self.col.decks.shouldDefaultBeDisplayed(
|
||||||
|
force_default=False, assume_no_child=True
|
||||||
|
):
|
||||||
|
parent.addItem(shortname, self._filterFunc("deck", name))
|
||||||
|
|
||||||
# fixme: could rewrite to avoid calculating due # in the future
|
# fixme: could rewrite to avoid calculating due # in the future
|
||||||
alldecks = self.col.sched.deckDueTree()
|
alldecks = self.col.sched.deckDueTree()
|
||||||
|
|
Loading…
Reference in a new issue