mirror of
https://github.com/ankitects/anki.git
synced 2025-09-23 00:12:25 -04:00
add find_deck_in_tree()
This commit is contained in:
parent
578b60c104
commit
8eada2b57d
2 changed files with 14 additions and 11 deletions
|
@ -12,6 +12,7 @@ from anki import hooks
|
||||||
from anki.consts import *
|
from anki.consts import *
|
||||||
from anki.errors import DeckRenameError
|
from anki.errors import DeckRenameError
|
||||||
from anki.lang import _
|
from anki.lang import _
|
||||||
|
from anki.rsbackend import DeckTreeNode
|
||||||
from anki.utils import ids2str, intTime
|
from anki.utils import ids2str, intTime
|
||||||
|
|
||||||
# legacy code may pass this in as the type argument to .id()
|
# legacy code may pass this in as the type argument to .id()
|
||||||
|
@ -175,6 +176,16 @@ class DeckManager:
|
||||||
def deck_tree(self) -> pb.DeckTreeNode:
|
def deck_tree(self) -> pb.DeckTreeNode:
|
||||||
return self.col.backend.deck_tree(include_counts=False)
|
return self.col.backend.deck_tree(include_counts=False)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def find_deck_in_tree(cls, node: DeckTreeNode, deck_id: int) -> Optional[DeckTreeNode]:
|
||||||
|
if node.deck_id == deck_id:
|
||||||
|
return node
|
||||||
|
for child in node.children:
|
||||||
|
match = cls.find_deck_in_tree(child, deck_id)
|
||||||
|
if match:
|
||||||
|
return match
|
||||||
|
return None
|
||||||
|
|
||||||
def all(self) -> List:
|
def all(self) -> List:
|
||||||
"All decks. Expensive; prefer all_names_and_ids()"
|
"All decks. Expensive; prefer all_names_and_ids()"
|
||||||
return self.get_all_legacy()
|
return self.get_all_legacy()
|
||||||
|
|
|
@ -268,18 +268,10 @@ where id > ?""",
|
||||||
|
|
||||||
def _collapse(self, did: int) -> None:
|
def _collapse(self, did: int) -> None:
|
||||||
self.mw.col.decks.collapse(did)
|
self.mw.col.decks.collapse(did)
|
||||||
self._toggle_collapsed_in_node(did, self._dueTree)
|
node = self.mw.col.decks.find_deck_in_tree(self._dueTree, did)
|
||||||
self._renderPage(reuse=True)
|
if node:
|
||||||
|
|
||||||
def _toggle_collapsed_in_node(self, deck_id: int, node: DeckTreeNode) -> bool:
|
|
||||||
"Toggle collapsed on deck in tree. Returns true if found."
|
|
||||||
if node.deck_id == deck_id:
|
|
||||||
node.collapsed = not node.collapsed
|
node.collapsed = not node.collapsed
|
||||||
return True
|
self._renderPage(reuse=True)
|
||||||
for child in node.children:
|
|
||||||
if self._toggle_collapsed_in_node(deck_id, child):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def _dragDeckOnto(self, draggedDeckDid, ontoDeckDid):
|
def _dragDeckOnto(self, draggedDeckDid, ontoDeckDid):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue