def mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent): event.accept() if not self.__timer.isActive(): self.__timer.start(self.__double_click_interval) else: self.__timer.stop() self.__on_double_click()
def mousePressEvent(self, evt: QGraphicsSceneMouseEvent): if evt.button() == Qt.LeftButton: pos = (evt.scenePos().x(), evt.scenePos().y()) self.relative_pos = (pos[0] - self.x(), pos[1] - self.y()) self.port_clicked.emit(self) elif evt.button() == Qt.RightButton: pass elif evt.button() == Qt.MidButton: pass
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent): """ mouseMoveEvent Parameters ---------- event : QGraphicsSceneMouseEvent """ geom = self._node.geometry state = self._node.state if state.resizing: diff = event.pos() - event.lastPos() w = self._node.model.embedded_widget() if w: self.prepareGeometryChange() old_size = w.size() + QSize(diff.x(), diff.y()) w.setFixedSize(old_size) old_size_f = QSizeF(old_size) self._proxy_widget.setMinimumSize(old_size_f) self._proxy_widget.setMaximumSize(old_size_f) self._proxy_widget.setPos(geom.widget_position) geom.recalculate_size() self.update() self.move_connections() event.accept() else: super().mouseMoveEvent(event) if event.lastPos() != event.pos(): self.move_connections() event.ignore() bounding = self.mapToScene(self.boundingRect()).boundingRect() r = self.scene().sceneRect().united(bounding) self.scene().setSceneRect(r)
def mousePressEvent(self, event: QGraphicsSceneMouseEvent): """ mousePressEvent Parameters ---------- event : QGraphicsSceneMouseEvent """ if self._locked: return # deselect all other items after self one is selected if not self.isSelected() and not (event.modifiers() & Qt.ControlModifier): self._scene.clearSelection() node_geometry = self._node.geometry for port_to_check in (PortType.input, PortType.output): # TODO do not pass sceneTransform port = node_geometry.check_hit_scene_point(port_to_check, event.scenePos(), self.sceneTransform()) if not port: continue connections = port.connections # start dragging existing connection if connections and port_to_check == PortType.input: conn, = connections interaction = NodeConnectionInteraction( self._node, conn, self._scene) interaction.disconnect(port_to_check) elif port_to_check == PortType.output: # initialize new Connection out_policy = port.connection_policy if connections and out_policy == ConnectionPolicy.one: conn, = connections self._scene.delete_connection(conn) # TODO_UPSTREAM: add to FlowScene connection = self._scene.create_connection(port) connection.graphics_object.grabMouse() pos = QPoint(event.pos().x(), event.pos().y()) geom = self._node.geometry state = self._node.state if self._node.model.resizable() and geom.resize_rect.contains(pos): state.resizing = True
def buttonPressEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent, index: int) -> None: # right mouse button opens the mask menu if event.button() == QtCore.Qt.RightButton or index >= len(self.types): # open the menu if it is not open already if not self.mask_handler.mask_edit_window or not self.mask_handler.mask_edit_window.isVisible(): self.mask_handler.mask_edit_window = MaskEditor(self.mask_handler, self.mask_handler.mask_file) self.mask_handler.mask_edit_window.show() else: self.mask_handler.mask_edit_window.raise_() # select this mask type in the menu self.mask_handler.mask_edit_window.setMaskType(self.types[index] if index < len(self.types) else None) # a left click selects this type elif event.button() == QtCore.Qt.LeftButton: # select this mask type self.selectType(index)
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent): drag = QDrag(event.widget()) mime = QMimeData() mime.setText(str(self.id)) drag.setMimeData(mime) # self.setCursor(Qt.ClosedHandCursor) drag.exec_()
def mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent): """ mouseReleaseEvent Parameters ---------- event : QGraphicsSceneMouseEvent """ self.ungrabMouse() event.accept() node = self._scene.locate_node_at(event.scenePos(), self._scene.views()[0].transform()) interaction = NodeConnectionInteraction(node, self._connection, self._scene) if node and interaction.try_connect(): node.reset_reaction_to_connection() if self._connection.requires_port: self._scene.delete_connection(self._connection)
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent) -> None: parent: QGraphicsItem = self.parentItem() center: QPointF = parent.scenePos() pos: QPointF = event.scenePos() dy = pos.y() - center.y() dx = pos.x() - center.x() angle = math.atan2(dy, dx) angle = Angle(rad=angle) self._setAngle(angle) self.events.angle.emit(angle)
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent): """ mouseMoveEvent Parameters ---------- event : QGraphicsSceneMouseEvent """ self.prepareGeometryChange() # view = event.widget() # TODO/BUG: widget is returning QWidget(), not QGraphicsView... view = self._scene.views()[0] node = self._scene.locate_node_at(event.scenePos(), view.transform()) self._connection.interact_with_node(node) state_required = self._connection.required_port if node: node.react_to_possible_connection( state_required, self._connection.data_type(opposite_port(state_required)), event.scenePos() ) # ------------------- offset = event.pos() - event.lastPos() required_port = self._connection.required_port if required_port != PortType.none: self._geometry.move_end_point(required_port, offset) # ------------------- self.update() event.accept()
def mousePressEvent(self, evt: QGraphicsSceneMouseEvent): if evt.button() == Qt.LeftButton: pos = (evt.scenePos().x(), evt.scenePos().y()) self.relative_pos = (pos[0] - self.x(), pos[1] - self.y()) if not evt.modifiers() == Qt.ControlModifier: self.scene().signal_clear_selection.emit() self.scene().select_item(self) self.color = COLOR_SELECTED elif evt.button() == Qt.RightButton: pass elif evt.button() == Qt.MidButton: pass
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent): modifiers = QApplication.queryKeyboardModifiers() if modifiers == Qt.ControlModifier: if self.drag: point = event.pos() move_x = self.drag_start.x() - point.x() move_y = self.drag_start.y() - point.y() self.drag_start = point for key, val in self.appdata.project.maps[ self.name]["boxes"].items(): self.appdata.project.maps[self.name]["boxes"][key] = ( val[0] - move_x, val[1] - move_y) self.mapChanged.emit("dummy") self.update() else: if self.drag: self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.translate(1, 1) super(MapView, self).mouseMoveEvent(event)
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent) -> None: super().mouseMoveEvent(event) if event.buttons() & Qt.LeftButton: scene: QGraphicsScene = self.scene() rect: QRectF = scene.sceneRect() min_x = rect.x() min_y = rect.y() max_x = min_x + rect.width() max_y = min_y + rect.height() pos: QPointF = self.pos() old_x = pos.x() old_y = pos.y() new_x = min(max(old_x, min_x), max_x) new_y = min(max(old_y, min_y), max_y) new_x = int(round(new_x)) new_y = int(round(new_y)) self.setPos(new_x, new_y) self.moved.emit(new_x, new_y)
def mouseDoubleClickEvent(self, event: QGraphicsSceneMouseEvent) -> None: event.accept() self.__timer.stop() self.__on_double_click()
def mousePressEvent(self, event: QGraphicsSceneMouseEvent) -> None: event.accept()
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent) -> None: self.setPos( round_position( QPointF(event.scenePos().x() - self.relative_pos[0], event.scenePos().y() - self.relative_pos[1]))) self.node.refresh_pos()