Esempio n. 1
0
 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()
Esempio n. 2
0
 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
Esempio n. 3
0
    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)
Esempio n. 4
0
    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
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 8
0
    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()
Esempio n. 10
0
 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
Esempio n. 11
0
 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)
Esempio n. 12
0
    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)
Esempio n. 13
0
 def mouseDoubleClickEvent(self, event: QGraphicsSceneMouseEvent) -> None:
     event.accept()
     self.__timer.stop()
     self.__on_double_click()
Esempio n. 14
0
 def mousePressEvent(self, event: QGraphicsSceneMouseEvent) -> None:
     event.accept()
Esempio n. 15
0
 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()