Example #1
0
    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))
Example #2
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
Example #3
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
Example #4
0
    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
Example #5
0
 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)