mirror of
https://github.com/ankitects/anki.git
synced 2025-09-25 01:06:35 -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.root = root
|
||||||
self.iconCache: Dict[str, QIcon] = {}
|
self.iconCache: Dict[str, QIcon] = {}
|
||||||
|
|
||||||
|
# Qt API
|
||||||
|
######################################################################
|
||||||
|
|
||||||
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
|
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
|
||||||
if not parent.isValid():
|
if not parent.isValid():
|
||||||
return len(self.root.children)
|
return len(self.root.children)
|
||||||
|
@ -420,12 +423,6 @@ class SidebarModel(QAbstractItemModel):
|
||||||
item: SidebarItem = parent.internalPointer()
|
item: SidebarItem = parent.internalPointer()
|
||||||
return len(item.children)
|
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:
|
def columnCount(self, parent: QModelIndex = QModelIndex()) -> int:
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
@ -472,6 +469,9 @@ class SidebarModel(QAbstractItemModel):
|
||||||
else:
|
else:
|
||||||
return QVariant(self.iconFromRef(item.icon))
|
return QVariant(self.iconFromRef(item.icon))
|
||||||
|
|
||||||
|
# Helpers
|
||||||
|
######################################################################
|
||||||
|
|
||||||
def iconFromRef(self, iconRef: str) -> QIcon:
|
def iconFromRef(self, iconRef: str) -> QIcon:
|
||||||
icon = self.iconCache.get(iconRef)
|
icon = self.iconCache.get(iconRef)
|
||||||
if icon is None:
|
if icon is None:
|
||||||
|
@ -479,6 +479,32 @@ class SidebarModel(QAbstractItemModel):
|
||||||
self.iconCache[iconRef] = icon
|
self.iconCache[iconRef] = icon
|
||||||
return 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
|
# Browser window
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
|
@ -928,6 +954,7 @@ by clicking on one on the left."""))
|
||||||
self.sidebarTree.setUniformRowHeights(True)
|
self.sidebarTree.setUniformRowHeights(True)
|
||||||
self.sidebarTree.setHeaderHidden(True)
|
self.sidebarTree.setHeaderHidden(True)
|
||||||
self.sidebarTree.setIndentation(15)
|
self.sidebarTree.setIndentation(15)
|
||||||
|
self.sidebarTree.expanded.connect(self.onSidebarItemExpanded)
|
||||||
dw.setWidget(self.sidebarTree)
|
dw.setWidget(self.sidebarTree)
|
||||||
p = QPalette()
|
p = QPalette()
|
||||||
p.setColor(QPalette.Base, p.window().color())
|
p.setColor(QPalette.Base, p.window().color())
|
||||||
|
@ -937,6 +964,10 @@ by clicking on one on the left."""))
|
||||||
self.sidebarDockWidget.setTitleBarWidget(QWidget())
|
self.sidebarDockWidget.setTitleBarWidget(QWidget())
|
||||||
self.addDockWidget(Qt.LeftDockWidgetArea, dw)
|
self.addDockWidget(Qt.LeftDockWidgetArea, dw)
|
||||||
|
|
||||||
|
def onSidebarItemExpanded(self, idx: QModelIndex) -> None:
|
||||||
|
item: SidebarItem = idx.internalPointer()
|
||||||
|
#item.on
|
||||||
|
|
||||||
def onSidebarVisChanged(self, _visible: bool) -> None:
|
def onSidebarVisChanged(self, _visible: bool) -> None:
|
||||||
self.maybeRefreshSidebar()
|
self.maybeRefreshSidebar()
|
||||||
|
|
||||||
|
@ -951,6 +982,7 @@ by clicking on one on the left."""))
|
||||||
root = self.buildTree()
|
root = self.buildTree()
|
||||||
model = SidebarModel(root)
|
model = SidebarModel(root)
|
||||||
self.sidebarTree.setModel(model)
|
self.sidebarTree.setModel(model)
|
||||||
|
model.expandWhereNeccessary(self.sidebarTree)
|
||||||
self.mw.progress.timer(10, deferredDisplay, False)
|
self.mw.progress.timer(10, deferredDisplay, False)
|
||||||
|
|
||||||
def buildTree(self) -> SidebarItem:
|
def buildTree(self) -> SidebarItem:
|
||||||
|
|
Loading…
Reference in a new issue