def selectNone(self): """Clears the selection.""" widget = self.getWidget() it = QTreeWidgetItemIterator(widget, QTreeWidgetItemIterator.Checked) while it.value(): it.value().setCheckState(0, Qt.Unchecked) it += 1
def selectItems(self, itemType): """Select all items of a given ItemType.""" self.statusbar.showMessage("Selecting all {0}'s. " "Please wait...".format(itemType)) items = [] itemsAll = [] index = self.stackedWidget.currentIndex() if index == 0: position = 0 items = [item[itemType] for item in self.strainInfo.values()] for item in items: if len(item): itemsAll += item else: position = 3 for item in self.tableResults: if item[2] == itemType: itemsAll.append(item[3]) if not len(itemsAll): self.statusbar.showMessage("No {0}'s in list".format(itemType), 5000) return self.selectNone() widget = self.getWidget() it = QTreeWidgetItemIterator(widget) while it.value(): if it.value().text(position) in itemsAll: it.value().setCheckState(0, Qt.Checked) it += 1 self.statusbar.showMessage("Selected {0} {1}'s".format(len(itemsAll), itemType), 3000)
def SaveConfig(self, CfgFileName): " Saves parameter values into EVO file " self.save() if not str(CfgFileName).endswith(self.RunCfgFileName): # could be anything, as it is also called by a button CfgFileName = self.NodeValue('ScenarioFileName') CfgFileName = QFileDialog.getSaveFileName(None,QString('Write configuration to...'), QString(CfgFileName), QString('*.evo')) if CfgFileName == '': return False # user gives up self.changed = False NodeIterator = QTreeWidgetItemIterator(self) ParamValues = [] Node = NodeIterator.value() while Node: #if not Node.isDisabled() and EvolParam.isInZ(str(Node.text(1))): if not Node.isDisabled() and str(Node.text(1)): ParamValues.append((Node.text(0),Node.text(1))) NodeIterator += 1 Node = NodeIterator.value() #ParamValues.append(('S_%s' % self.ScenarioName, 1)) #ParamValues.append(('S_%s' % str(self.NodeValue('ScenarioName')), 1)) ParamValues.sort() CfgFile = open(CfgFileName,'w') CfgFile.write('\n'.join(["%s\t%s" % P for P in ParamValues])) CfgFile.close() return True
def expandEditorTree(self, connectionItem): iter = QTreeWidgetItemIterator(connectionItem) val = iter.value() while val: val.setExpanded(True) iter += 1 val = iter.value()
def whoosh_index(self): it = QTreeWidgetItemIterator( self.notesTree, QTreeWidgetItemIterator.All) print("Starting complete indexing.") #writer = self.ix.writer() writer = AsyncWriter(self.ix) while it.value(): treeItem = it.value() name = self.notesTree.itemToPage(treeItem) path = os.path.join(self.notesTree.pageToFile(name)).replace(os.sep, '/') print(path) fileobj = open(path, 'r', encoding='utf-8') content = fileobj.read() fileobj.close() if METADATA_CHECKER.match(content) and 'meta' in self.settings.extensions: no_metadata_content = METADATA_CHECKER.sub("", content, count=1).lstrip() self.settings.md.reset().convert(content) writer.update_document( path=name, title=parseTitle(content, name), content=no_metadata_content, tags=','.join(self.settings.md.Meta.get('tags', [])).strip()) else: writer.add_document(path=name, title=parseTitle(content, name), content=content, tags='') it += 1 writer.commit() print("Finished completely reindexing.")
def setCurrentTreeItemByData(self, data): it = QTreeWidgetItemIterator(self.ui.treeWidget) while it.value(): if it.value().data(0, Qt.UserRole) == data: self.ui.treeWidget.setCurrentItem(it.value()) return True it += 1 return False
def findNode(self, NodeName): " finds a node in the tree " NodeIterator = QTreeWidgetItemIterator(self) Node = NodeIterator.value() while Node: if Node.text(0) == NodeName: return Node NodeIterator += 1 Node = NodeIterator.value() return None
def findNodesByAttribute(self, Attribute='Scenario'): " returns all nodes in the tree that have this attribute " NodeIterator = QTreeWidgetItemIterator(self) Node = NodeIterator.value() Found = dict() while Node: if str(Node.text(0)) in self.ParamScenario: Found[Node] = self.ParamScenario[str(Node.text(0))] NodeIterator += 1 Node = NodeIterator.value() return Found
def get_rules(self): """ Returns a list of the checked off rules """ rules = [] iterator = QTreeWidgetItemIterator(self) item = iterator.value() while item: if item.checkState(0) == Qt.Checked and item.rule: rules.append(item.rule) iterator += 1 item = iterator.value() return rules
def check_all(self, check=True): """ Checks or uncheck all Args: check: true if check, false if uncheck """ status = Qt.Checked if check else Qt.Unchecked iterator = QTreeWidgetItemIterator(self) item = iterator.value() while item: item.setCheckState(0, status) iterator += 1 item = iterator.value()
def on_remove_testcase(self): """ slot function for remove test case button :return: """ info = u'是否删除所选测试用例(已存储的用例文件请手动删除)!!!' if QMessageBox.Yes == QMessageBox.question(self, u'询问', info, QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes): items = QTreeWidgetItemIterator(self.testcase_tree) while items.value(): if items.value().checkState(0) == Qt.Checked: self.test_cases.pop(str(items.value().text(0))) self.testcase_tree.takeTopLevelItem(self.testcase_tree.indexOfTopLevelItem(items.value())) continue items += 1
def whoosh_index(self): it = QTreeWidgetItemIterator( self.notesTree, QTreeWidgetItemIterator.All) writer = self.ix.writer() while it.value(): treeItem = it.value() name = self.notesTree.itemToPage(treeItem) path = os.path.join(self.notesTree.pageToFile(name)) print(path) fileobj = open(path, 'r') content = fileobj.read() fileobj.close() writer.add_document( path=name, title=parseTitle(content, name), content=content) it += 1 writer.commit()
def ExportToHtml(self): " Exports the tree structure (parameter definitions and documentation) to an HTML file " HtmlStr= "<html>\n" # Html string that is used to store the tree structure HtmlStr += '<h3><a href="http://www.dessalles.fr/Evolife">Goto Evolife documentation</a></h3>' NodeIterator = QTreeWidgetItemIterator(self) Node = NodeIterator.value() while Node: Ancestors = self.NodeAncestry(Node) HtmlStr += "\n\n<h%d>%s%s</h%d>\n" % (len(Ancestors), ' ==> '.join(map(lambda x: str(x.text(0)),Ancestors)), ' --> ' * (str(Node.text(1))!='') + str(Node.text(1)), len(Ancestors)) if str(Node.text(0)) in self.NodeDescriptions: HtmlStr+= '<p style="color: blue; font-family: courier">%s</p>' % self.NodeDescriptions[str(Node.text(0))][2].strip() NodeIterator += 1 Node = NodeIterator.value() HtmlStr += '\n\n<h2></h2></html>' HtmlTreeFileName = os.path.splitext(self.TreeFileName)[0]+ '.html' CfgTreeFile = open(HtmlTreeFileName,'w') CfgTreeFile.write(HtmlStr) CfgTreeFile.close() webbrowser.open('file:///' + os.path.abspath(HtmlTreeFileName))
def selectInBionumerics(self, on): """Selects Bionumerics entries with checked items from table view (get all selected) """ actionGroup = QActionGroup(self) actionGroup.addAction(self.actionViewTree) actionGroup.addAction(self.refresh_action) actionGroup.addAction(self.actionSelectAll) actionGroup.addAction(self.actionSelectInvert) actionGroup.addAction(self.actionSelectNone) actionGroup.addAction(self.actionSelectDNA) actionGroup.addAction(self.actionSelectFrozenStock) if on: actionGroup.setEnabled(False) if not len(self.itemNames): self.itemNames = bn.createIdMap() it = QTreeWidgetItemIterator(self.selectedWidget, QTreeWidgetItemIterator.Checked) checkedItems = [] while it.value(): parentCode = unicode(it.value().text(4)) bnStrain = self.itemNames[int(parentCode)] if bnStrain not in checkedItems: checkedItems.append(bnStrain) it += 1 if len(checkedItems): bn.selectEntries(checkedItems) else: self.statusbar.showMessage("No items checked", 3000) else: actionGroup.setEnabled(True) bn.selectEntries(self.selectedIds.values() + self.errorIds.keys())
def whoosh_index(self): it = QTreeWidgetItemIterator(self.notesTree, QTreeWidgetItemIterator.All) print("Starting complete indexing.") #writer = self.ix.writer() writer = AsyncWriter(self.ix) while it.value(): treeItem = it.value() name = self.notesTree.itemToPage(treeItem) path = os.path.join(self.notesTree.pageToFile(name)).replace( os.sep, '/') print(path) fileobj = open(path, 'r', encoding='utf-8') content = fileobj.read() fileobj.close() if METADATA_CHECKER.match( content) and 'meta' in self.settings.extensions: no_metadata_content = METADATA_CHECKER.sub("", content, count=1).lstrip() self.settings.md.reset().convert(content) writer.update_document( path=name, title=parseTitle(content, name), content=no_metadata_content, tags=','.join(self.settings.md.Meta.get('tags', [])).strip()) else: writer.add_document(path=name, title=parseTitle(content, name), content=content, tags='') it += 1 writer.commit() print("Finished completely reindexing.")
def selectAll(self): """All items are selected (checked).""" index = self.stackedWidget.currentIndex() widget = self.getWidget() it = QTreeWidgetItemIterator(widget, QTreeWidgetItemIterator.NotChecked) count = 0 if index == 0: while it.value(): if it.value().parent(): it.value().setCheckState(0, Qt.Checked) count += 1 it += 1 elif index == 1: while it.value(): it.value().setCheckState(0, Qt.Checked) count += 1 it += 1 if count: self.statusbar.showMessage("Selected {0} items".format(count), 3000)
def showSettingsDialog(self): self.setupDialog() result = self.dialog.exec_() self.storageFilename = str(self.ui.pathText.text()) allGood = False if result == QDialog.Accepted: allGood = True i = 0 it = QTreeWidgetItemIterator(self.ui.particlesTree) newParticles = Particles(self.ui.particlesTree.topLevelItemCount()) while it.value() is not None: posX, pXGood = it.value().data(0, Qt.DisplayRole).toFloat() posY, pYGood = it.value().data(1, Qt.DisplayRole).toFloat() posZ, pZGood = it.value().data(2, Qt.DisplayRole).toFloat() posUnit = str(it.value().data(3, Qt.DisplayRole).toString()) try: eval(posUnit) posUnitGood = True except: posUnitGood = False velX, vXGood = it.value().data(4, Qt.DisplayRole).toFloat() velY, vYGood = it.value().data(5, Qt.DisplayRole).toFloat() velZ, vZGood = it.value().data(6, Qt.DisplayRole).toFloat() velUnit = str(it.value().data(7, Qt.DisplayRole).toString()) try: eval(velUnit) velUnitGood = True except: velUnitGood = False mass, massGood = it.value().data(8, Qt.DisplayRole).toFloat() massUnit = str(it.value().data(9, Qt.DisplayRole).toString()) try: eval(massUnit) massUnitGood = True except: massUnitGood = False radius, radiusGood = it.value().data(10, Qt.DisplayRole).toFloat() radiusUnit = str(it.value().data(11, Qt.DisplayRole).toString()) radiusUnitGood = (radiusUnit in units.__dict__) checks = (pXGood, pYGood, pZGood, posUnitGood, vXGood, vYGood, vZGood, velUnitGood, massGood, massUnitGood) allGood = reduce(lambda x,y: x and y, checks, allGood) if allGood: newParticles[i].position = [posX, posY, posZ] | eval(posUnit) newParticles[i].velocity = [velX, velY, velZ] | eval(velUnit) newParticles[i].mass = mass | eval(massUnit) newParticles[i].radius = radius | eval(radiusUnit) it += 1 i += 1 if(allGood): del self.particles self.particles = newParticles self.positionUnit = posUnit self.massUnit = massUnit self.radiusUnit = radiusUnit self.velUnit = velUnit self.numParticles = len(self.particles) self.ui.particlesTree.clear()
def __init__(self, *args): QTreeWidgetItemIterator.__init__(self, *args)
def selectInvert(self): """Inverts the selection.""" index = self.stackedWidget.currentIndex() widget = self.getWidget() it = QTreeWidgetItemIterator(widget) if index == 0: while it.value(): if it.value().parent(): if it.value().checkState(0) == Qt.Checked: it.value().setCheckState(0, Qt.Unchecked) else: it.value().setCheckState(0, Qt.Checked) it += 1 else: while it.value(): if it.value().checkState(0) == Qt.Checked: it.value().setCheckState(0, Qt.Unchecked) else: it.value().setCheckState(0, Qt.Checked) it += 1
def updateSelection(self): """Updates selection status in ItemTracker.""" if self.actionSelectInBionumerics.isChecked(): self.selectInBionumerics(False) self.actionSelectInBionumerics.setChecked(False) self.updateButton.setEnabled(False) self.statusbar.showMessage("Updating selection. Please wait...") if self.selectRadioButton.isChecked(): selectedAction = "SELECT" elif self.deselectRadioButton.isChecked(): selectedAction = "DESELECT" checkedItems = {} updatedItems = [] failedItems = [] index = self.stackedWidget.currentIndex() widget = self.getWidget() it = QTreeWidgetItemIterator(widget, QTreeWidgetItemIterator.Checked) if index == 0: while it.value(): itemName = unicode(it.value().text(0)) itemId = self.itemIds[itemName] checkedItems[itemName] = itemId parentItem = self.getParent(it.value()) strain = unicode(parentItem.text(0)) if strain not in self.updatedStrains: self.updatedStrains.append(strain) it += 1 elif index == 1: if not len(self.itemNames): self.itemNames = bn.createIdMap() while it.value(): itemId = unicode(it.value().text(0)) itemName = unicode(it.value().text(3)) checkedItems[itemName] = int(itemId) parentCode = unicode(it.value().text(4)) strain = self.itemNames[int(parentCode)] if strain not in self.updatedStrains: self.updatedStrains.append(strain) it += 1 if not len(checkedItems): self.statusbar.showMessage("No items checked", 5000) self.updateButton.setEnabled(True) return for itemName, itemId in checkedItems.iteritems(): if selectedAction == "SELECT": result = lims.SelectItem(itemId) elif selectedAction == "DESELECT": result = lims.UnselectItem(itemId) if not len(result): updatedItems.append(itemName) else: failedItems.append(itemName) if len(updatedItems): self.mkSuccess("{0}ED {1} items".format(selectedAction, len(updatedItems))) self.logBrowser.append("{0}".format(", ".join(updatedItems))) self.logger.info("{0}\t{1}".format(selectedAction, ", ".join(updatedItems))) if len(failedItems): self.mkError("{0} failed for {1} items".format(selectedAction, len(failedItems))) self.logBrowser.append("{0}".format(", ".join(failedItems))) self.logger.info("{0}\t{1}".format(selectedAction, ", ".join(failedItems))) self.updateButton.setEnabled(True) if len(updatedItems) or len(failedItems): self.populatedTree = False self.populatedTable = False self.refresh()
def passTerminBtn(self): if int(self.terminsTreeWidget.currentItem().text(2)) == int( self.terminsPerPageComboBos.currentText()): self.show_termins_in_list(self.currentPage + 1) it = QTreeWidgetItemIterator(self.terminsTreeWidget) it.value() it += 1 self.terminsTreeWidget.setCurrentItem(it.value()) it.value().setSelected(True) return it = QTreeWidgetItemIterator(self.terminsTreeWidget) i = 0 while it.value(): if i == int(self.terminsTreeWidget.currentItem().text(2)): it += 1 self.terminsTreeWidget.setCurrentItem(it.value()) it.value().setSelected(True) return it += 1 i += 1
def go_to_termin_on_position(self, position): print(position) if position == int(self.terminsPerPageComboBos.currentText()): self.show_termins_in_list(self.currentPage + 1) it = QTreeWidgetItemIterator(self.terminsTreeWidget) it.value() it += 1 self.terminsTreeWidget.setCurrentItem(it.value()) it.value().setSelected(True) return it = QTreeWidgetItemIterator(self.terminsTreeWidget) i = 0 while it.value(): if i == position: if self.showLinkedCheck.isChecked(): it += 1 self.terminsTreeWidget.setCurrentItem(it.value()) it.value().setSelected(True) return it += 1 i += 1