Пример #1
0
    def mouseMoveEvent(self, qevent: QtGui.QMouseEvent) -> None:
        self.lastPoint = qevent.pos()

        if self.active_drag:
            self.active_drag.move(QPoint_to_point(qevent.pos()))

        elif self.active_drag is None and not self.mouse_wheel_emu:
            if self.interactionDelegate is not None:

                pos = QPoint_to_point(qevent.pos())

                # TODO - revisit behaviour?
                potential_actions = []
                for (event_id, modifiers), act in self.id_actions_map.items():
                    if event_id.mouse_triggered():
                        potential_actions.append(act)

                event = MoveEvent(
                    pos,
                    self.viewState.tfV2W(pos),
                    potential_actions)

                self.interactionDelegate.mouseMoveEvent(event)

        self.update()
Пример #2
0
    def mousePressEvent(self, event):
        """Reimplement Qt method"""

        # mouse buttons for forward and backward navigation
        if event.button() == Qt.XButton1:
            self.sig_prev_cursor.emit()
        elif event.button() == Qt.XButton2:
            self.sig_next_cursor.emit()

        if sys.platform.startswith('linux') and event.button() == Qt.MidButton:
            self.calltip_widget.hide()
            self.setFocus()
            event = QMouseEvent(QEvent.MouseButtonPress, event.pos(),
                                Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
            QPlainTextEdit.mousePressEvent(self, event)
            QPlainTextEdit.mouseReleaseEvent(self, event)
            # Send selection text to clipboard to be able to use
            # the paste method and avoid the strange spyder-ide/spyder#1445.
            # NOTE: This issue seems a focusing problem but it
            # seems really hard to track
            mode_clip = QClipboard.Clipboard
            mode_sel = QClipboard.Selection
            text_clip = QApplication.clipboard().text(mode=mode_clip)
            text_sel = QApplication.clipboard().text(mode=mode_sel)
            QApplication.clipboard().setText(text_sel, mode=mode_clip)
            self.paste()
            QApplication.clipboard().setText(text_clip, mode=mode_clip)
        else:
            self.calltip_widget.hide()
            QPlainTextEdit.mousePressEvent(self, event)
Пример #3
0
 def mousePressEvent(self, event):
     if event.button() == Qt.RightButton:
         # Rewrite the mouse event to a left button event so the cursor is
         # moved to the location of the pointer.
         event = QMouseEvent(QEvent.MouseButtonPress, event.pos(),
                             Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
     HintedTextEdit.mousePressEvent(self, event)
 def mouseMoveEvent(self, event: QMouseEvent) -> None:
     """Drag to move the joint."""
     if not self.pressed:
         return
     row = self.get_joint_number()
     if not row > -1:
         return
     mx = (event.x() - self.ox) / self.zoom
     my = (event.y() - self.oy) / -self.zoom
     hv = _ConfigureCanvas.edit_size / 2
     if -hv <= mx <= hv:
         self.pos[row] = (mx, self.pos[row][1])
     else:
         if -hv <= mx:
             x = hv
         else:
             x = -hv
         self.pos[row] = (x, self.pos[row][1])
     if -hv <= my <= hv:
         self.pos[row] = (self.pos[row][0], my)
     else:
         if -hv <= my:
             y = hv
         else:
             y = -hv
         self.pos[row] = (self.pos[row][0], y)
     self.update()
Пример #5
0
    def mousePressEvent(self, event: QMouseEvent) -> None:
        x, y, z = [event.pos().x(), event.pos().y(), 0]
        origin = self.viewer.origin_from_click(x, y, z)
        ray = self.viewer.ray_from_click(x, y, z)

        self.viewer.signal_screen_clicked.emit([x, y, z])
        self.viewer.signal_ray_generated.emit({'origin': origin, 'ray': ray})
 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()
    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)
 def resetModelSelection(self):
     self.__m_lastMouseLeftButton = QMouseEvent(QEvent.Type.None_,
                                                QPointF(-1,
                                                        -1), Qt.LeftButton,
                                                Qt.LeftButton,
                                                Qt.NoModifier)
     self.__m_lastMouseLeftButton.ignore()
     self.update()
Пример #9
0
 def _get_ratio(self, e: QMouseEvent, margin=10):
     frame_margin = 10
     width = self.width() - 2 * frame_margin
     if e.x() < margin or e.x() > self.width() - margin:
         return
     if e.y() < margin or e.y() > self.height() - margin:
         return
     return (e.x() - frame_margin) / width
Пример #10
0
    def mousePressEvent(self, ev: QMouseEvent):
        if ev.button() == Qt.LeftButton:
            self.d.drag_state = DragState.floating_widget
            self.d.floating_widget.start_dragging(
                ev.pos(), self.d.floating_widget.size(), self)
            return

        super().mousePressEvent(ev)
Пример #11
0
    def mousePressEvent(self, event: QMouseEvent) -> None:
        super().mousePressEvent(event)

        x, y, z = [event.pos().x(), event.pos().y(), 1]
        origin = self.viewer.origin_from_click(x, y, z)
        ray = self.viewer.ray_from_click(x, y, z)

        self.viewer.intersect_elements(origin, ray)
 def selectModel(self, x, y):
     self.__m_lastMouseLeftButton = QMouseEvent(QEvent.Type.None_,
                                                QPointF(x,
                                                        y), Qt.LeftButton,
                                                Qt.LeftButton,
                                                Qt.NoModifier)
     self.__m_lastMouseLeftButton.ignore()
     self.update()
Пример #13
0
    def detect_rays(self, event: QMouseEvent) -> None:
        x, y, z = [event.pos().x(), event.pos().y(), 1.0]
        self.rays.append(self.viewer.ray_from_click(x, y, z))
        self.origins.append(self.viewer.origin_from_click(x, y, z))

        if len(self.rays) == 2:
            self.viewer.generate_slice_description(self.origins, self.rays)
            self.origins.clear()
            self.rays.clear()
Пример #14
0
    def mousePressEvent(self, event: QtGui.QMouseEvent) -> None:
        self.lastPoint = event.pos()

        event_id = EventID.from_mouse_event(event)
        modifiers = Modifier.from_qevent(event)

        self.dispatchActionEvent(event.pos(), event_id, modifiers)

        self.update()
Пример #15
0
    def mouseMoveEvent(self, event: QMouseEvent) -> None:
        super().mouseMoveEvent(event)

        # Update end of line
        start = self.viewer.flatline.vertices[0]
        ndc = self.viewer.screen_to_ndc(event.x(), event.y(), 1.0)

        self.viewer.flatline.vertices = [start, ndc]
        self.viewer.makeCurrent()
        self.viewer.flatline.reload()
Пример #16
0
 def mousePressEvent(self, event):
     if event.button() == Qt.RightButton:
         # Rewrite the mouse event to a left button event so the cursor is
         # moved to the location of the pointer.
         event = QMouseEvent(QEvent.MouseButtonPress,
                             event.pos(),
                             Qt.LeftButton,
                             Qt.LeftButton,
                             Qt.NoModifier)
     HintedTextEdit.mousePressEvent(self, event)
Пример #17
0
    def mousePressEvent(self, event: QMouseEvent):
        """
        mousePressEvent

        Parameters
        ----------
        event : QMouseEvent
        """
        super().mousePressEvent(event)
        if event.button() == Qt.LeftButton:
            self._click_pos = self.mapToScene(event.pos())
 def mousePressEvent(self, event: QMouseEvent) -> None:
     """Check if get close to a joint."""
     mx = (event.x() - self.ox) / self.zoom
     my = (event.y() - self.oy) / -self.zoom
     for node, (x, y) in self.pos.items():
         if node in self.same:
             continue
         if hypot(x - mx, y - my) <= 5:
             self.set_joint_number.emit(node)
             self.pressed = True
             break
Пример #19
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)
Пример #20
0
    def mousePressEvent(self, e: QtGui.QMouseEvent):
        opt = QtWidgets.QStyleOptionSpinBox()
        self.initStyleOption(opt)

        if self.style().subControlRect(QtWidgets.QStyle.CC_SpinBox, opt, QtWidgets.QStyle.SC_SpinBoxUp).contains(
                e.pos()):
            self.setValue(self.value() + 1)
            self.valueChanged.emit()
        elif self.style().subControlRect(QtWidgets.QStyle.CC_SpinBox, opt, QtWidgets.QStyle.SC_SpinBoxDown).contains(
                e.pos()):
            self.setValue(self.value() - 1)
            self.valueChanged.emit()
 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
    def mousePressEvent(self, ev: QMouseEvent):
        '''
        Stores mouse position to detect dragging

        Parameters
        ----------
        ev : QMouseEvent
        '''
        if ev.button() == Qt.LeftButton:
            ev.accept()
            self.d.drag_start_mouse_pos = ev.pos()
            return

        super().mousePressEvent(ev)
    def mouseReleaseEvent(self, ev: QMouseEvent):
        '''
        Stores mouse position to detect dragging

        Parameters
        ----------
        ev : QMouseEvent
        '''
        if ev.button() != Qt.LeftButton:
            return super().mouseReleaseEvent(ev)

        logger.debug('DockAreaTabBar.mouseReleaseEvent')
        ev.accept()
        self.d.floating_widget = None
        self.d.drag_start_mouse_pos = QPoint()
Пример #24
0
    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)
Пример #25
0
    def mousePressEvent(self, ev: QMouseEvent):
        '''
        Mousepressevent

        Parameters
        ----------
        ev : QMouseEvent
        '''
        if ev.button() == Qt.LeftButton:
            ev.accept()
            self.d.drag_start_mouse_position = ev.pos()
            self.d.drag_state = DragState.mouse_pressed
            self.clicked.emit()
            return

        super().mousePressEvent(ev)
Пример #26
0
    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()))
Пример #27
0
def test_open_context_menu(qtbot, monkeypatch, caplog):
    """
    Test to ensure the context menu can be displayed when the open_context_menu() method is called.

    Expectations:
    Instead of displaying the context menu, monkeypatch exec()_ to just log the execution, and check to ensure the log
    event is there.

    Parameters
    ----------
    qtbot : fixture
        Window for widget testing
    monkeypatch : fixture
        To override dialog behaviors
    caplog : fixture
        The fixture to capture log outputs
    """
    pydm_label = PyDMLabel()
    qtbot.addWidget(pydm_label)

    caplog.set_level(logging.INFO)

    def mock_exec_(*args):
        logger.info("Context Menu displayed.")

    monkeypatch.setattr(QMenu, "exec_", mock_exec_)

    mouse_event = QMouseEvent(QMouseEvent.MouseButtonRelease,
                              pydm_label.rect().center(), Qt.RightButton,
                              Qt.RightButton, Qt.ShiftModifier)
    pydm_label.open_context_menu(mouse_event)
    assert "Context Menu displayed." in caplog.text
Пример #28
0
def test_editor_rstrip_keypress(
        editorbot, input_text, expected_text, keys, strip_all):
    """
    Test that whitespace is removed when leaving a line.
    """
    qtbot, widget = editorbot
    widget.strip_trailing_spaces_on_modify = strip_all
    widget.set_text(input_text)
    cursor = widget.textCursor()
    cursor.movePosition(QTextCursor.End)
    widget.setTextCursor(cursor)
    for key in keys:
        if isinstance(key, tuple):
            # Mouse event
            button, position = key
            cursor = widget.textCursor()
            cursor.setPosition(position)
            xypos = widget.cursorRect(cursor).center()
            widget.mousePressEvent(QMouseEvent(
                    QEvent.MouseButtonPress, xypos,
                    button, button,
                    Qt.NoModifier))
        else:
            qtbot.keyPress(widget, key)
    assert widget.toPlainText() == expected_text
Пример #29
0
    def mouseReleaseEvent(self, event: QtGui.QMouseEvent) -> None:
        event_id = EventID.from_mouse_event(event)
        modifiers = Modifier.from_qevent(event)

        self.dispatchActionEvent(event.pos(), event_id, modifiers)

        self.update()
Пример #30
0
    def move_tab(self, ev: QMouseEvent):
        '''
        Moves the tab depending on the position in the given mouse event

        Parameters
        ----------
        ev : QMouseEvent
        '''
        ev.accept()
        # left, top, right, bottom = self.public.getContentsMargins()
        move_to_pos = self.public.mapToParent(
            ev.pos()) - self.drag_start_mouse_position
        move_to_pos.setY(0)

        self.public.move(move_to_pos)
        self.public.raise_()
Пример #31
0
 def mouseMoveEvent(self, e: QMouseEvent):
     if self.chosen is None:
         return
     index = self.color_layout.indexOf(self.chosen)
     index2 = int(e.x() / self.width() * self.color_layout.count() + 0.5)
     if index2 != index:
         self.color_layout.insertWidget(index2, self.chosen)
Пример #32
0
 def mousePressEvent(self, event):
     """Reimplement Qt method"""
     if sys.platform.startswith('linux') and event.button() == Qt.MidButton:
         self.calltip_widget.hide()
         self.setFocus()
         event = QMouseEvent(QEvent.MouseButtonPress, event.pos(),
                             Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
         QPlainTextEdit.mousePressEvent(self, event)
         QPlainTextEdit.mouseReleaseEvent(self, event)
         # Send selection text to clipboard to be able to use
         # the paste method and avoid the strange Issue 1445
         # NOTE: This issue seems a focusing problem but it
         # seems really hard to track
         mode_clip = QClipboard.Clipboard
         mode_sel = QClipboard.Selection
         text_clip = QApplication.clipboard().text(mode=mode_clip)
         text_sel = QApplication.clipboard().text(mode=mode_sel)
         QApplication.clipboard().setText(text_sel, mode=mode_clip)
         self.paste()
         QApplication.clipboard().setText(text_clip, mode=mode_clip)
     else:
         self.calltip_widget.hide()
         QPlainTextEdit.mousePressEvent(self, event)