Ejemplo n.º 1
0
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent=parent)

        self._nodeGraph = NodeGraphView()
        self.setCentralWidget(self._nodeGraph)

        menubar = self.menuBar()
        nodeMenu = menubar.addMenu('Graph')
        nodeMenu.addAction('Add node', self.onAddNode)
        nodeMenu.addAction('Add default node', self.addDefaultNode)

        scene = self._nodeGraph.scene()
        scene.sigCreateConnection.connect(self.onAddConnection)
Ejemplo n.º 2
0
class MainWindow(QMainWindow):

    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent=parent)

        self._nodeGraph = NodeGraphView()
        self.setCentralWidget(self._nodeGraph)

        menubar = self.menuBar()
        nodeMenu = menubar.addMenu('Graph')
        nodeMenu.addAction('Add node', self.onAddNode)
        nodeMenu.addAction('Add default node', self.addDefaultNode)

        scene = self._nodeGraph.scene()
        scene.sigCreateConnection.connect(self.onAddConnection)

    @pyqtSlot()
    def onAddNode(self):
        name, ok = QInputDialog.getText(self, 'Add new node', 'Insert the name of the node')
        if not ok:
            return

        name = str(name)
        if len(name) == 0:
            return

        scene = self._nodeGraph.scene()
        node = NodeItemImpl(name)
        scene.addNode(node)
        node.setPos(scene.sceneRect().center())
        node.sigRemove.connect(scene.removeNode)
        node.sigAddConnector.connect(self.onAddConnector)

    @pyqtSlot(NodeItemImpl)
    def onAddConnector(self, nodeItem):
        name, ok = QInputDialog.getItem(self, 'Add connector', 'Select the type of connector', ['in', 'out'])
        if not ok:
            return
        name = str(name)
        if len(name) == 0:
            return

        numPorts, ok = QInputDialog.getInt(self, 'Add connector', 'Select the number of ports', value=1)
        if not ok or numPorts <= 0:
            return

        ports = ['%s_%d' % (name, i) for i in xrange(numPorts)]

        if name == 'in':
            conn = InputConnectorItem(name, ports)
        else:
            conn = OutputConnectorItem(name, ports)

        nodeItem.addConnector(conn)

    @pyqtSlot()
    def addDefaultNode(self):
        name, ok = QInputDialog.getText(self, 'Add new node', 'Insert the name of the node')
        if not ok:
            return

        name = str(name)
        if len(name) == 0:
            return

        scene = self._nodeGraph.scene()
        node = NodeItemImpl(name)
        scene.addNode(node)
        node.setPos(scene.sceneRect().center())
        node.sigRemove.connect(scene.removeNode)
        node.sigAddConnector.connect(self.onAddConnector)

        node.addConnector(InputConnectorItem('in', ['in_%d' % i for i in xrange(3)]))
        node.addConnector(OutputConnectorItem('out', ['out_%d' % i for i in xrange(3)]))

    @pyqtSlot(str, str)
    def onAddConnection(self, port1Name, port2Name):
        self._nodeGraph.scene().addConnection(port1Name, port2Name, ConnectionItemImpl())