Example #1
0
def fill_item(item, value, level):
    item.setExpanded(True)
    if type(value) is dict:
        for key, val in sorted(value.items()):
            child = QTreeWidgetItem()
            child.setText(level, str(key))
            item.addChild(child)
            fill_item(child, val, level+1)
    elif type(value) is list:
        for val in value:
            child = QTreeWidgetItem()
            item.addChild(child)
            if type(val) is dict:            
                child.setText(level, '[dict]')
                fill_item(child, val, level+1)
            elif type(val) is list:
                child.setText(level, '[list]')
                fill_item(child, val, level+1)
            else:
                child.setText(level, str(val))                            
            child.setExpanded(True)
    else:
        child = QTreeWidgetItem()
        child.setText(level, str(value))
        item.addChild(child)
Example #2
0
class LoadThings(QUndoCommand):
    def __init__(self, widget, thing):
        super(LoadThings, self).__init__()
        self.widget = widget

        self.createdThing = thing
        self.item = QTreeWidgetItem()
        self.item.setText(0, thing.name)

        typeName = type(thing).__name__
        for i in range(self.widget.ui.treeWidget.topLevelItemCount()):
            group = self.widget.ui.treeWidget.topLevelItem(i)
            if group.text(0) == typeName:
                self.group = group
                break
        else: # group not found
            self.group = QTreeWidgetItem()
            self.group.setText(0, typeName)

    def redo(self):
        if self.widget.ui.treeWidget.indexOfTopLevelItem(self.group) == -1:
            self.widget.ui.treeWidget.addTopLevelItem(self.group)
        self.group.addChild(self.item)
        self.group.setExpanded(True)
        self.widget.ui.treeWidget.setCurrentItem(self.item)

    def undo(self):
        self.group.takeChild(self.group.childCount()-1)
        if self.group.childCount() == 0:
            parentIndex = self.widget.ui.treeWidget.indexOfTopLevelItem(self.group)
            self.widget.ui.treeWidget.takeTopLevelItem(parentIndex)
Example #3
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)
Example #4
0
    def fill_item(self,item, value):
        item.setExpanded(True)
        if type(value) is dict:
            for key, val in sorted(value.iteritems()):
                child = QTreeWidgetItem()
                x = "{0:.3f}".format(key)
#                 x = key
                child.setText(0, unicode(x))
                child.setFlags(Qt.ItemIsEnabled)
                item.addChild(child)
                self.fill_item(child, val)
        elif type(value) is list:
            for val in value:
                child = QTreeWidgetItem()
                item.addChild(child)
                if type(val) is dict:      
                    child.setText(0, '[dict]')
                    self.fill_item(child, val)
                elif type(val) is list:
                    child.setText(0, '[list]')
                    self.fill_item(child, val)
                else:
                    child.setText(0, str(value.index(val)))
                    child.setExpanded(True)
        else:
            print 'hi'
            child = QTreeWidgetItem()
            child.setText(0, unicode(value))
            item.addChild(child)          
Example #5
0
 def fill_item(self, item, value):  #recursively fills the tree
     item.setExpanded(True)
     for key, val in sorted(value.iteritems()):  #tilts
         child = QTreeWidgetItem()
         child.setText(0, unicode(key))
         child.setFlags(Qt.ItemIsEnabled)
         item.addChild(child)
         for keykey in sorted(val.keys()):  #imgIDs
             childchild = QTreeWidgetItem()
             child.addChild(childchild)
             childchild.setText(0, str(keykey))
             child.setExpanded(True)
             childchild.setExpanded(True)
Example #6
0
 def add_to_tree(self):
     if self.mysql.do:
         self.nDataBase = self.mysql.getDataBase()
         for i in self.nDataBase:
             item_m = QTreeWidgetItem(self)
             item_m.setStatusTip(0, 'main')
             item_m.setText(0, "%s" % i)
             if i in self.li:
                 item_m.setExpanded(True)
             self.table = self.mysql.getTables(i)
             for j in self.table:
                 item_c = QTreeWidgetItem(item_m)
                 item_c.setStatusTip(0, i)
                 item_c.setText(0, "%s" % j)
Example #7
0
class ToolBox(QTreeWidget):
    """A toolbox that contains logic gates and user circuits, for use
    in the main designer window.
    """

    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)

    def addUserCircuit(self, name):
        """When the user saves a circuit, add it at the correct
        alphabetical spot, if it is not already present."""
        for i in range(self.userheader.childCount()):
            if self.userheader.child(i).text(0) == name:
                return
        QTreeWidgetItem(self.userheader, [name, 'user'])
        self.userheader.sortChildren(0, Qt.AscendingOrder)