def dropEvent(self, event): nodeLabel = str(event.mimeData().text()) event.mimeData().setText("") self.drop = False if nodeLabel == "": return _node = MT.createNode(nodeLabel) if _node is not None: self.scene().space.addNode(_node) scenePos = self.mapToScene(event.pos()) nw = NodeDesigner.width nh = NodeDesigner.height _node.pos = (scenePos.x() - nw / 2, scenePos.y() - nh / 2) #link it #find sockets this corresponds to insocket = None for socket in self.start.data.insockets: if (socket.connected is not None and socket.connected.node.ptr == self.end.data.ptr): insocket = socket break out = insocket.connected #find new matching insocket and link insockets = MT.getCompatibleSockets(out, node_) if len(insockets) == 1: insockets[0].connected = out else: menu = QMenu() for socket in insockets: action = menu.addAction(socket.name) def connect(): socket.connected = out action.triggered.connect(connect) menu.exec_(event.screenPos()) outsockets = list( filter(lambda o: MT.isCompatible(insocket, o), _node.outsockets)) if len(outsockets) == 1: insocket.connected = outsockets[0] else: menu = QMenu() for socket in outsockets: action = menu.addAction(socket.name) def connect(): insocket.connected = socket action.triggered.connect(connect) menu.exec_(event.screenPos())
def dropEvent(self, event): nodeLabel = str(event.mimeData().text()) event.mimeData().setText("") self.drop = False if nodeLabel == "": return _node = MT.createNode(nodeLabel) if _node is not None: self.scene().space.addNode(_node) scenePos = self.mapToScene(event.pos()) nw = NodeDesigner.width nh = NodeDesigner.height _node.pos = (scenePos.x() - nw/2, scenePos.y() - nh/2) #link it #find sockets this corresponds to insocket = None for socket in self.start.data.insockets: if (socket.connected is not None and socket.connected.node.ptr == self.end.data.ptr): insocket = socket break out = insocket.connected #find new matching insocket and link insockets = MT.getCompatibleSockets(out, node_) if len(insockets) == 1: insockets[0].connected = out else: menu = QMenu() for socket in insockets: action = menu.addAction(socket.name) def connect(): socket.connected = out action.triggered.connect(connect) menu.exec_(event.screenPos()) outsockets = list(filter(lambda o: MT.isCompatible(insocket, o), _node.outsockets)) if len(outsockets) == 1: insocket.connected = outsockets[0] else: menu = QMenu() for socket in outsockets: action = menu.addAction(socket.name) def connect(): insocket.connected = socket action.triggered.connect(connect) menu.exec_(event.screenPos())
def dropNodeConnect(self): sitems = self.graph.scene().selectedItems() if not sitems: return self.dropNodeCenter() last_node = sitems[0].data pos = last_node.pos newPos = (pos[0], pos[1] + (n.NodeDesigner.height * 2) + 20) nodelabel = self.selectedItems()[0].text(1) node = self.graph.dropNode(nodelabel, newPos) for snode in sitems: for outsocket in snode.data.outsockets: for insocket in node.insockets: if (MT.isCompatible(insocket, outsocket) and not insocket.connected): insocket.connected = outsocket break
def dropNodeConnect(self): sitems = self.graph.scene().selectedItems() if not sitems: return self.dropNodeCenter() last_node = sitems[0].data pos = last_node.pos newPos = (pos[0], pos[1] + (n.NodeDesigner.height * 2) + 20) nodelabel = self.selectedItems()[0].text(1) node = self.graph.dropNode(nodelabel, newPos) for snode in sitems: for outsocket in snode.data.outsockets: for insocket in node.insockets: if (MT.isCompatible(insocket, outsocket) and not insocket.connected): insocket.connected = outsocket break