def mousePressEvent(self, mouseEvent): if (mouseEvent.button() != QtCore.Qt.LeftButton): return if self.myMode == self.InsertItem: item = DiagramItem(self.myItemType, self.myItemMenu) item.setBrush(self.myItemColor) self.addItem(item) item.setPos(mouseEvent.scenePos()) self.itemInserted.emit(item) elif self.myMode == self.InsertLine: self.line = QtGui.QGraphicsLineItem(QtCore.QLineF(mouseEvent.scenePos(), mouseEvent.scenePos())) self.line.setPen(QtGui.QPen(self.myLineColor, 2)) self.addItem(self.line) elif self.myMode == self.InsertText: textItem = DiagramTextItem() textItem.setFont(self.myFont) textItem.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction) textItem.setZValue(1000.0) textItem.lostFocus.connect(self.editorLostFocus) textItem.selectedChange.connect(self.itemSelected) self.addItem(textItem) textItem.setDefaultTextColor(self.myTextColor) textItem.setPos(mouseEvent.scenePos()) self.textInserted.emit(textItem) super(DiagramScene, self).mousePressEvent(mouseEvent)
def mousePressEvent(self, event): """ Draw a line if a connection widget is selected and dragged. """ item = self.itemAt(event.scenePos()) node = self.nodeAt(event.scenePos()) modifiers = QtGui.QApplication.keyboardModifiers() # left mouse if event.button() == QtCore.Qt.LeftButton: if modifiers == QtCore.Qt.AltModifier: if item: if self.is_edge(item): if self.splitEdge(item, event.scenePos()): log.info('splitting edge...') else: log.warning('cannot split edge.') elif modifiers == QtCore.Qt.ShiftModifier: if node: if self.is_node(node): if self.popNode(node): log.info('popping node "%s"' % node.dagnode.name) else: log.warning('cannot pop node "%s"' % node.dagnode.name) else: if item: if self.is_connection(item): if item.isOutputConnection(): crect = item.boundingRect() lpen = QtGui.QPen( QtGui.QBrush(QtGui.QColor(*[251, 251, 251])), 1, QtCore.Qt.SolidLine) self.line = QtGui.QGraphicsLineItem( QtCore.QLineF(event.scenePos(), event.scenePos())) self.line.setPen(lpen) self.addItem(self.line) self.update(self.itemsBoundingRect()) # disconnect the edge if this is an input if item.isInputConnection(): # query the edge(s) attached. edges = item.connections.values() if edges: if len(edges) == 1: conn_edge = edges[0] # remove the edge from the connections if conn_edge.disconnect_terminal(item): log.info('disconnecting edge: "%s"' % self.graph.edge_nice_name( *conn_edge.ids)) # todo: call manage? self.graph.remove_edge(*conn_edge.ids) edge_line = conn_edge.getLine() p1 = edge_line.p1() self.line = QtGui.QGraphicsLineItem( QtCore.QLineF( p1, event.scenePos())) self.addItem(self.line) self.update(self.itemsBoundingRect()) if event.button() == QtCore.Qt.RightButton: pass QtWidgets.QGraphicsScene.mousePressEvent(self, event) self.update()