def updateList(self): self.ui.categoryWidget.itemChanged.connect(self.updatePluginSettings) defaultCollection = None for pluginCollection in self.private.manager.pluginCollections().values(): if not pluginCollection.name: defaultCollection = pluginCollection continue collectionItem = QTreeWidgetItem([pluginCollection.name(), "", "", "", ""]) self.items.append(collectionItem) state, groupState = self.parsePluginSpecs(collectionItem, pluginCollection.plugins()) collectionItem.setIcon(0, self.iconForState(state)) collectionItem.setData(C_LOAD, Qt.CheckStateRole, groupState) collectionItem.setToolTip(C_LOAD, "Load on Startup") collectionItem.setData(0, Qt.UserRole, pluginCollection) # add all non-categorized plugins into utilities. could also be added as root items # but that makes the tree ugly defaultCollectionItem = QTreeWidgetItem(["Utilities", "", "", "", ""]) self.items.append(defaultCollectionItem) state, groupState = self.parsePluginSpecs(defaultCollectionItem, defaultCollection.plugins) defaultCollectionItem.setIcon(0, self.iconForState(state)) defaultCollectionItem.setData(C_LOAD, Qt.CheckStateRole, groupState) defaultCollectionItem.setToolTip(C_LOAD, "Load on Startup") defaultCollectionItem.setData(0, Qt.UserRole, defaultCollection) self.updatePluginDependencies() self.ui.categoryWidget.clear() if self.items: self.ui.categoryWidget.addTopLevelItems(self.items) self.ui.categoryWidget.expandAll() self.ui.categoryWidget.sortItems(0, Qt.AscendingOrder) if self.ui.categoryWidget.topLevelItemCount(): self.ui.categoryWidget.setCurrentItem(self.ui.categoryWidget.topLevelItem(0))
def __make_item(self, name, type_name): item = QTreeWidgetItem(None, [name, type_name]) item.setChildIndicatorPolicy(QTreeWidgetItem.ShowIndicator) if type_name == UI.ACTION_GROUP: item.setIcon(0, QtGui.QIcon(Options.assets_path + "folder_16x16.png")) return item
def __make_item(self, name, type_name): item = QTreeWidgetItem(None, [name, type_name]) item.setChildIndicatorPolicy(QTreeWidgetItem.ShowIndicator) if type_name == UI.ACTION_GROUP: item.setIcon( 0, QtGui.QIcon(Options.assets_path + "folder_16x16.png")) return item
def parsePluginSpecs(self, parentItem, plugins): ret = 0 loadCount = 0 for i in range(len(plugins)): spec = plugins[i] if spec.hasError(): ret |= ParsedState.ParsedWithErrors pluginItem = QTreeWidgetItem([spec.name(), "", "{0} ({1})".format(spec.version(), spec.compatVersion()), spec.vendor()]) pluginItem.setToolTip(0, QDir.toNativeSeparators(spec.filePath())) ok = not spec.hasError() icon = self.okIcon if ok else self.errorIcon if ok and spec.state() is not PluginState.Running: icon = self.notLoadedIcon pluginItem.setIcon(0, icon) pluginItem.setData(0, Qt.UserRole, spec) state = Qt.Unchecked if spec.isEnabled(): state = Qt.Checked loadCount += 1 if spec.name() not in self.whitelist: pluginItem.setData(C_LOAD, Qt.CheckStateRole, state) else: pluginItem.setData(C_LOAD, Qt.CheckStateRole, Qt.Checked) pluginItem.setFlags(Qt.ItemIsSelectable) pluginItem.setToolTip(C_LOAD, "Load on Startup") self.specToItem[spec] = pluginItem if parentItem: parentItem.addChild(pluginItem) else: self.items.append(pluginItem) if loadCount == len(plugins): groupState = Qt.Checked ret |= ParsedState.ParsedAll elif loadCount == 0: groupState = Qt.Unchecked ret |= ParsedState.ParsedNone else: groupState = Qt.PartiallyChecked ret |= ParsedState.ParsedPartial return ret, groupState
def __init__(self): super(ToolBox, self).__init__() self.setDragEnabled(True) self.setColumnCount(2) self.header().setVisible(False) gatesheader = QTreeWidgetItem(self, [self.str_basicGates]) gatesheader.setFlags( ~Qt.ItemFlag.ItemIsDragEnabled & ~Qt.ItemFlag.ItemIsSelectable) gatesheader.setExpanded(True) imgDir = filePath('icons/') for name, class_ in inspect.getmembers( gates, lambda m: ( inspect.isclass(m) and m.__module__ == 'engine.gates')): item = QTreeWidgetItem(gatesheader, [name[:-4]]) item.setIcon(0, QIcon(imgDir + name + '.png')) item = QTreeWidgetItem(gatesheader, ['JKFlipFlop']) item.setIcon(0, QIcon(imgDir + 'JKFlipFlop.png')) item = QTreeWidgetItem(gatesheader, ['RSFlipFlop']) item.setIcon(0, QIcon(imgDir + 'RSFlipFlop.png')) ioheader = QTreeWidgetItem(self, [self.str_IO]) ioheader.setFlags( ~Qt.ItemFlag.ItemIsDragEnabled & ~Qt.ItemFlag.ItemIsSelectable) ioheader.setExpanded(True) [ QTreeWidgetItem(ioheader, [name]) for name in [self.str_I, self.str_O, self.str_Clock]] self.userheader = QTreeWidgetItem(self, [self.str_userCircuits]) [QTreeWidgetItem(self.userheader, [name[:-4], 'user']) for name in sorted(listdir(filePath('user/')))] self.userheader.setFlags( ~Qt.ItemFlag.ItemIsDragEnabled & ~Qt.ItemFlag.ItemIsSelectable) self.userheader.setExpanded(True) self.setColumnWidth(0, 300)