mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
honor expand setting
This commit is contained in:
parent
b2ea4ee36c
commit
879db95148
1 changed files with 38 additions and 6 deletions
|
@ -413,6 +413,9 @@ class SidebarModel(QAbstractItemModel):
|
|||
self.root = root
|
||||
self.iconCache: Dict[str, QIcon] = {}
|
||||
|
||||
# Qt API
|
||||
######################################################################
|
||||
|
||||
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
|
||||
if not parent.isValid():
|
||||
return len(self.root.children)
|
||||
|
@ -420,12 +423,6 @@ class SidebarModel(QAbstractItemModel):
|
|||
item: SidebarItem = parent.internalPointer()
|
||||
return len(item.children)
|
||||
|
||||
def hasChildren(self, parent: QModelIndex = QModelIndex()) -> bool:
|
||||
if not parent.isValid():
|
||||
return True
|
||||
item: SidebarItem = parent.internalPointer()
|
||||
return len(item.children) > 0
|
||||
|
||||
def columnCount(self, parent: QModelIndex = QModelIndex()) -> int:
|
||||
return 1
|
||||
|
||||
|
@ -472,6 +469,9 @@ class SidebarModel(QAbstractItemModel):
|
|||
else:
|
||||
return QVariant(self.iconFromRef(item.icon))
|
||||
|
||||
# Helpers
|
||||
######################################################################
|
||||
|
||||
def iconFromRef(self, iconRef: str) -> QIcon:
|
||||
icon = self.iconCache.get(iconRef)
|
||||
if icon is None:
|
||||
|
@ -479,6 +479,32 @@ class SidebarModel(QAbstractItemModel):
|
|||
self.iconCache[iconRef] = icon
|
||||
return icon
|
||||
|
||||
def expandWhereNeccessary(self, tree: QTreeView) -> None:
|
||||
for row, child in enumerate(self.root.children):
|
||||
if child.expanded:
|
||||
idx = self.index(row, 0, QModelIndex())
|
||||
self._expandWhereNeccessary(idx, tree)
|
||||
|
||||
def _expandWhereNeccessary(self, parent: QModelIndex, tree: QTreeView) -> None:
|
||||
if not parent.isValid():
|
||||
parentItem = self.root
|
||||
else:
|
||||
parentItem: SidebarItem = parent.internalPointer()
|
||||
|
||||
# nothing to do?
|
||||
if not parentItem.expanded:
|
||||
return
|
||||
|
||||
# expand children
|
||||
for row, child in enumerate(parentItem.children):
|
||||
if not child.expanded:
|
||||
continue
|
||||
childIdx = self.index(row, 0, parent)
|
||||
self._expandWhereNeccessary(childIdx, tree)
|
||||
|
||||
# then ourselves
|
||||
tree.setExpanded(parent, True)
|
||||
|
||||
# Browser window
|
||||
######################################################################
|
||||
|
||||
|
@ -928,6 +954,7 @@ by clicking on one on the left."""))
|
|||
self.sidebarTree.setUniformRowHeights(True)
|
||||
self.sidebarTree.setHeaderHidden(True)
|
||||
self.sidebarTree.setIndentation(15)
|
||||
self.sidebarTree.expanded.connect(self.onSidebarItemExpanded)
|
||||
dw.setWidget(self.sidebarTree)
|
||||
p = QPalette()
|
||||
p.setColor(QPalette.Base, p.window().color())
|
||||
|
@ -937,6 +964,10 @@ by clicking on one on the left."""))
|
|||
self.sidebarDockWidget.setTitleBarWidget(QWidget())
|
||||
self.addDockWidget(Qt.LeftDockWidgetArea, dw)
|
||||
|
||||
def onSidebarItemExpanded(self, idx: QModelIndex) -> None:
|
||||
item: SidebarItem = idx.internalPointer()
|
||||
#item.on
|
||||
|
||||
def onSidebarVisChanged(self, _visible: bool) -> None:
|
||||
self.maybeRefreshSidebar()
|
||||
|
||||
|
@ -951,6 +982,7 @@ by clicking on one on the left."""))
|
|||
root = self.buildTree()
|
||||
model = SidebarModel(root)
|
||||
self.sidebarTree.setModel(model)
|
||||
model.expandWhereNeccessary(self.sidebarTree)
|
||||
self.mw.progress.timer(10, deferredDisplay, False)
|
||||
|
||||
def buildTree(self) -> SidebarItem:
|
||||
|
|
Loading…
Reference in a new issue