コード例 #1
0
    def mouseMoveEvent(self, event: QMouseEvent) -> None:
        if self.lastPos is None:
            return

        dx = event.x() - self.lastPos.x()
        dy = event.y() - self.lastPos.y()
        smoothness = max(self.viewer.smoothness, 0.1)

        # viewer.world.setToIdentity()
        if event.buttons() == Qt.LeftButton:
            self.viewer.rotate(alpha=dy / smoothness,
                               beta=0,
                               gamma=dx / smoothness)

        elif event.buttons() == Qt.RightButton:
            self.viewer.rotate(alpha=dy / smoothness,
                               beta=dx / smoothness,
                               gamma=0)

        elif event.buttons() == Qt.MiddleButton:
            off_center = self.viewer.off_center[2]
            distance_x = off_center / self.viewer.width()
            distance_y = off_center / self.viewer.height()

            self.viewer.translate(x=-distance_x * dx, y=distance_y * dy, z=0)

        self.lastPos = QPoint(event.pos())
コード例 #2
0
 def mouseMoveEvent(self, e: QMouseEvent):
     if e.buttons() & (Qt.RightButton | Qt.LeftButton):
         print("mouseMoveEvent in Item...")
         self.__m_lastMouseMove = self.__cloneMouseEvent(e)
         self.__m_lastMouseMove.ignore()
         e.accept()
         self.update()
コード例 #3
0
    def mouseMoveEvent(self, ev: QMouseEvent):
        '''
        Starts floating the complete docking area including all dock widgets,
        if it is not the last dock area in a floating widget

        Parameters
        ----------
        ev : QMouseEvent
        '''
        super().mouseMoveEvent(ev)
        if ev.buttons() != Qt.LeftButton:
            return
        if self.d.floating_widget:
            self.d.floating_widget.move_floating()
            return

        # If this is the last dock area in a dock container it does not make
        # sense to move it to a new floating widget and leave this one empty
        container = self.d.dock_area.dock_container()
        if container.is_floating() and container.visible_dock_area_count(
        ) == 1:
            return

        drag_distance = (self.d.drag_start_mouse_pos -
                         ev.pos()).manhattanLength()
        if drag_distance >= start_drag_distance():
            logger.debug('DockAreaTabBar.startFloating')
            self.start_floating(self.d.drag_start_mouse_pos)
            overlay = self.d.dock_area.dock_manager().container_overlay()
            overlay.set_allowed_areas(DockWidgetArea.outer_dock_areas)
コード例 #4
0
 def mouseMoveEvent(self, ev: QMouseEvent):
     if not (ev.buttons()
             & Qt.LeftButton) or self.d.drag_state == DragState.inactive:
         self.d.drag_state = DragState.inactive
     elif self.d.drag_state == DragState.floating_widget:
         # Move floating window
         self.d.floating_widget.move_floating()
     super().mouseMoveEvent(ev)
コード例 #5
0
    def mousePressEvent(self, event: QMouseEvent) -> None:
        super().mousePressEvent(event)

        if event.buttons() == Qt.LeftButton:
            self.detect_rays(event)
        else:
            self.origins.clear()
            self.rays.clear()
コード例 #6
0
 def __cloneMouseEvent(self, e: QMouseEvent):
     event_type = e.type()
     local_pos = e.localPos()
     button = e.button()
     buttons = e.buttons()
     modifiers = e.modifiers()
     clone = QMouseEvent(event_type, local_pos, button, buttons, modifiers)
     clone.ignore()
     return clone
コード例 #7
0
ファイル: dicom_widget.py プロジェクト: achouman34/capstone
    def mouseMoveEvent(self, event: QtGui.QMouseEvent):
        self.window.mouse_x = event.x()
        self.window.mouse_y = event.y()
        self.window.update_coordinates()

        if event.buttons() == QtCore.Qt.LeftButton:
            self.window_width += event.y() - self.last_move_y
            self.window_center += event.x() - self.last_move_x

            self.last_move_x = event.x()
            self.last_move_y = event.y()
コード例 #8
0
    def mouseMoveEvent(self, event: QMouseEvent):
        if event.x() > self.width() - 20:
            QApplication.setOverrideCursor(Qt.SplitHCursor)
        else:
            QApplication.setOverrideCursor(Qt.ArrowCursor)
        if self.last_point is None or not (event.buttons() & Qt.LeftButton):
            return
        new_width = event.x() + 10
        new_width = max(new_width, 150)
        new_width = min(new_width, 600)

        self.setMinimumWidth(new_width)
コード例 #9
0
ファイル: display_panel.py プロジェクト: jonmart0304/PALMS
 def mouseMoveEvent(self, event: QtGui.QMouseEvent):
     if event.buttons() != QtCore.Qt.LeftButton:
         event.ignore()
         return
     if (sub(event.pos(), self.dragStartPos)
         ).manhattanLength() < QtWidgets.QApplication.startDragDistance():
         event.ignore()
         return
     self.move_me.emit(self)
     mime_data = QtCore.QMimeData()
     mime_data.setObjectName('frame')
     drag = QtGui.QDrag(self)
     drag.setMimeData(mime_data)
     drop_action = drag.exec_(QtCore.Qt.MoveAction)
コード例 #10
0
ファイル: dock_widget_tab.py プロジェクト: paunet/qtpydocking
    def mouseMoveEvent(self, ev: QMouseEvent):
        '''
        Mousemoveevent

        Parameters
        ----------
        ev : QMouseEvent
        '''
        if (not (ev.buttons() & Qt.LeftButton)
                or self.d.is_dragging_state(DragState.inactive)):
            self.d.drag_state = DragState.inactive
            return super().mouseMoveEvent(ev)

        # move floating window
        if self.d.is_dragging_state(DragState.floating_widget):
            self.d.floating_widget.move_floating()
            return super().mouseMoveEvent(ev)

        # move tab
        if self.d.is_dragging_state(DragState.tab):
            # Moving the tab is always allowed because it does not mean moving
            # the dock widget around
            self.d.move_tab(ev)

        # Maybe a fixed drag distance is better here ?
        drag_distance_y = abs(self.d.drag_start_mouse_position.y() -
                              ev.pos().y())
        start_dist = start_drag_distance()
        if drag_distance_y >= start_dist:
            # If this is the last dock area in a dock container with only
            # one single dock widget it does not make  sense to move it to a new
            # floating widget and leave this one empty
            if (self.d.dock_area.dock_container().is_floating()
                    and self.d.dock_area.open_dock_widgets_count() == 1
                    and self.d.dock_area.dock_container(
                    ).visible_dock_area_count() == 1):
                return

            # Floating is only allowed for widgets that are movable
            if self.d.floatable:
                self.d.start_floating()
        elif (self.d.dock_area.open_dock_widgets_count() > 1 and
              (ev.pos() - self.d.drag_start_mouse_position).manhattanLength()
              >= start_dist):
            # Wait a few pixels before start moving
            self.d.drag_state = DragState.tab
        else:
            return super().mouseMoveEvent(ev)
コード例 #11
0
ファイル: flow_view.py プロジェクト: ShinAeon/qtpynodeeditor
    def mouseMoveEvent(self, event: QMouseEvent):
        """
        mouseMoveEvent

        Parameters
        ----------
        event : QMouseEvent
        """
        super().mouseMoveEvent(event)
        if self._scene.mouseGrabberItem() is None and event.buttons(
        ) == Qt.LeftButton:
            # Make sure shift is not being pressed
            if not (event.modifiers() & Qt.ShiftModifier):
                difference = self._click_pos - self.mapToScene(event.pos())
                self.setSceneRect(self.sceneRect().translated(
                    difference.x(), difference.y()))
コード例 #12
0
    def mouseDoubleClickEvent(self, event: QMouseEvent) -> None:
        """Mouse double click.

        + Middle button: Zoom to fit.
        + Left button: Edit point function.
        """
        button = event.buttons()
        if button == Qt.MidButton:
            self.zoom_to_fit()
        elif button == Qt.LeftButton and (not self.show_target_path):
            self.selector.x, self.selector.y = self.__mouse_pos(event)
            self.__select_func()
            if self.selector.selection_rect:
                self.selected.emit(tuple(self.selector.selection_rect[:1]), True)
                if self.free_move == FreeMode.NoFreeMove:
                    self.doubleclick_edit.emit(self.selector.selection_rect[0])
コード例 #13
0
    def mousePressEvent(self, event: QMouseEvent) -> None:
        """Press event.

        Middle button: Move canvas of view.
        Left button: Select the point (only first point will be catch).
        """
        self.selector.x, self.selector.y = self.__mouse_pos(event)
        button = event.buttons()
        if button == Qt.MiddleButton:
            self.selector.middle_dragged = True
            self.browse_tracking.emit(self.selector.x, self.selector.y)
        elif button == Qt.LeftButton:
            self.selector.left_dragged = True
            self.__select_func()
            if self.selector.selection_rect:
                self.selected.emit(tuple(self.selector.selection_rect[:1]), True)
コード例 #14
0
    def mousePressEvent(self, event: QMouseEvent) -> None:
        super().mousePressEvent(event)

        # Setup NDC vertices
        ndc = self.viewer.screen_to_ndc(event.x(), event.y(), 1.0)
        self.viewer.flatline.vertices = [ndc, ndc]
        self.viewer.makeCurrent()
        self.viewer.flatline.reload()

        # Only show line if required
        if len(self.origins) == 0:
            self.viewer.flatline.show()
        else:
            self.viewer.flatline.hide()

        # Discard points if not left-click
        if event.buttons() == Qt.LeftButton:
            self.detect_rays(event)
            self.viewer.setMouseTracking(True)
        else:
            self.origins.clear()
            self.rays.clear()
            self.viewer.setMouseTracking(False)
コード例 #15
0
def ConvertMouseEventToShortcut(event: QG.QMouseEvent):

    key = None

    shortcut_press_type = SHORTCUT_PRESS_TYPE_PRESS

    if event.type() == QC.QEvent.MouseButtonPress:

        for (qt_button, hydrus_button
             ) in qt_mouse_buttons_to_hydrus_mouse_buttons.items():

            if event.buttons() & qt_button:

                key = hydrus_button

                break

    elif event.type() in (QC.QEvent.MouseButtonDblClick,
                          QC.QEvent.MouseButtonRelease):

        if event.type() == QC.QEvent.MouseButtonRelease:

            shortcut_press_type = SHORTCUT_PRESS_TYPE_RELEASE

        elif event.type() == QC.QEvent.MouseButtonDblClick:

            shortcut_press_type = SHORTCUT_PRESS_TYPE_DOUBLE_CLICK

        for (qt_button, hydrus_button
             ) in qt_mouse_buttons_to_hydrus_mouse_buttons.items():

            if event.button() == qt_button:

                key = hydrus_button

                break

    elif event.type() == QC.QEvent.Wheel:

        if event.angleDelta().y() > 0:

            key = SHORTCUT_MOUSE_SCROLL_UP

        elif event.angleDelta().y() < 0:

            key = SHORTCUT_MOUSE_SCROLL_DOWN

    if key is not None:

        modifiers = []

        if event.modifiers() & QC.Qt.AltModifier:

            modifiers.append(SHORTCUT_MODIFIER_ALT)

        if event.modifiers() & QC.Qt.ControlModifier:

            modifiers.append(SHORTCUT_MODIFIER_CTRL)

        if event.modifiers() & QC.Qt.ShiftModifier:

            modifiers.append(SHORTCUT_MODIFIER_SHIFT)

        if event.modifiers() & QC.Qt.GroupSwitchModifier:

            modifiers.append(SHORTCUT_MODIFIER_GROUP_SWITCH)

        if event.modifiers() & QC.Qt.KeypadModifier:

            modifiers.append(SHORTCUT_MODIFIER_KEYPAD)

        shortcut = Shortcut(SHORTCUT_TYPE_MOUSE, key, shortcut_press_type,
                            modifiers)

        if HG.gui_report_mode:

            HydrusData.ShowText('mouse event caught: ' + repr(shortcut))

        return shortcut

    return None