Mon, 30 Jul 2012 19:19:29 +0200
Added an extended tree widget.
--- a/APIs/Python3/eric5.api Mon Jul 30 19:18:58 2012 +0200 +++ b/APIs/Python3/eric5.api Mon Jul 30 19:19:29 2012 +0200 @@ -1478,6 +1478,24 @@ eric5.E5Gui.E5TreeView.E5TreeView.keyPressEvent?4(evt) eric5.E5Gui.E5TreeView.E5TreeView.removeAll?4() eric5.E5Gui.E5TreeView.E5TreeView.removeSelected?4() +eric5.E5Gui.E5TreeWidget.E5TreeWidget.ItemsCollapsed?7 +eric5.E5Gui.E5TreeWidget.E5TreeWidget.ItemsExpanded?7 +eric5.E5Gui.E5TreeWidget.E5TreeWidget.addTopLevelItem?4(item) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.addTopLevelItems?4(items) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.allItems?4() +eric5.E5Gui.E5TreeWidget.E5TreeWidget.appendToParentItem?4(parent, item) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.clear?4() +eric5.E5Gui.E5TreeWidget.E5TreeWidget.deleteItem?4(item) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.deleteItems?4(items) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.filterString?4(filter) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.insertTopLevelItem?4(index, item) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.insertTopLevelItems?4(index, items) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.itemControlClicked?7 +eric5.E5Gui.E5TreeWidget.E5TreeWidget.itemMiddleButtonClicked?7 +eric5.E5Gui.E5TreeWidget.E5TreeWidget.mousePressEvent?4(evt) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.prependToParentItem?4(parent, item) +eric5.E5Gui.E5TreeWidget.E5TreeWidget.setDefaultItemShowMode?4(mode) +eric5.E5Gui.E5TreeWidget.E5TreeWidget?1(parent=None) eric5.E5Network.E5NetworkHeaderDetailsDialog.E5NetworkHeaderDetailsDialog.setData?4(name, value) eric5.E5Network.E5NetworkHeaderDetailsDialog.E5NetworkHeaderDetailsDialog?1(parent=None) eric5.E5Network.E5NetworkMonitor.E5NetworkMonitor._monitor?8
--- a/APIs/Python3/eric5.bas Mon Jul 30 19:18:58 2012 +0200 +++ b/APIs/Python3/eric5.bas Mon Jul 30 19:19:29 2012 +0200 @@ -162,6 +162,7 @@ E5ToolBarManager QObject E5TreeSortFilterProxyModel QSortFilterProxyModel E5TreeView QTreeView +E5TreeWidget QTreeWidget E5VerticalToolBox QToolBox E5WheelTabBar QTabBar EditBreakpointDialog QDialog Ui_EditBreakpointDialog
--- a/Documentation/Help/source.qhp Mon Jul 30 19:18:58 2012 +0200 +++ b/Documentation/Help/source.qhp Mon Jul 30 19:19:29 2012 +0200 @@ -137,6 +137,7 @@ <section title="eric5.E5Gui.E5ToolBox" ref="eric5.E5Gui.E5ToolBox.html" /> <section title="eric5.E5Gui.E5TreeSortFilterProxyModel" ref="eric5.E5Gui.E5TreeSortFilterProxyModel.html" /> <section title="eric5.E5Gui.E5TreeView" ref="eric5.E5Gui.E5TreeView.html" /> + <section title="eric5.E5Gui.E5TreeWidget" ref="eric5.E5Gui.E5TreeWidget.html" /> </section> <section title="eric5.E5Network" ref="index-eric5.E5Network.html"> <section title="eric5.E5Network.E5NetworkHeaderDetailsDialog" ref="eric5.E5Network.E5NetworkHeaderDetailsDialog.html" /> @@ -3630,6 +3631,24 @@ <keyword name="E5TreeView.keyPressEvent" id="E5TreeView.keyPressEvent" ref="eric5.E5Gui.E5TreeView.html#E5TreeView.keyPressEvent" /> <keyword name="E5TreeView.removeAll" id="E5TreeView.removeAll" ref="eric5.E5Gui.E5TreeView.html#E5TreeView.removeAll" /> <keyword name="E5TreeView.removeSelected" id="E5TreeView.removeSelected" ref="eric5.E5Gui.E5TreeView.html#E5TreeView.removeSelected" /> + <keyword name="E5TreeWidget" id="E5TreeWidget" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget" /> + <keyword name="E5TreeWidget (Constructor)" id="E5TreeWidget (Constructor)" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.__init__" /> + <keyword name="E5TreeWidget (Module)" id="E5TreeWidget (Module)" ref="eric5.E5Gui.E5TreeWidget.html" /> + <keyword name="E5TreeWidget.__iterateAllItems" id="E5TreeWidget.__iterateAllItems" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.__iterateAllItems" /> + <keyword name="E5TreeWidget.__scheduleRefresh" id="E5TreeWidget.__scheduleRefresh" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.__scheduleRefresh" /> + <keyword name="E5TreeWidget.addTopLevelItem" id="E5TreeWidget.addTopLevelItem" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.addTopLevelItem" /> + <keyword name="E5TreeWidget.addTopLevelItems" id="E5TreeWidget.addTopLevelItems" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.addTopLevelItems" /> + <keyword name="E5TreeWidget.allItems" id="E5TreeWidget.allItems" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.allItems" /> + <keyword name="E5TreeWidget.appendToParentItem" id="E5TreeWidget.appendToParentItem" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.appendToParentItem" /> + <keyword name="E5TreeWidget.clear" id="E5TreeWidget.clear" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.clear" /> + <keyword name="E5TreeWidget.deleteItem" id="E5TreeWidget.deleteItem" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.deleteItem" /> + <keyword name="E5TreeWidget.deleteItems" id="E5TreeWidget.deleteItems" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.deleteItems" /> + <keyword name="E5TreeWidget.filterString" id="E5TreeWidget.filterString" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.filterString" /> + <keyword name="E5TreeWidget.insertTopLevelItem" id="E5TreeWidget.insertTopLevelItem" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.insertTopLevelItem" /> + <keyword name="E5TreeWidget.insertTopLevelItems" id="E5TreeWidget.insertTopLevelItems" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.insertTopLevelItems" /> + <keyword name="E5TreeWidget.mousePressEvent" id="E5TreeWidget.mousePressEvent" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.mousePressEvent" /> + <keyword name="E5TreeWidget.prependToParentItem" id="E5TreeWidget.prependToParentItem" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.prependToParentItem" /> + <keyword name="E5TreeWidget.setDefaultItemShowMode" id="E5TreeWidget.setDefaultItemShowMode" ref="eric5.E5Gui.E5TreeWidget.html#E5TreeWidget.setDefaultItemShowMode" /> <keyword name="E5VerticalToolBox" id="E5VerticalToolBox" ref="eric5.E5Gui.E5ToolBox.html#E5VerticalToolBox" /> <keyword name="E5VerticalToolBox (Constructor)" id="E5VerticalToolBox (Constructor)" ref="eric5.E5Gui.E5ToolBox.html#E5VerticalToolBox.__init__" /> <keyword name="E5WheelTabBar" id="E5WheelTabBar" ref="eric5.E5Gui.E5TabWidget.html#E5WheelTabBar" /> @@ -12365,6 +12384,7 @@ <file>eric5.E5Gui.E5ToolBox.html</file> <file>eric5.E5Gui.E5TreeSortFilterProxyModel.html</file> <file>eric5.E5Gui.E5TreeView.html</file> + <file>eric5.E5Gui.E5TreeWidget.html</file> <file>eric5.E5Network.E5NetworkHeaderDetailsDialog.html</file> <file>eric5.E5Network.E5NetworkMonitor.html</file> <file>eric5.E5Network.E5NetworkProxyFactory.html</file>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.E5Gui.E5TreeWidget.html Mon Jul 30 19:19:29 2012 +0200 @@ -0,0 +1,302 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' +'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> +<html><head> +<title>eric5.E5Gui.E5TreeWidget</title> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric5.E5Gui.E5TreeWidget</h1> +<p> +Module implementing specialized tree views. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#E5TreeWidget">E5TreeWidget</a></td> +<td>Class implementing an extended tree widget.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="E5TreeWidget" ID="E5TreeWidget"></a> +<h2>E5TreeWidget</h2> +<p> + Class implementing an extended tree widget. +</p><h3>Signals</h3> +<dl> +<dt>itemControlClicked(QTreeWidgetItem)</dt> +<dd> +emitted after a Ctrl-Click + on an item +</dd><dt>itemMiddleButtonClicked(QTreeWidgetItem)</dt> +<dd> +emitted after a click + of the middle button on an item +</dd> +</dl> +<h3>Derived from</h3> +QTreeWidget +<h3>Class Attributes</h3> +<table> +<tr><td>ItemsCollapsed</td></tr><tr><td>ItemsExpanded</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#E5TreeWidget.__init__">E5TreeWidget</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#E5TreeWidget.__iterateAllItems">__iterateAllItems</a></td> +<td>Private method to iterate over the child items of the parent.</td> +</tr><tr> +<td><a href="#E5TreeWidget.__scheduleRefresh">__scheduleRefresh</a></td> +<td>Private slot to schedule a refresh of the tree.</td> +</tr><tr> +<td><a href="#E5TreeWidget.addTopLevelItem">addTopLevelItem</a></td> +<td>Public method to add a top level item.</td> +</tr><tr> +<td><a href="#E5TreeWidget.addTopLevelItems">addTopLevelItems</a></td> +<td>Public method to add a list of top level items.</td> +</tr><tr> +<td><a href="#E5TreeWidget.allItems">allItems</a></td> +<td>Public method to get a list of all items.</td> +</tr><tr> +<td><a href="#E5TreeWidget.appendToParentItem">appendToParentItem</a></td> +<td>Public method to append an item to a parent item.</td> +</tr><tr> +<td><a href="#E5TreeWidget.clear">clear</a></td> +<td>Public slot to clear the tree.</td> +</tr><tr> +<td><a href="#E5TreeWidget.deleteItem">deleteItem</a></td> +<td>Public method to delete an item.</td> +</tr><tr> +<td><a href="#E5TreeWidget.deleteItems">deleteItems</a></td> +<td>Public method to delete a list of items.</td> +</tr><tr> +<td><a href="#E5TreeWidget.filterString">filterString</a></td> +<td>Public slot to set a new filter.</td> +</tr><tr> +<td><a href="#E5TreeWidget.insertTopLevelItem">insertTopLevelItem</a></td> +<td>Public method to insert a top level item.</td> +</tr><tr> +<td><a href="#E5TreeWidget.insertTopLevelItems">insertTopLevelItems</a></td> +<td>Public method to insert a list of top level items.</td> +</tr><tr> +<td><a href="#E5TreeWidget.mousePressEvent">mousePressEvent</a></td> +<td>Protected method handling mouse press events.</td> +</tr><tr> +<td><a href="#E5TreeWidget.prependToParentItem">prependToParentItem</a></td> +<td>Public method to prepend an item to a parent item.</td> +</tr><tr> +<td><a href="#E5TreeWidget.setDefaultItemShowMode">setDefaultItemShowMode</a></td> +<td>Public method to set the default item show mode.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="E5TreeWidget.__init__" ID="E5TreeWidget.__init__"></a> +<h4>E5TreeWidget (Constructor)</h4> +<b>E5TreeWidget</b>(<i>parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>parent</i></dt> +<dd> +reference to the parent widget (QWidget) +</dd> +</dl><a NAME="E5TreeWidget.__iterateAllItems" ID="E5TreeWidget.__iterateAllItems"></a> +<h4>E5TreeWidget.__iterateAllItems</h4> +<b>__iterateAllItems</b>(<i>parent</i>) +<p> + Private method to iterate over the child items of the parent. +</p><dl> +<dt><i>parent</i></dt> +<dd> +parent item to iterate (QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.__scheduleRefresh" ID="E5TreeWidget.__scheduleRefresh"></a> +<h4>E5TreeWidget.__scheduleRefresh</h4> +<b>__scheduleRefresh</b>(<i></i>) +<p> + Private slot to schedule a refresh of the tree. +</p><a NAME="E5TreeWidget.addTopLevelItem" ID="E5TreeWidget.addTopLevelItem"></a> +<h4>E5TreeWidget.addTopLevelItem</h4> +<b>addTopLevelItem</b>(<i>item</i>) +<p> + Public method to add a top level item. +</p><dl> +<dt><i>item</i></dt> +<dd> +item to be added as a top level item (QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.addTopLevelItems" ID="E5TreeWidget.addTopLevelItems"></a> +<h4>E5TreeWidget.addTopLevelItems</h4> +<b>addTopLevelItems</b>(<i>items</i>) +<p> + Public method to add a list of top level items. +</p><dl> +<dt><i>items</i></dt> +<dd> +items to be added as top level items (list of QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.allItems" ID="E5TreeWidget.allItems"></a> +<h4>E5TreeWidget.allItems</h4> +<b>allItems</b>(<i></i>) +<p> + Public method to get a list of all items. +</p><dl> +<dt>Returns:</dt> +<dd> +list of all items (list of QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.appendToParentItem" ID="E5TreeWidget.appendToParentItem"></a> +<h4>E5TreeWidget.appendToParentItem</h4> +<b>appendToParentItem</b>(<i>parent, item</i>) +<p> + Public method to append an item to a parent item. +</p><dl> +<dt><i>parent</i></dt> +<dd> +text of the parent item (string) or + the parent item (QTreeWidgetItem) +</dd><dt><i>item</i></dt> +<dd> +item to be appended (QTreeWidgetItem) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating success (boolean) +</dd> +</dl><a NAME="E5TreeWidget.clear" ID="E5TreeWidget.clear"></a> +<h4>E5TreeWidget.clear</h4> +<b>clear</b>(<i></i>) +<p> + Public slot to clear the tree. +</p><a NAME="E5TreeWidget.deleteItem" ID="E5TreeWidget.deleteItem"></a> +<h4>E5TreeWidget.deleteItem</h4> +<b>deleteItem</b>(<i>item</i>) +<p> + Public method to delete an item. +</p><dl> +<dt><i>item</i></dt> +<dd> +item to be deleted (QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.deleteItems" ID="E5TreeWidget.deleteItems"></a> +<h4>E5TreeWidget.deleteItems</h4> +<b>deleteItems</b>(<i>items</i>) +<p> + Public method to delete a list of items. +</p><dl> +<dt><i>items</i></dt> +<dd> +items to be deleted (list of QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.filterString" ID="E5TreeWidget.filterString"></a> +<h4>E5TreeWidget.filterString</h4> +<b>filterString</b>(<i>filter</i>) +<p> + Public slot to set a new filter. +</p><dl> +<dt><i>filter</i></dt> +<dd> +filter to be set (string) +</dd> +</dl><a NAME="E5TreeWidget.insertTopLevelItem" ID="E5TreeWidget.insertTopLevelItem"></a> +<h4>E5TreeWidget.insertTopLevelItem</h4> +<b>insertTopLevelItem</b>(<i>index, item</i>) +<p> + Public method to insert a top level item. +</p><dl> +<dt><i>index</i></dt> +<dd> +index for the insertion (integer) +</dd><dt><i>item</i></dt> +<dd> +item to be inserted as a top level item (QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.insertTopLevelItems" ID="E5TreeWidget.insertTopLevelItems"></a> +<h4>E5TreeWidget.insertTopLevelItems</h4> +<b>insertTopLevelItems</b>(<i>index, items</i>) +<p> + Public method to insert a list of top level items. +</p><dl> +<dt><i>index</i></dt> +<dd> +index for the insertion (integer) +</dd><dt><i>items</i></dt> +<dd> +items to be inserted as top level items (list of QTreeWidgetItem) +</dd> +</dl><a NAME="E5TreeWidget.mousePressEvent" ID="E5TreeWidget.mousePressEvent"></a> +<h4>E5TreeWidget.mousePressEvent</h4> +<b>mousePressEvent</b>(<i>evt</i>) +<p> + Protected method handling mouse press events. +</p><dl> +<dt><i>evt</i></dt> +<dd> +mouse press event (QMouseEvent) +</dd> +</dl><a NAME="E5TreeWidget.prependToParentItem" ID="E5TreeWidget.prependToParentItem"></a> +<h4>E5TreeWidget.prependToParentItem</h4> +<b>prependToParentItem</b>(<i>parent, item</i>) +<p> + Public method to prepend an item to a parent item. +</p><dl> +<dt><i>parent</i></dt> +<dd> +text of the parent item (string) or + the parent item (QTreeWidgetItem) +</dd><dt><i>item</i></dt> +<dd> +item to be prepended (QTreeWidgetItem) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating success (boolean) +</dd> +</dl><a NAME="E5TreeWidget.setDefaultItemShowMode" ID="E5TreeWidget.setDefaultItemShowMode"></a> +<h4>E5TreeWidget.setDefaultItemShowMode</h4> +<b>setDefaultItemShowMode</b>(<i>mode</i>) +<p> + Public method to set the default item show mode. +</p><dl> +<dt><i>mode</i></dt> +<dd> +default mode (ItemsCollapsed, ItemsExpanded) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric5.E5Gui.html Mon Jul 30 19:18:58 2012 +0200 +++ b/Documentation/Source/index-eric5.E5Gui.html Mon Jul 30 19:19:29 2012 +0200 @@ -105,6 +105,9 @@ </tr><tr> <td><a href="eric5.E5Gui.E5TreeView.html">E5TreeView</a></td> <td>Module implementing specialized tree views.</td> +</tr><tr> +<td><a href="eric5.E5Gui.E5TreeWidget.html">E5TreeWidget</a></td> +<td>Module implementing specialized tree views.</td> </tr> </table> </body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5Gui/E5TreeWidget.py Mon Jul 30 19:19:29 2012 +0200 @@ -0,0 +1,272 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2009 - 2012 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing specialized tree views. +""" + +from PyQt4.QtCore import pyqtSignal, Qt +from PyQt4.QtGui import QTreeWidget, QTreeWidgetItem, QAbstractItemView + + +class E5TreeWidget(QTreeWidget): + """ + Class implementing an extended tree widget. + + @signal itemControlClicked(QTreeWidgetItem) emitted after a Ctrl-Click + on an item + @signal itemMiddleButtonClicked(QTreeWidgetItem) emitted after a click + of the middle button on an item + """ + ItemsCollapsed = 0 + ItemsExpanded = 1 + + itemControlClicked = pyqtSignal(QTreeWidgetItem) + itemMiddleButtonClicked = pyqtSignal(QTreeWidgetItem) + + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (QWidget) + """ + super().__init__(parent) + + self.__refreshAllItemsNeeded = True + self.__allTreeItems = [] + self.__showMode = E5TreeWidget.ItemsCollapsed + + self.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) + + self.itemChanged.connect(self.__scheduleRefresh) + + def setDefaultItemShowMode(self, mode): + """ + Public method to set the default item show mode. + + @param mode default mode (ItemsCollapsed, ItemsExpanded) + """ + assert mode in [E5TreeWidget.ItemsCollapsed, E5TreeWidget.ItemsExpanded] + + self.__showMode = mode + + def allItems(self): + """ + Public method to get a list of all items. + + @return list of all items (list of QTreeWidgetItem) + """ + if self.__refreshAllItemsNeeded: + self.__allTreeItems = [] + self.__iterateAllItems(None) + self.__refreshAllItemsNeeded = False + + return self.__allTreeItems + + def appendToParentItem(self, parent, item): + """ + Public method to append an item to a parent item. + + @param parent text of the parent item (string) or + the parent item (QTreeWidgetItem) + @param item item to be appended (QTreeWidgetItem) + @return flag indicating success (boolean) + """ + if isinstance(parent, QTreeWidgetItem): + if parent is None or parent.treeWidget() != self: + return False + parentItem = parent + elif isinstance(parent, str): + lst = self.findItems(parent, Qt.MatchExactly) + if not lst: + return False + parentItem = lst[0] + if parentItem is None: + return False + else: + raise RuntimeError("illegal type for parent") + + self.__allTreeItems.append(item) + parentItem.addChild(item) + return True + + def prependToParentItem(self, parent, item): + """ + Public method to prepend an item to a parent item. + + @param parent text of the parent item (string) or + the parent item (QTreeWidgetItem) + @param item item to be prepended (QTreeWidgetItem) + @return flag indicating success (boolean) + """ + if isinstance(parent, QTreeWidgetItem): + if parent is None or parent.treeWidget() != self: + return False + parentItem = parent + elif isinstance(parent, str): + lst = self.findItems(parent, Qt.MatchExactly) + if not lst: + return False + parentItem = lst[0] + if parentItem is None: + return False + else: + raise RuntimeError("illegal type for parent") + + self.__allTreeItems.append(item) + parentItem.insertChild(0, item) + return True + + def addTopLevelItem(self, item): + """ + Public method to add a top level item. + + @param item item to be added as a top level item (QTreeWidgetItem) + """ + self.__allTreeItems.append(item) + super().addTopLevelItem(item) + + def addTopLevelItems(self, items): + """ + Public method to add a list of top level items. + + @param items items to be added as top level items (list of QTreeWidgetItem) + """ + self.__allTreeItems.extend(items) + super().addTopLevelItems(items) + + def insertTopLevelItem(self, index, item): + """ + Public method to insert a top level item. + + @param index index for the insertion (integer) + @param item item to be inserted as a top level item (QTreeWidgetItem) + """ + self.__allTreeItems.append(item) + super().insertTopLevelItem(index, item) + + def insertTopLevelItems(self, index, items): + """ + Public method to insert a list of top level items. + + @param index index for the insertion (integer) + @param items items to be inserted as top level items (list of QTreeWidgetItem) + """ + self.__allTreeItems.extend(items) + super().insertTopLevelItems(index, items) + + def deleteItem(self, item): + """ + Public method to delete an item. + + @param item item to be deleted (QTreeWidgetItem) + """ + if item in self.__allTreeItems: + self.__allTreeItems.remove(item) + + self.__refreshAllItemsNeeded = True + + del item + + def deleteItems(self, items): + """ + Public method to delete a list of items. + + @param items items to be deleted (list of QTreeWidgetItem) + """ + for item in items: + self.deleteItem(item) + + def filterString(self, filter): + """ + Public slot to set a new filter. + + @param filter filter to be set (string) + """ + self.expandAll() + allItems = self.allItems() + + if filter: + lFilter = filter.lower() + for itm in allItems: + itm.setHidden(lFilter not in itm.text(0).lower()) + itm.setExpanded(True) + for index in range(self.topLevelItemCount()): + self.topLevelItem(index).setHidden(False) + + firstItm = self.topLevelItem(0) + belowItm = self.itemBelow(firstItm) + topLvlIndex = 0 + while firstItm: + if lFilter in firstItm.text(0).lower(): + firstItm.setHidden(False) + elif not firstItm.parent() and not belowItm: + firstItm.setHidden(True) + elif not belowItm: + break + elif not firstItm.parent() and not belowItm.parent(): + firstItm.setHidden(True) + + topLvlIndex += 1 + firstItm = self.topLevelItem(topLvlIndex) + belowItm = self.itemBelow(firstItm) + else: + for itm in allItems: + itm.setHidden(False) + for index in range(self.topLevelItemCount()): + self.topLevelItem(index).setHidden(False) + if self.__showMode == E5TreeWidget.ItemsCollapsed: + self.collapseAll() + + def clear(self): + """ + Public slot to clear the tree. + """ + self.__allTreeItems = [] + super().clear() + + def __scheduleRefresh(self): + """ + Private slot to schedule a refresh of the tree. + """ + self.__refreshAllItemsNeeded = True + + def mousePressEvent(self, evt): + """ + Protected method handling mouse press events. + + @param evt mouse press event (QMouseEvent) + """ + if evt.modifiers() == Qt.ControlModifier and \ + evt.buttons() == Qt.LeftButton: + self.itemControlClicked.emit(self.itemAt(evt.pos())) + return + elif evt.buttons() == Qt.MiddleButton: + self.itemMiddleButtonClicked.emit(self.itemAt(evt.pos())) + return + else: + super().mousePressEvent(evt) + + def __iterateAllItems(self, parent): + """ + Private method to iterate over the child items of the parent. + + @param parent parent item to iterate (QTreeWidgetItem) + """ + if parent: + count = parent.childCount() + else: + count = self.topLevelItemCount() + + for index in range(count): + if parent: + itm = parent.child(index) + else: + itm = self.topLevelItem(index) + + if itm.childCount() == 0: + self.__allTreeItems.append(itm) + + self.__iterateAllItems(itm)
--- a/eric5.e4p Mon Jul 30 19:18:58 2012 +0200 +++ b/eric5.e4p Mon Jul 30 19:19:29 2012 +0200 @@ -1037,6 +1037,7 @@ <Source>Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationScriptInfoDialog.py</Source> <Source>E5Gui/E5ClickableLabel.py</Source> <Source>Helpviewer/AdBlock/AdBlockIcon.py</Source> + <Source>E5Gui/E5TreeWidget.py</Source> </Sources> <Forms> <Form>PyUnit/UnittestDialog.ui</Form>