diff --git a/libs/pyTermTk/TermTk/TTkUiTools/properties/tree.py b/libs/pyTermTk/TermTk/TTkUiTools/properties/tree.py index 6df9ea89..e4ed8bbd 100644 --- a/libs/pyTermTk/TermTk/TTkUiTools/properties/tree.py +++ b/libs/pyTermTk/TermTk/TTkUiTools/properties/tree.py @@ -41,5 +41,7 @@ TTkTreeProperties = { 'itemExpanded(TTkTreeWidgetItem)' : {'name' : 'itemExpanded' , 'type': TTkTreeWidgetItem}, 'itemCollapsed(TTkTreeWidgetItem)' : {'name' : 'itemCollapsed' , 'type': TTkTreeWidgetItem}, },'slots' : { + 'expandAll()' : {'name': 'expandAll', 'type':None}, + 'collapseAll()' : {'name': 'collapseAll', 'type':None}, } } diff --git a/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/tree.py b/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/tree.py index d12342f6..02682e6b 100644 --- a/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/tree.py +++ b/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/tree.py @@ -42,6 +42,7 @@ class TTkTree(TTkAbstractScrollArea): 'setColumnWidth', 'resizeColumnToContents', 'sortColumn', 'sortItems', 'dragDropMode', 'setDragDropMode', + 'expandAll', 'collapseAll', # 'appendItem', 'setAlignment', 'setColumnColors', 'setColumnSize', 'setHeader', 'addTopLevelItem', 'addTopLevelItems', 'takeTopLevelItem', 'topLevelItem', 'indexOfTopLevelItem', 'selectedItems', 'clear']) ) diff --git a/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidget.py b/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidget.py index edc4ff37..1ae58471 100644 --- a/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidget.py +++ b/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidget.py @@ -337,6 +337,26 @@ class TTkTreeWidget(TTkAbstractScrollView): contentSize = max(row.data[column].termWidth() for row in self._cache) self.setColumnWidth(column, contentSize) + @pyTTkSlot() + def expandAll(self) -> None: + '''expandAll''' + if not self._rootItem: + return + self._rootItem.dataChanged.disconnect(self._refreshCache) + self._rootItem.expandAll() + self._rootItem.dataChanged.connect(self._refreshCache) + self._refreshCache() + + @pyTTkSlot() + def collapseAll(self) -> None: + '''collapseAll''' + if not self._rootItem: + return + self._rootItem.dataChanged.disconnect(self._refreshCache) + self._rootItem.collapseAll() + self._rootItem.dataChanged.connect(self._refreshCache) + self._refreshCache() + def mouseDoubleClickEvent(self, evt:TTkMouseEvent) -> bool: x,y = evt.x, evt.y ox, oy = self.getViewOffsets() diff --git a/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidgetitem.py b/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidgetitem.py index 2cdabece..e0c4ab57 100644 --- a/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidgetitem.py +++ b/libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidgetitem.py @@ -305,6 +305,16 @@ class TTkTreeWidgetItem(TTkAbstractItemModel): return None return self._widgets[col] + def expandAll(self) -> None: + for child in self._children: + child.setExpanded(True) + child.expandAll() + + def collapseAll(self) -> None: + for child in self._children: + child.setExpanded(False) + child.collapseAll() + def sortData(self, col): return self.data(col)