예제 #1
0
class MainWindow(QMainWindow, svLumpedGui3A.Ui_MainWindow):
    def __init__(
        self,
        SettingDialog,
        parent=None,
    ):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.Resistor.clicked.connect(self.addResistorButton)
        self.Capacitor.clicked.connect(self.addCapacitorButton)
        self.Inductor.clicked.connect(self.addInductorButton)
        self.Diode.clicked.connect(self.addDiodeButton)
        self.DCVoltageSource.clicked.connect(self.addVoltageButton)
        self.DeleteWire.clicked.connect(self.deleteWire)
        self.CircuitView.setScene(QtGui.QGraphicsScene(self))
        self.BoundaryFace.clicked.connect(self.addBoundaryFaceButton)
        self.Ground.clicked.connect(self.addGroundButton)
        self.Export.clicked.connect(self.exportXML)
        self.scene = self.CircuitView.scene()

    def mousePressEvent(self, event):
        global wireCount

        if event.buttons() == QtCore.Qt.MidButton:
            self.start = event.pos()
            self.start = self.mapToGlobal(event.pos())
            self.start = self.CircuitView.mapFromGlobal(self.start)
            self.start = self.CircuitView.mapToScene(self.start)
            self.clickX = self.start.x()
            self.clickY = self.start.y()
            self.selectedItem = self.scene.itemAt(self.start)
            self.itemX = self.selectedItem.geometry().x()
            self.itemY = self.selectedItem.geometry().y()
            self.spock = self.selectedItem.widget()

        if (self.clickY > (self.itemY + 88)) & self.spock.isChecked():
            self.start = QtCore.QPointF(self.itemX - 49, self.itemY + 176)

        elif (self.clickY < (self.itemY + 88)) & self.spock.isChecked():
            self.start = QtCore.QPointF(self.itemX - 49, self.itemY)

        elif self.clickX < (self.itemX + 88):
            self.start = QtCore.QPointF(self.itemX, self.itemY + 49)

        elif self.clickX > (self.itemX + 88):
            self.start = QtCore.QPointF(self.itemX + 176, self.itemY + 49)

        if event.buttons() == QtCore.Qt.RightButton:
            self.end = event.pos()
            self.end = self.mapToGlobal(event.pos())
            self.end = self.CircuitView.mapFromGlobal(self.end)
            self.end = self.CircuitView.mapToScene(self.end)
            self.clickX = self.end.x()
            self.clickY = self.end.y()
            self.selectedItem = self.scene.itemAt(self.end)
            self.itemX = self.selectedItem.geometry().x()
            self.itemY = self.selectedItem.geometry().y()
            self.spock = self.selectedItem.widget()

        if self.spock.isFlat() == False:
            self.end = QtCore.QPointF(self.itemX + 88, self.itemY)

        elif (self.clickY > (self.itemY + 88)) & self.spock.isChecked():
            self.end = QtCore.QPointF(self.itemX - 49, self.itemY + 176)

        elif (self.clickY < (self.itemY + 88)) & self.spock.isChecked():
            self.end = QtCore.QPointF(self.itemX - 49, self.itemY)

        elif self.clickX < (self.itemX + 88):
            self.end = QtCore.QPointF(self.itemX, self.itemY + 49)

        elif self.clickX > (self.itemX + 88):
            self.end = QtCore.QPointF(self.itemX + 176, self.itemY + 49)

        self.wire = QtGui.QGraphicsLineItem(QtCore.QLineF(
            self.start, self.end))
        self.scene.addItem(self.wire)

        if self.start == self.end:
            self.scene.removeItem(self.wire)

        else:
            wireCount = wireCount + 1
            self.wire.setZValue(1)

    def deleteWire(self):
        self.scene.removeItem(self.wire)

    def exportXML(self):
        root = minidom.Document()

        xml = root.createElement('root')
        root.appendChild(xml)

        wireChild = root.createElement('wire')
        xml.appendChild(wireChild)

        xmlStr = root.toprettyxml(indent='\t')

        savePathFile = 'test.xml'
        with open(savePathFile, 'w') as f:
            f.write(xmlStr)

        global wireCount, componentCount

        allComponents = self.scene.items()
        totalComponents = wireCount + componentCount

        for QtGui.QGraphicsLineItem in allComponents[0:wireCount]:
            WirePos = QtGui.QGraphicsLineItem.line()
            print WirePos

        for QtGui.QGraphicsProxyWidget in allComponents[
                wireCount:totalComponents]:
            ComponentWidget = QtGui.QGraphicsProxyWidget.widget()
            if ComponentWidget.isFlat() == False:
                node1 = ((QtGui.QGraphicsProxyWidget.pos().x() + 88),
                         (QtGui.QGraphicsProxyWidget.pos().y()))
                node2 = ''

            elif ComponentWidget.isChecked():
                node1 = ((QtGui.QGraphicsProxyWidget.pos().x() - 49),
                         (QtGui.QGraphicsProxyWidget.pos().y()))
                node2 = ((QtGui.QGraphicsProxyWidget.pos().x() - 49),
                         (QtGui.QGraphicsProxyWidget.pos().y() + 176))

            else:
                node1 = (QtGui.QGraphicsProxyWidget.pos().x(),
                         (QtGui.QGraphicsProxyWidget.pos().y() + 49))
                node2 = ((QtGui.QGraphicsProxyWidget.pos().x() + 176),
                         (QtGui.QGraphicsProxyWidget.pos().y() + 49))

            print ComponentWidget.componentType, ComponentWidget.name, ComponentWidget.value, ComponentWidget.unit, node1, node2

    def addResistorButton(self):
        global componentCount
        self.Resistor2 = DragButton('')
        ##        self.Resistor2.setGeometry(QtCore.QRect(40, 30, 131, 61))
        self.Resistor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Resistor2.setAcceptDrops(False)
        self.Resistor2.setText(_fromUtf8(""))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8("Resistor.png")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Resistor2.setIcon(icon)
        self.Resistor2.setIconSize(QtCore.QSize(130, 70))
        self.Resistor2.setObjectName(_fromUtf8("Resistor"))
        self.Resistor2.setFlat(True)
        self.Resistor2.setCheckable(True)
        self.Resistor2.clicked.connect(self.handlebutton)
        self.Resistor2.componentType = 'Resistor'
        self.sceneResistor = self.scene.addWidget(self.Resistor2)
        componentCount = componentCount + 1

    def addCapacitorButton(self):
        global componentCount
        self.Capacitor2 = DragButton('')
        ##        self.Capacitor2.setGeometry(QtCore.QRect(80, 120, 51, 51))
        self.Capacitor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Capacitor2.setAcceptDrops(False)
        self.Capacitor2.setText(_fromUtf8(""))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8("capacitor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Capacitor2.setIcon(icon1)
        self.Capacitor2.setIconSize(QtCore.QSize(130, 70))
        self.Capacitor2.setFlat(True)
        self.Capacitor2.setObjectName(_fromUtf8("Capacitor"))
        self.Capacitor2.setCheckable(True)
        self.Capacitor2.setChecked(False)
        self.Capacitor2.clicked.connect(self.handlebutton)
        self.Capacitor2.componentType = 'Capacitor'
        self.sceneCapacitor = self.scene.addWidget(self.Capacitor2)
        componentCount = componentCount + 1

    def addInductorButton(self):
        global componentCount
        self.Inductor2 = DragButton('')
        ##        self.Inductor2.setGeometry(QtCore.QRect(40, 280, 141, 51))
        self.Inductor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Inductor2.setAcceptDrops(False)
        self.Inductor2.setText(_fromUtf8(""))
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8("Inductor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Inductor2.setIcon(icon3)
        self.Inductor2.setIconSize(QtCore.QSize(130, 70))
        self.Inductor2.setFlat(True)
        self.Inductor2.setCheckable(True)
        self.Inductor2.setObjectName(_fromUtf8("Inductor"))
        self.Inductor2.clicked.connect(self.handlebutton)
        self.Inductor2.componentType = 'Inductor'
        self.scene.addWidget(self.Inductor2)
        componentCount = componentCount + 1

    def addDiodeButton(self):
        global componentCount
        self.Diode2 = DragButton('')
        ##        self.Diode2.setGeometry(QtCore.QRect(50, 190, 111, 71))
        self.Diode2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Diode2.setAcceptDrops(False)
        self.Diode2.setText(_fromUtf8(""))
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8("Diode.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Diode2.setIcon(icon2)
        self.Diode2.setIconSize(QtCore.QSize(130, 70))
        self.Diode2.setFlat(True)
        self.Diode2.setObjectName(_fromUtf8("Diode"))
        self.Diode2.clicked.connect(self.handlebutton)
        self.Diode2.setCheckable(True)
        self.Diode2.componentType = 'Diode'
        self.scene.addWidget(self.Diode2)
        componentCount = componentCount + 1

    def addVoltageButton(self):
        global componentCount
        self.DCVoltageSource2 = DragButton('')
        self.DCVoltageSource2.setCursor(
            QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.DCVoltageSource2.setAcceptDrops(False)
        self.DCVoltageSource2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("DCVoltageSource.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.DCVoltageSource2.setIcon(icon4)
        self.DCVoltageSource2.setIconSize(QtCore.QSize(139, 70))
        self.DCVoltageSource2.setFlat(True)
        self.DCVoltageSource2.setObjectName(_fromUtf8("DC Voltage Source"))
        self.DCVoltageSource2.clicked.connect(self.handlebutton)
        self.DCVoltageSource2.setCheckable(True)
        self.DCVoltageSource2.componentType = 'DC Voltage Source'
        self.scene.addWidget(self.DCVoltageSource2)
        componentCount = componentCount + 1

    def addBoundaryFaceButton(self):
        global componentCount
        self.BoundaryFace2 = DragButton('')
        self.BoundaryFace2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.BoundaryFace2.setAcceptDrops(False)
        self.BoundaryFace2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("BoundaryFace.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.BoundaryFace2.setIcon(icon4)
        self.BoundaryFace2.setIconSize(QtCore.QSize(139, 70))
        self.BoundaryFace2.setFlat(True)
        self.BoundaryFace2.setObjectName(_fromUtf8("Boundary Face"))
        self.BoundaryFace2.clicked.connect(self.handlebutton)
        self.BoundaryFace2.componentType = 'Boundary Face'
        self.scene.addWidget(self.BoundaryFace2)
        componentCount = componentCount + 1

    def addGroundButton(self):
        global ground, componentCount
        self.Ground2 = DragButton('')
        self.Ground2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Ground2.setAcceptDrops(False)
        self.Ground2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("Ground.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Ground2.setIcon(icon4)
        self.Ground2.setIconSize(QtCore.QSize(139, 70))
        self.Ground2.setFlat(False)
        self.Ground2.setObjectName(_fromUtf8("Ground"))
        self.Ground2.componentType = 'Ground'
        self.scene.addWidget(self.Ground2)
        componentCount = componentCount + 1

    def handlebutton(self):

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ShiftModifier:
            self.widgetSet = self.sender()
            self.Settings = SettingDialog(self)
            Type = self.widgetSet.componentType
            self.Settings.Type.setText(Type)
            self.Settings.exec_()
            self.widgetSet.name = self.Settings.Name.text()
            self.widgetSet.value = self.Settings.Value.value()
            self.widgetSet.unit = self.Settings.Unit.currentText()
            self.Settings.Name.clear()
            self.Settings.Value.setValue(0)
            self.Settings.Unit.setCurrentIndex(0)

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.AltModifier:
            self.transform = QtGui.QTransform()
            self.transform.rotate(90)
            self.selectedItem.setTransform(self.transform)
            self.spock.setChecked(True)

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ControlModifier:
            self.scene.removeItem(self.selectedItem)
예제 #2
0
class MainWindow(QMainWindow, svLumpedGui3A.Ui_MainWindow):





    def __init__(self, parent=None,):
       super(MainWindow, self).__init__(parent)
       self.setupUi(self)
       self.Resistor.clicked.connect(self.addResistorButton)
       self.Capacitor.clicked.connect(self.addCapacitorButton)
       self.Inductor.clicked.connect(self.addInductorButton)
       self.Diode.clicked.connect(self.addDiodeButton)
       self.DCVoltageSource.clicked.connect(self.addVoltageButton)
       self.DeleteWire.clicked.connect(self.deleteWire)
       self.CircuitView.setScene(QtGui.QGraphicsScene(self))
       self.scene = self.CircuitView.scene()

    def deleteWire(self):
        self.scene.removeItem(self.wire) 

       
 
    def mousePressEvent(self, event):
 
        if event.buttons() == QtCore.Qt.MidButton:
            self.start = event.pos()
            self.start = self.mapToGlobal(event.pos())
            self.start = self.CircuitView.mapFromGlobal(self.start)
            self.start = self.CircuitView.mapToScene(self.start)
            self.selectedItem = self.scene.itemAt(self.start)
            self.clickX = self.start.x()
            self.clickY = self.start.y()
            self.itemX = self.selectedItem.geometry().x()
            self.itemY = self.selectedItem.geometry().y()


##        if (self.clickY < (self.itemY +98)) & rotated == True:
##            self.start = QtCore.QPointF(self.itemX -49, self.itemY)
##            global rotated
##            rotated += False 


        if self.clickY > (self.itemY +98):
            self.start = QtCore.QPointF(self.itemX - 49, self.itemY + 176)
            
        elif self.clickX < (self.itemX + 88):
            self.start = QtCore.QPointF(self.itemX, self.itemY + 49)
            
        else:
            self.start = QtCore.QPointF(self.itemX +176, self.itemY + 49)

           
        if event.buttons() == QtCore.Qt.RightButton:
            self.end = event.pos()
            self.end = self.mapToGlobal(event.pos())
            self.end = self.CircuitView.mapFromGlobal(self.end)
            self.end = self.CircuitView.mapToScene(self.end)
            self.clickX = self.end.x()
            self.clickY = self.end.y() 
            self.selectedItem = self.scene.itemAt(self.end)
            self.itemX = self.selectedItem.geometry().x()
            self.itemY = self.selectedItem.geometry().y()

        if self.clickY > (self.itemY +98):
            self.start = QtCore.QPointF(self.itemX - 49, self.itemY + 176)

        elif self.clickX < (self.itemX + 88):
            self.end = QtCore.QPointF(self.itemX, self.itemY + 49)
            
        else:
            self.end = QtCore.QPointF(self.itemX +176, self.itemY + 49)

        self.wire = QtGui.QGraphicsLineItem(QtCore.QLineF(self.start, self.end))
        self.scene.addItem(self.wire)

        if self.start == self.end:
            self.scene.removeItem(self.wire)

        else:
            print self.start, self.end


            
    
    def addResistorButton(self,):
        self.Resistor2 = DragButton('')
##        self.Resistor2.setGeometry(QtCore.QRect(40, 30, 131, 61))
        self.Resistor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Resistor2.setAcceptDrops(False)
        self.Resistor2.setText(_fromUtf8(""))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8("Resistor.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Resistor2.setIcon(icon)
        self.Resistor2.setIconSize(QtCore.QSize(130, 70))
        self.Resistor2.setObjectName(_fromUtf8("Resistor"))
        self.Resistor2.setFlat(True)
        self.Resistor2.clicked.connect(self.handlebutton)
##        self.Resistor2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
##        self.Resistor2.customContextMenuRequested.connect(self.handlebutton)
        self.scene_Resistor = self.scene.addWidget(self.Resistor2)
        
    
        
    def addCapacitorButton(self):
        self.Capacitor2 = DragButton('')
##        self.Capacitor2.setGeometry(QtCore.QRect(80, 120, 51, 51))
        self.Capacitor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Capacitor2.setAcceptDrops(False)
        self.Capacitor2.setText(_fromUtf8(""))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8("capacitor.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Capacitor2.setIcon(icon1)
        self.Capacitor2.setIconSize(QtCore.QSize(130, 70))
        self.Capacitor2.setFlat(True)
        self.Capacitor2.setObjectName(_fromUtf8("Capacitor"))
        self.Capacitor2.setCheckable(True)
        self.Capacitor2.setChecked(False)
        self.Capacitor2.clicked.connect(self.handlebutton)
        self.scene_Capacitor = self.scene.addWidget(self.Capacitor2)


        
    def addInductorButton(self):
        self.Inductor2 = DragButton('')
##        self.Inductor2.setGeometry(QtCore.QRect(40, 280, 141, 51))
        self.Inductor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Inductor2.setAcceptDrops(False)
        self.Inductor2.setText(_fromUtf8(""))
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8("Inductor.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Inductor2.setIcon(icon3)
        self.Inductor2.setIconSize(QtCore.QSize(130, 70))
        self.Inductor2.setFlat(True)
        self.Inductor2.setObjectName(_fromUtf8("Inductor"))
        self.Inductor2.clicked.connect(self.handlebutton)
        self.scene.addWidget(self.Inductor2)

    def addDiodeButton(self):
        self.Diode2 = DragButton('')
##        self.Diode2.setGeometry(QtCore.QRect(50, 190, 111, 71))
        self.Diode2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Diode2.setAcceptDrops(False)
        self.Diode2.setText(_fromUtf8(""))
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8("Diode.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Diode2.setIcon(icon2)
        self.Diode2.setIconSize(QtCore.QSize(130, 70))
        self.Diode2.setFlat(True)
        self.Diode2.setObjectName(_fromUtf8("Diode"))
        self.Diode2.clicked.connect(self.handlebutton)
        self.scene.addWidget(self.Diode2)

    def addVoltageButton(self):
        self.DCVoltageSource2 = DragButton('')
        self.DCVoltageSource2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.DCVoltageSource2.setAcceptDrops(False)
        self.DCVoltageSource2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("DCVoltageSource.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.DCVoltageSource2.setIcon(icon4)
        self.DCVoltageSource2.setIconSize(QtCore.QSize(139, 70))
        self.DCVoltageSource2.setFlat(True)
        self.DCVoltageSource2.setObjectName(_fromUtf8("DCVoltageSource"))
        self.DCVoltageSource2.clicked.connect(self.handlebutton)
        self.scene.addWidget(self.DCVoltageSource2)

       

    def handlebutton(self):

        
        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ShiftModifier:          
            form = SettingDialog(self)
            form.show()

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.AltModifier:
            transform = QtGui.QTransform()
            transform.rotate(90)
            self.selectedItem.setTransform(transform)

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ControlModifier:
            self.scene.removeItem(self.selectedItem)
예제 #3
0
class MainWindow(QMainWindow, svLumpedGui3A.Ui_MainWindow):
    def __init__(
        self,
        SettingDialog,
        parent=None,
    ):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.Resistor.clicked.connect(self.addResistorButton)
        self.Capacitor.clicked.connect(self.addCapacitorButton)
        self.Inductor.clicked.connect(self.addInductorButton)
        self.Diode.clicked.connect(self.addDiodeButton)
        self.DCVoltageSource.clicked.connect(self.addVoltageButton)
        self.DeleteWire.clicked.connect(self.deleteWire)
        self.CircuitView.setScene(QtGui.QGraphicsScene(self))
        self.BoundaryFace.clicked.connect(self.addBoundaryFaceButton)
        self.Ground.clicked.connect(self.addGroundButton)
        self.Export.clicked.connect(self.exportXML)
        self.scene = self.CircuitView.scene()
        self.actionOpen.triggered.connect(self.openFile)
        self.actionSave.triggered.connect(self.exportXML)

    def mousePressEvent(self, event):
        global wireCount

        try:

            if event.buttons() == QtCore.Qt.MidButton:
                self.start = event.pos()
                self.start = self.mapToGlobal(event.pos())
                self.start = self.CircuitView.mapFromGlobal(self.start)
                self.start = self.CircuitView.mapToScene(self.start)
                self.clickX = self.start.x()
                self.clickY = self.start.y()
                self.selectedItem = self.scene.itemAt(self.start)
                self.itemX = self.selectedItem.geometry().x()
                self.itemY = self.selectedItem.geometry().y()
                self.spock = self.selectedItem.widget()

            if (self.clickY > (self.itemY + 88)) & self.spock.isChecked():
                self.start = QtCore.QPointF(self.itemX - 49, self.itemY + 176)

            elif (self.clickY < (self.itemY + 88)) & self.spock.isChecked():
                self.start = QtCore.QPointF(self.itemX - 49, self.itemY)

            elif self.clickX < (self.itemX + 88):
                self.start = QtCore.QPointF(self.itemX, self.itemY + 49)

            elif self.clickX > (self.itemX + 88):
                self.start = QtCore.QPointF(self.itemX + 176, self.itemY + 49)

            if event.buttons() == QtCore.Qt.RightButton:
                self.end = event.pos()
                self.end = self.mapToGlobal(event.pos())
                self.end = self.CircuitView.mapFromGlobal(self.end)
                self.end = self.CircuitView.mapToScene(self.end)
                self.clickX = self.end.x()
                self.clickY = self.end.y()
                self.selectedItem = self.scene.itemAt(self.end)
                self.itemX = self.selectedItem.geometry().x()
                self.itemY = self.selectedItem.geometry().y()
                self.spock = self.selectedItem.widget()

            if self.spock.isFlat() == False:
                self.end = QtCore.QPointF(self.itemX + 88, self.itemY)

            elif (self.clickY > (self.itemY + 88)) & self.spock.isChecked():
                self.end = QtCore.QPointF(self.itemX - 49, self.itemY + 176)

            elif (self.clickY < (self.itemY + 88)) & self.spock.isChecked():
                self.end = QtCore.QPointF(self.itemX - 49, self.itemY)

            elif self.clickX < (self.itemX + 88):
                self.end = QtCore.QPointF(self.itemX, self.itemY + 49)

            elif self.clickX > (self.itemX + 88):
                self.end = QtCore.QPointF(self.itemX + 176, self.itemY + 49)

            self.wire = QtGui.QGraphicsLineItem(
                QtCore.QLineF(self.start, self.end))
            self.scene.addItem(self.wire)

            if self.start == self.end:
                self.scene.removeItem(self.wire)

            else:
                wireCount = wireCount + 1
                self.wire.setZValue(1)

        except Exception as err:
            self.statusbar.showMessage("Error: Component Not Pressed!")

    def deleteWire(self):
        global wireCount
        if wireCount > 0:
            deleteWire = self.scene.items()[0]
            self.scene.removeItem(deleteWire)
            wireCount = wireCount - 1
        else:
            self.statusbar.showMessage("Error: No Wires Exist (yet!)")

    def exportXML(self):
        global wireCount, componentCount
        allComponents = self.scene.items()
        totalComponents = wireCount + componentCount

        root = minidom.Document()
        xml = root.createElement('circuit')
        root.appendChild(xml)

        if componentCount != 0 and wireCount != 0:

            for QtGui.QGraphicsProxyWidget in allComponents[
                    wireCount:totalComponents]:
                ComponentWidget = QtGui.QGraphicsProxyWidget.widget()
                if ComponentWidget.isFlat() == False:
                    node1 = ((QtGui.QGraphicsProxyWidget.pos().x() + 88),
                             (QtGui.QGraphicsProxyWidget.pos().y()))
                    node2 = ''

                elif ComponentWidget.isChecked():
                    node1 = ((QtGui.QGraphicsProxyWidget.pos().x() - 49),
                             (QtGui.QGraphicsProxyWidget.pos().y()))
                    node2 = ((QtGui.QGraphicsProxyWidget.pos().x() - 49),
                             (QtGui.QGraphicsProxyWidget.pos().y() + 176))

                else:
                    node1 = (QtGui.QGraphicsProxyWidget.pos().x(),
                             (QtGui.QGraphicsProxyWidget.pos().y() + 49))
                    node2 = ((QtGui.QGraphicsProxyWidget.pos().x() + 176),
                             (QtGui.QGraphicsProxyWidget.pos().y() + 49))

                xmlcomponents = root.createElement('Component')
                xmlcomponents.setAttribute('type',
                                           ComponentWidget.componentType)
                xmlcomponents.setAttribute('value', str(ComponentWidget.value))
                xmlcomponents.setAttribute('metricPrefix',
                                           str(ComponentWidget.unit))
                xmlcomponents.setAttribute('name', str(ComponentWidget.name))
                xmlcomponents.setAttribute('rotated',
                                           str(ComponentWidget.rotated))
                xml.appendChild(xmlcomponents)

                componentNode1 = root.createElement("Node")
                componentNode1.appendChild(root.createTextNode(str(node1)))
                xmlcomponents.appendChild(componentNode1)

                componentNode2 = root.createElement("Node")
                componentNode2.appendChild(root.createTextNode(str(node2)))
                xmlcomponents.appendChild(componentNode2)

            for QtGui.QGraphicsLineItem in allComponents[0:wireCount]:
                WirePos = QtGui.QGraphicsLineItem.line()
                WirePos = str(WirePos)
                stringLength = len(WirePos) - 1
                wire = WirePos[20:stringLength]

                xmlwire = root.createElement('wire')
                xml.appendChild(xmlwire)

                wirePos = root.createElement('wirePos')
                wirePos.appendChild(root.createTextNode(wire))
                xmlwire.appendChild(wirePos)

            xmlStr = root.toprettyxml(indent='\t')

            savePathFile = 'test.xml'
            with open(savePathFile, 'w') as f:
                f.write(xmlStr)
            self.statusbar.showMessage("Circuit Exported to XML File")

        elif componentCount == 0:
            self.statusbar.showMessage("Error: No Components Added!")

        elif wireCount == 0:
            self.statusbar.showMessage("Error: No Wires Added!")

    def openFile(self):
        name = str(QtGui.QFileDialog.getOpenFileName())
        nameSplit = name.split("/") or name.split("\\")
        nameSplitNumber = (len(nameSplit) - 1)
        xmlFile = nameSplit[nameSplitNumber]
        xmlLoad = ET.parse(xmlFile)
        circuit = xmlLoad.getroot()

        for components in circuit.findall("Component"):
            Type = components.get("type")
            Node = components.find("Node").text
            print Type, Node

        for wires in circuit.findall("wire"):
            wirePos = wires.find("wirePos").text
            print wirePos

    def addResistorButton(self):
        global componentCount
        self.Resistor2 = DragButton('')
        ##        self.Resistor2.setGeometry(QtCore.QRect(40, 30, 131, 61))
        self.Resistor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Resistor2.setAcceptDrops(False)
        self.Resistor2.setText(_fromUtf8(""))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8("Resistor.png")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Resistor2.setIcon(icon)
        self.Resistor2.setIconSize(QtCore.QSize(130, 70))
        self.Resistor2.setObjectName(_fromUtf8("Resistor"))
        self.Resistor2.setFlat(True)
        self.Resistor2.setCheckable(True)
        self.Resistor2.clicked.connect(self.handlebutton)
        self.Resistor2.componentType = 'Resistor'
        self.sceneResistor = self.scene.addWidget(self.Resistor2)
        componentCount = componentCount + 1

    def addCapacitorButton(self):
        global componentCount
        self.Capacitor2 = DragButton('')
        ##        self.Capacitor2.setGeometry(QtCore.QRect(80, 120, 51, 51))
        self.Capacitor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Capacitor2.setAcceptDrops(False)
        self.Capacitor2.setText(_fromUtf8(""))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8("capacitor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Capacitor2.setIcon(icon1)
        self.Capacitor2.setIconSize(QtCore.QSize(130, 70))
        self.Capacitor2.setFlat(True)
        self.Capacitor2.setObjectName(_fromUtf8("Capacitor"))
        self.Capacitor2.setCheckable(True)
        self.Capacitor2.setChecked(False)
        self.Capacitor2.clicked.connect(self.handlebutton)
        self.Capacitor2.componentType = 'Capacitor'
        self.sceneCapacitor = self.scene.addWidget(self.Capacitor2)
        componentCount = componentCount + 1

    def addInductorButton(self):
        global componentCount
        self.Inductor2 = DragButton('')
        ##        self.Inductor2.setGeometry(QtCore.QRect(40, 280, 141, 51))
        self.Inductor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Inductor2.setAcceptDrops(False)
        self.Inductor2.setText(_fromUtf8(""))
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8("Inductor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Inductor2.setIcon(icon3)
        self.Inductor2.setIconSize(QtCore.QSize(130, 70))
        self.Inductor2.setFlat(True)
        self.Inductor2.setCheckable(True)
        self.Inductor2.setObjectName(_fromUtf8("Inductor"))
        self.Inductor2.clicked.connect(self.handlebutton)
        self.Inductor2.componentType = 'Inductor'
        self.scene.addWidget(self.Inductor2)
        componentCount = componentCount + 1

    def addDiodeButton(self):
        global componentCount
        self.Diode2 = DragButton('')
        ##        self.Diode2.setGeometry(QtCore.QRect(50, 190, 111, 71))
        self.Diode2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Diode2.setAcceptDrops(False)
        self.Diode2.setText(_fromUtf8(""))
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8("Diode.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Diode2.setIcon(icon2)
        self.Diode2.setIconSize(QtCore.QSize(130, 70))
        self.Diode2.setFlat(True)
        self.Diode2.setObjectName(_fromUtf8("Diode"))
        self.Diode2.clicked.connect(self.handlebutton)
        self.Diode2.setCheckable(True)
        self.Diode2.componentType = 'Diode'
        self.scene.addWidget(self.Diode2)
        componentCount = componentCount + 1

    def addVoltageButton(self):
        global componentCount
        self.DCVoltageSource2 = DragButton('')
        self.DCVoltageSource2.setCursor(
            QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.DCVoltageSource2.setAcceptDrops(False)
        self.DCVoltageSource2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("DCVoltageSource.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.DCVoltageSource2.setIcon(icon4)
        self.DCVoltageSource2.setIconSize(QtCore.QSize(139, 70))
        self.DCVoltageSource2.setFlat(True)
        self.DCVoltageSource2.setObjectName(_fromUtf8("DC Voltage Source"))
        self.DCVoltageSource2.clicked.connect(self.handlebutton)
        self.DCVoltageSource2.setCheckable(True)
        self.DCVoltageSource2.componentType = 'DC Voltage Source'
        self.scene.addWidget(self.DCVoltageSource2)
        componentCount = componentCount + 1

    def addBoundaryFaceButton(self):
        global componentCount
        self.BoundaryFace2 = DragButton('')
        self.BoundaryFace2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.BoundaryFace2.setAcceptDrops(False)
        self.BoundaryFace2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("BoundaryFace.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.BoundaryFace2.setIcon(icon4)
        self.BoundaryFace2.setIconSize(QtCore.QSize(139, 70))
        self.BoundaryFace2.setFlat(True)
        self.BoundaryFace2.setObjectName(_fromUtf8("Boundary Face"))
        self.BoundaryFace2.clicked.connect(self.handlebutton)
        self.BoundaryFace2.componentType = 'Boundary Face'
        self.scene.addWidget(self.BoundaryFace2)
        componentCount = componentCount + 1

    def addGroundButton(self):
        global ground, componentCount
        self.Ground2 = DragButton('')
        self.Ground2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Ground2.setAcceptDrops(False)
        self.Ground2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("Ground.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Ground2.setIcon(icon4)
        self.Ground2.setIconSize(QtCore.QSize(139, 70))
        self.Ground2.setFlat(False)
        self.Ground2.setObjectName(_fromUtf8("Ground"))
        self.Ground2.componentType = 'Ground'
        self.scene.addWidget(self.Ground2)
        componentCount = componentCount + 1

    def handlebutton(self):
        global componentCount

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ShiftModifier:
            self.widgetSet = self.sender()
            self.Settings = SettingDialog(self)
            Type = self.widgetSet.componentType
            self.Settings.Type.setText(Type)
            self.Settings.exec_()
            self.widgetSet.name = self.Settings.Name.text()
            self.widgetSet.value = self.Settings.Value.value()
            self.widgetSet.unit = self.Settings.Unit.currentText()
            self.Settings.Name.clear()
            self.Settings.Value.setValue(0)
            self.Settings.Unit.setCurrentIndex(0)

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.AltModifier:
            self.transform = QtGui.QTransform()
            self.transform.rotate(90)
            self.selectedItem.setTransform(self.transform)
            self.spock.setChecked(True)
            self.rotatedButton = self.sender()
            self.rotatedButton.rotated = True

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ControlModifier:
            self.scene.removeItem(self.selectedItem)
            componentCount = componentCount - 1
예제 #4
0
class MainWindow(QMainWindow, svLumpedGui2.Ui_MainWindow):
    def __init__(
        self,
        parent=None,
    ):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.Resistor.clicked.connect(self.addResistorButton)
        self.Capacitor.clicked.connect(self.addCapacitorButton)

        self.Inductor.clicked.connect(self.addInductorButton)
        self.Diode.clicked.connect(self.addDiodeButton)
        self.DCVoltageSource.clicked.connect(self.addVoltageButton)

    def mousePressEvent(self, event):
        self.__mousePressPos = None
        if event.button() == QtCore.Qt.RightButton:
            self.x1 = event.globalPos().x()
            self.y1 = event.globalPos().y()
            self.__mousePressPos = None
            if event.button() == QtCore.Qt.RightButton:
                QtGui.QPushButton.mousePressEvent = self.getPos2

    def getPos2(self, event):
        self.x2 = event.globalPos().x()
        self.y2 = event.globalPos().y()
        print self.x1, self.y1, self.x2, self.y2


##    def paintEvent(self, e):
##
##        qp = QtGui.QPainter()
##        qp.begin(self)
##        self.drawLines(qp)
##        qp.end()
##
##    def drawLines(self, qp):
##
##        pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
##
##        qp.setPen(pen)
##        qp.drawLine(self.x1, self.y1, self.x2, self.y2)

    def addResistorButton(self):
        self.Resistor2 = DragButton('', self)
        self.Resistor2.setGeometry(QtCore.QRect(40, 30, 131, 61))
        self.Resistor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Resistor2.setAcceptDrops(False)
        self.Resistor2.setText(_fromUtf8(""))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8("Resistor.png")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Resistor2.setIcon(icon)
        self.Resistor2.setIconSize(QtCore.QSize(130, 67))
        self.Resistor2.setFlat(True)
        self.Resistor2.setObjectName(_fromUtf8("Resistor"))
        self.Resistor2.setCheckable(True)
        self.Resistor2.setChecked(False)
        self.Resistor2.show()
        self.Resistor2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.Resistor2.customContextMenuRequested.connect(self.handlebutton)

    def addCapacitorButton(self):
        self.Capacitor2 = DragButton('', self)
        self.Capacitor2.setGeometry(QtCore.QRect(80, 120, 51, 51))
        self.Capacitor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Capacitor2.setAcceptDrops(False)
        self.Capacitor2.setText(_fromUtf8(""))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8("capacitor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Capacitor2.setIcon(icon1)
        self.Capacitor2.setIconSize(QtCore.QSize(150, 60))
        self.Capacitor2.setFlat(True)
        self.Capacitor2.setObjectName(_fromUtf8("Capacitor"))
        self.Capacitor2.setCheckable(True)
        self.Capacitor2.setChecked(False)
        self.Capacitor2.show()
        self.Capacitor2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.Capacitor2.customContextMenuRequested.connect(self.handlebutton)

    def addInductorButton(self):
        self.Inductor2 = DragButton('', self)
        self.Inductor2.setGeometry(QtCore.QRect(40, 280, 141, 51))
        self.Inductor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Inductor2.setAcceptDrops(False)
        self.Inductor2.setText(_fromUtf8(""))
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8("Inductor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Inductor2.setIcon(icon3)
        self.Inductor2.setIconSize(QtCore.QSize(135, 80))
        self.Inductor2.setFlat(True)
        self.Inductor2.setObjectName(_fromUtf8("Inductor"))
        self.Inductor2.show()
        self.Inductor2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.Inductor2.customContextMenuRequested.connect(self.handlebutton)

    def addDiodeButton(self):
        self.Diode2 = DragButton('', self)
        self.Diode2.setGeometry(QtCore.QRect(50, 190, 111, 71))
        self.Diode2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Diode2.setAcceptDrops(False)
        self.Diode2.setText(_fromUtf8(""))
        icon2 = QtGui.QIcon()
        icon2.addPixmap
        (QtGui.QPixmap(_fromUtf8("Diode.png")), QtGui.QIcon.Normal,
         QtGui.QIcon.Off)
        self.Diode2.setIcon(icon2)
        self.Diode2.setIconSize(QtCore.QSize(200, 67))
        self.Diode2.setFlat(True)
        self.Diode2.setObjectName(_fromUtf8("Diode"))
        self.Diode2.show()
        self.Diode2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.Diode2.customContextMenuRequested.connect(self.handlebutton)

    def addVoltageButton(self):
        self.DCVoltageSource2 = DragButton('', self)
        self.DCVoltageSource2.setGeometry(QtCore.QRect(70, 350, 71, 71))
        self.DCVoltageSource2.setCursor(
            QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.DCVoltageSource2.setAcceptDrops(False)
        self.DCVoltageSource2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("DCVoltageSource.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.DCVoltageSource2.setIcon(icon4)
        self.DCVoltageSource2.setIconSize(QtCore.QSize(100, 60))
        self.DCVoltageSource2.setFlat(True)
        self.DCVoltageSource2.setObjectName(_fromUtf8("DCVoltageSource"))
        self.DCVoltageSource2.show()
        self.DCVoltageSource2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.DCVoltageSource2.customContextMenuRequested.connect(
            self.handlebutton)

    def handlebutton(self):
        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ShiftModifier:
            form = SettingDialog(self)
            form.show()
예제 #5
0
class MainWindow(QMainWindow, svLumpedGui3A.Ui_MainWindow):
    def __init__(
        self,
        SettingDialog,
        parent=None,
    ):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.Resistor.clicked.connect(self.addResistorButton)
        self.Capacitor.clicked.connect(self.addCapacitorButton)
        self.Inductor.clicked.connect(self.addInductorButton)
        self.Diode.clicked.connect(self.addDiodeButton)
        self.DCVoltageSource.clicked.connect(self.addVoltageButton)
        self.DeleteWire.clicked.connect(self.deleteWire)
        self.CircuitView.setScene(QtGui.QGraphicsScene(self))
        self.BoundaryFace.clicked.connect(self.addBoundaryFaceButton)
        self.Ground.clicked.connect(self.addGroundButton)
        self.Export.clicked.connect(self.exportXML)
        ##       self.Export.clicked.connect(self.nameTest)
        ##       self.Export.clicked.connect(self.posTest)
        self.scene = self.CircuitView.scene()

    def mousePressEvent(self, event):
        global ground

        if event.buttons() == QtCore.Qt.MidButton:
            self.start = event.pos()
            self.start = self.mapToGlobal(event.pos())
            self.start = self.CircuitView.mapFromGlobal(self.start)
            self.start = self.CircuitView.mapToScene(self.start)
            self.clickX = self.start.x()
            self.clickY = self.start.y()
            self.selectedItem = self.scene.itemAt(self.start)
            self.itemX = self.selectedItem.geometry().x()
            self.itemY = self.selectedItem.geometry().y()
            self.spock = self.selectedItem.widget()

        if (self.clickY > (self.itemY + 88)) & self.spock.isChecked():
            self.start = QtCore.QPointF(self.itemX - 49, self.itemY + 176)

        elif (self.clickY < (self.itemY + 88)) & self.spock.isChecked():
            self.start = QtCore.QPointF(self.itemX - 49, self.itemY)

        elif self.clickX < (self.itemX + 88):
            self.start = QtCore.QPointF(self.itemX, self.itemY + 49)

        elif self.clickX > (self.itemX + 88):
            self.start = QtCore.QPointF(self.itemX + 176, self.itemY + 49)

        if event.buttons() == QtCore.Qt.RightButton:
            self.end = event.pos()
            self.end = self.mapToGlobal(event.pos())
            self.end = self.CircuitView.mapFromGlobal(self.end)
            self.end = self.CircuitView.mapToScene(self.end)
            self.clickX = self.end.x()
            self.clickY = self.end.y()
            self.selectedItem = self.scene.itemAt(self.end)
            self.itemX = self.selectedItem.geometry().x()
            self.itemY = self.selectedItem.geometry().y()
            self.spock = self.selectedItem.widget()

        if ground == True:
            if self.spock == self.Ground2:
                self.scene.removeItem(self.wire)
                self.end = QtCore.QPointF(self.itemX + 88, self.itemY)
                ground = False

        elif (self.clickY > (self.itemY + 88)) & self.spock.isChecked():
            self.end = QtCore.QPointF(self.itemX - 49, self.itemY + 176)

        elif (self.clickY < (self.itemY + 88)) & self.spock.isChecked():
            self.end = QtCore.QPointF(self.itemX - 49, self.itemY)

        elif self.clickX < (self.itemX + 88):
            self.end = QtCore.QPointF(self.itemX, self.itemY + 49)

        elif self.clickX > (self.itemX + 88):
            self.end = QtCore.QPointF(self.itemX + 176, self.itemY + 49)

        self.wire = QtGui.QGraphicsLineItem(QtCore.QLineF(
            self.start, self.end))
        self.scene.addItem(self.wire)

        if self.start == self.end:
            self.scene.removeItem(self.wire)
        else:
            print self.start, self.end

    def deleteWire(self):
        self.scene.removeItem(self.wire)

    def exportXML(self):
        Dialog = SettingDialog()
        self.spock.name = Dialog.Name.text()
        self.spock.value = Dialog.Value.value()
        self.spock.unit = Dialog.Unit.currentIndex()
        self.componentPos = self.selectedItem.pos()

        print self.spock.componentType, self.spock.name, self.spock.value, self.spock.unit, self.componentPos

##    def posTest(self):
##        self.allItems = self.scene.items()
##        print self.allItems

##

    def addResistorButton(self):
        self.Resistor2 = DragButton('')
        ##        self.Resistor2.setGeometry(QtCore.QRect(40, 30, 131, 61))
        self.Resistor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Resistor2.setAcceptDrops(False)
        self.Resistor2.setText(_fromUtf8(""))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8("Resistor.png")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Resistor2.setIcon(icon)
        self.Resistor2.setIconSize(QtCore.QSize(130, 70))
        self.Resistor2.setObjectName(_fromUtf8("Resistor"))
        self.Resistor2.setFlat(True)
        self.Resistor2.setCheckable(True)
        self.Resistor2.clicked.connect(self.handlebutton)
        self.Resistor2.componentType = 'Resistor'
        self.scene_Resistor = self.scene.addWidget(self.Resistor2)


##        self.Resistor2.name = SettingDialog.name
##        self.Resistor2.value = SettingDialog.value
##        self.Resistor2.unit = SettingDialog.unit

    def addCapacitorButton(self):
        self.Capacitor2 = DragButton('')
        ##        self.Capacitor2.setGeometry(QtCore.QRect(80, 120, 51, 51))
        self.Capacitor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Capacitor2.setAcceptDrops(False)
        self.Capacitor2.setText(_fromUtf8(""))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8("capacitor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Capacitor2.setIcon(icon1)
        self.Capacitor2.setIconSize(QtCore.QSize(130, 70))
        self.Capacitor2.setFlat(True)
        self.Capacitor2.setObjectName(_fromUtf8("Capacitor"))
        self.Capacitor2.setCheckable(True)
        self.Capacitor2.setChecked(False)
        self.Capacitor2.clicked.connect(self.handlebutton)
        self.Capacitor2.componentType = 'Capacitor'
        self.scene_Capacitor = self.scene.addWidget(self.Capacitor2)

    def addInductorButton(self):
        self.Inductor2 = DragButton('')
        ##        self.Inductor2.setGeometry(QtCore.QRect(40, 280, 141, 51))
        self.Inductor2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Inductor2.setAcceptDrops(False)
        self.Inductor2.setText(_fromUtf8(""))
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8("Inductor.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Inductor2.setIcon(icon3)
        self.Inductor2.setIconSize(QtCore.QSize(130, 70))
        self.Inductor2.setFlat(True)
        self.Inductor2.setCheckable(True)
        self.Inductor2.setObjectName(_fromUtf8("Inductor"))
        self.Inductor2.clicked.connect(self.handlebutton)
        self.Inductor2.componentType = 'Inductor'
        self.scene.addWidget(self.Inductor2)

    def addDiodeButton(self):
        self.Diode2 = DragButton('')
        ##        self.Diode2.setGeometry(QtCore.QRect(50, 190, 111, 71))
        self.Diode2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Diode2.setAcceptDrops(False)
        self.Diode2.setText(_fromUtf8(""))
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8("Diode.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Diode2.setIcon(icon2)
        self.Diode2.setIconSize(QtCore.QSize(130, 70))
        self.Diode2.setFlat(True)
        self.Diode2.setObjectName(_fromUtf8("Diode"))
        self.Diode2.clicked.connect(self.handlebutton)
        self.Diode2.setCheckable(True)
        self.Diode2.componentType = 'Diode'
        self.scene.addWidget(self.Diode2)
        print self.Diode2.componentType

    def addVoltageButton(self):
        self.DCVoltageSource2 = DragButton('')
        self.DCVoltageSource2.setCursor(
            QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.DCVoltageSource2.setAcceptDrops(False)
        self.DCVoltageSource2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("DCVoltageSource.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.DCVoltageSource2.setIcon(icon4)
        self.DCVoltageSource2.setIconSize(QtCore.QSize(139, 70))
        self.DCVoltageSource2.setFlat(True)
        self.DCVoltageSource2.setObjectName(_fromUtf8("DCVoltageSource"))
        self.DCVoltageSource2.clicked.connect(self.handlebutton)
        self.DCVoltageSource2.setCheckable(True)
        self.DCVoltageSource2.componentType = 'DCVoltageSource'
        self.scene.addWidget(self.DCVoltageSource2)
        print self.DCVoltageSource2.componentType

    def addBoundaryFaceButton(self):
        self.BoundaryFace2 = DragButton('')
        self.BoundaryFace2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.BoundaryFace2.setAcceptDrops(False)
        self.BoundaryFace2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("BoundaryFace.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.BoundaryFace2.setIcon(icon4)
        self.BoundaryFace2.setIconSize(QtCore.QSize(139, 70))
        self.BoundaryFace2.setFlat(True)
        self.BoundaryFace2.setObjectName(_fromUtf8("BoundaryFace"))
        self.BoundaryFace2.clicked.connect(self.handlebutton)
        self.BoundaryFace2.componentType = 'BoundaryFace'
        self.scene.addWidget(self.BoundaryFace2)
        print self.BoundaryFace2.componentType

    def addGroundButton(self):
        global ground
        self.Ground2 = DragButton('')
        self.Ground2.setCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
        self.Ground2.setAcceptDrops(False)
        self.Ground2.setText(_fromUtf8(""))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8("Ground.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.Ground2.setIcon(icon4)
        self.Ground2.setIconSize(QtCore.QSize(139, 70))
        self.Ground2.setFlat(True)
        self.Ground2.setObjectName(_fromUtf8("Ground"))
        self.Ground2.clicked.connect(self.handlebutton)
        self.Ground2.componentType = 'Ground'
        self.scene.addWidget(self.Ground2)
        print self.Ground2.componentType
        ground = True

    def handlebutton(self):

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ShiftModifier:
            form = SettingDialog(self)
            form.show()

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.AltModifier:
            self.transform = QtGui.QTransform()
            self.transform.rotate(90)
            self.selectedItem.setTransform(self.transform)
            self.spock.setChecked(True)

        if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ControlModifier:
            self.scene.removeItem(self.selectedItem)

    def nameTest(self):
        dialog = SettingDialog()
        ##        name = dialog.name
        ##        print name
        print dialog.Name.text()