def search_entries_in_context(self, context, what): """ Search for entries that match `what` in a QTreeWidget. `context` refers to any class that inherits AbstractContext in the Caerus view. """ index = context.search_by.currentIndex() items = context.entries.findItems(what, Qt.MatchStartsWith, index) # This workaround is due to a PySide specific issue that has been # unresolved. See https://bugreports.qt-project.org/browse/PYSIDE-74. # # The Python Way would be to just simply do `if item not in items`, but # as in that bug report, NotImplementedError will be raised if that is # done. items_set = set(items) it = QTreeWidgetItemIterator(context.entries) while (it.value()): item = it.value() item.setHidden(True if item not in items_set else False) it += 1
def testCase(self): treeWidget = QTreeWidget() treeWidget.setColumnCount(1) items = [] for i in range(10): items.append(QTreeWidgetItem(None, ["item: %i" % i])) treeWidget.insertTopLevelItems(0, items); _iter = QTreeWidgetItemIterator(treeWidget) index = 0 while(_iter.value()): item = _iter.value() self.assert_(item is items[index]) index += 1 _iter += 1
def testWidgetIterator(self): treeWidget = QTreeWidget() treeWidget.setColumnCount(1) items = [] for i in range(10): items.append(QTreeWidgetItem(None, ['item: %d' % i])) treeWidget.insertTopLevelItems(0, items) index = 0 for it in QTreeWidgetItemIterator(treeWidget): self.assertEqual(it.value().text(0), 'item: %d' % index) index += 1
def _expand_all_fired(self): ctrl = self.control ctrl.expandAll() for item in QTreeWidgetItemIterator(ctrl): item = item.value() try: self._expand_node(item) self._update_icon(item) except AttributeError: pass