コード例 #1
0
    def mouseMoveEvent(self, event):
        """
        Must override mouseMoveEvent of QGraphicsView to allow
        ScrollHandDrag due to the fact that events are intercepted
        breaks this feature.
        """
        if self._transform_enable:
            if self.dragMode() == self._yes_drag:
                # Add stuff to handle the pan event
                posf = event.localPos()
                xf = posf.x()
                yf = posf.y()

                factor = self.transform().m11()

                transform = self.scene_root_item.transform()

                transform.translate((xf - self._x0) / factor,
                                    (yf - self._y0) / factor)
                self.scene_root_item.setTransform(transform)
                self._x0 = xf
                self._y0 = yf
            elif self._dolly_zoom_enable:
                self.dollyZoom(event)
        # adding this allows events to be passed to items underneath
        QGraphicsView.mouseMoveEvent(self, event)
コード例 #2
0
    def mouseMoveEvent(self, event):

        if self.hasImage():

            # Make sure that the element has focus when the mouse moves,
            # otherwise keyboard shortcuts will not work
            if not self.hasFocus():
                self.setFocus()

            self.update_cursor_location(event)

            # Support for panning
            if event.buttons() == Qt.MiddleButton:
                offset = self.__prevMousePos - event.pos()
                self.__prevMousePos = event.pos()
                self.verticalScrollBar().setValue(
                    self.verticalScrollBar().value() + offset.y())
                self.horizontalScrollBar().setValue(
                    self.horizontalScrollBar().value() + offset.x())

            # Filling in the markers
            if event.buttons() == Qt.LeftButton:
                self.drawMarkerLine(event)

            # Store cursor location separately; needed for certain operations (like fill)
            self.lastCursorLocation = self.mapToScene(event.pos())

        QGraphicsView.mouseMoveEvent(self, event)
コード例 #3
0
    def mouseMoveEvent(self, event: QMouseEvent) -> None:
        """
        :param event:
        :return:
        """
        if not self._is_move:
            flag = True
            if self.gadget == ToolsToolBar.PolygonTool and self.is_creating_polygon:
                try:
                    path = self.counter_polygon_path(event.pos())
                    self.border.set_item_path_by_path(path=path)
                    event.accept()
                    flag = False
                except Exception as e:
                    print(e)

            elif self.gadget == ToolsToolBar.EraserTool:
                self.eraser_action(event.pos())
                event.accept()
                return

            elif self.is_mouse_pressed:
                self.is_dragging = True
                self.has_moving_mouse = True
                self.dragging_signal.emit(event)
                event.accept()
                flag = False

            if flag:
                QGraphicsView.mouseMoveEvent(self, event)
        else:
            GraphicsView.mouseMoveEvent(self, event)
コード例 #4
0
ファイル: widget.py プロジェクト: wanghai1988/pyqimageview
    def mouseMoveEvent(self, event):
        QGraphicsView.mouseMoveEvent(self, event)
        #update selection display
        if self.rubberBand is not None:
            self.rubberBand.setGeometry(
                QRect(self.start_drag, event.pos()).normalized())

        if self.panning:
            scene_end_drag = self.mapToScene(event.pos())
            end_drag = event.pos()
            pan_vector = end_drag - self.start_drag
            scene2view = self.transform()
            #skip shear
            sx = scene2view.m11()
            sy = scene2view.m22()
            dx = scene2view.dx()
            dy = scene2view.dy()
            scene_pan_vector = QPointF(pan_vector.x() / sx,
                                       pan_vector.y() / sy)
            roi = self.current_scene_ROI
            top_left = roi.topLeft()
            new_top_left = top_left - scene_pan_vector
            scene_rect = self.sceneRect()
            new_top_left.setX(
                clamp(new_top_left.x(), scene_rect.left(), scene_rect.right()))
            new_top_left.setY(
                clamp(new_top_left.y(), scene_rect.top(), scene_rect.bottom()))
            nroi = QRectF(new_top_left, roi.size())
            self.fitInView(nroi, Qt.KeepAspectRatio)
            self.start_drag = end_drag
        self.update()
コード例 #5
0
ファイル: QtImageViewerPlus.py プロジェクト: WeiHao-19/TagLab
    def mouseMoveEvent(self, event):

        QGraphicsView.mouseMoveEvent(self, event)

        scenePos = self.mapToScene(event.pos())

        if self.showCrossair == True:
            self.mouseCoords = scenePos
            self.scene.invalidate(self.sceneRect(),
                                  QGraphicsScene.ForegroundLayer)

        if event.buttons() == Qt.LeftButton:
            (x, y) = self.clipScenePos(scenePos)

            if self.dragSelectionStart:
                start = self.dragSelectionStart
                if not self.dragSelectionRect:
                    self.dragSelectionRect = self.scene.addRect(
                        start[0], start[1], x - start[0], y - start[1],
                        self.dragSelectionStyle)
                self.dragSelectionRect.setRect(start[0], start[1],
                                               x - start[0], y - start[1])
                return

            if Qt.ControlModifier & QApplication.queryKeyboardModifiers():
                return

            self.tools.mouseMove(x, y)
コード例 #6
0
    def mouseMoveEvent(self, event):

        if self.event and self.click:
            self.selection = True

        event_pos = self.mapToScene(event.pos())
        if self.selection and self.click:
            if self.event_origin:
                self.statusChanged.emit(self.event_origin.x(),
                                        self.event_origin.y(), event_pos.x(),
                                        event_pos.y())

                if event_pos.x() < 0:
                    event_pos.setX(0)
                elif event_pos.x() > self.scene_size[0] - 1:
                    event_pos.setX(self.scene_size[0] - 1)
                if event_pos.y() < 0:
                    event_pos.setY(0)
                elif event_pos.y() > self.scene_size[1] - 1:
                    event_pos.setY(self.scene_size[1] - 1)
                self.ROI_item.setRect(
                    QRectF(self.event_origin, event_pos).normalized())
            else:
                pass
        else:
            QGraphicsView.mouseMoveEvent(self, event)
コード例 #7
0
ファイル: view_scene.py プロジェクト: atomeyang/HandyView
    def mouseMoveEvent(self, event):
        """Only works when mouse button is pressed.
        TODO: how to work when there is no mouse button is pressed.
        """
        # Show mouse position and color when mouse move with button pressed
        if self.show_info:
            scene_pos = self.mapToScene(event.pos())
            x_scene, y_scene = scene_pos.x(), scene_pos.y()
            self.show_mouse_position(x_scene, y_scene)
            self.show_mouse_color(x_scene, y_scene)

        modifiers = QApplication.keyboardModifiers()
        if modifiers == QtCore.Qt.ShiftModifier:
            if event.buttons() == QtCore.Qt.LeftButton:
                # Show selection rect position
                if self.show_info:
                    ori_scene_pos = self.mapToScene(self.rubber_band_origin)
                    ori_x_scene, ori_y_scene = ori_scene_pos.x(
                    ), ori_scene_pos.y()
                    self.show_rect_position(ori_x_scene, ori_y_scene, x_scene,
                                            y_scene)
                # Show rubber band
                if self.rubber_band_changable:
                    self.rubber_band.setGeometry(
                        QRect(self.rubber_band_origin,
                              event.pos()).normalized())
        else:
            QGraphicsView.mouseMoveEvent(self, event)
コード例 #8
0
    def mouseMoveEvent(self, event):
        """
        Must reimplement mouseMoveEvent of QGraphicsView to allow
        ScrollHandDrag due to the fact that events are intercepted
        breaks this feature.
        """
        if self._transform_enable == True:
            if self.dragMode() == self._yes_drag:
                # Add stuff to handle the pan event
                posf = event.localPos()
                xf = posf.x()
                yf = posf.y()

                factor = self.transform().m11()

                transform = self.scene_root_item.transform()
                transform.translate((xf - self._x0)/factor,\
                                             (yf - self._y0)/factor)
                self.scene_root_item.setTransform(transform)

                self._x0 = xf
                self._y0 = yf
            elif self._dolly_zoom_enable == True:
                self.dollyZoom(event)
        # adding this allows events to be passed to items underneath
        QGraphicsView.mouseMoveEvent(self, event)
コード例 #9
0
 def mouseMoveEvent(self, event):
     if self.rband_state == "set-endpoint":
         self.rband.setGeometry(
             QRect(self.rband_origin, event.pos()).normalized())
         self.rband_endpoint = event.pos()
     elif self.rband_state == "set-origin":
         self.rband.setGeometry(
             QRect(event.pos(), self.rband_endpoint).normalized())
         self.rband_origin = event.pos()
     elif self.rband_state == "move":
         old_pos = self.rband.geometry()
         new_pos = old_pos.translated(event.pos() - self.rband_previous_pos)
         trace(0)
         self.rband.setGeometry(new_pos)
         self.rband_previous_pos = event.pos()
     elif self.rband_state == "drawn":
         if ImageView.close_enough(self.rband_origin, event.pos()):
             self.rband_corner = "nw"
             self.setCursor(QCursor(Qt.SizeFDiagCursor))
         elif ImageView.close_enough(self.rband_endpoint, event.pos()):
             self.rband_corner = "se"
             self.setCursor(QCursor(Qt.SizeFDiagCursor))
         elif self.rband.geometry().contains(event.pos()):
             self.rband_corner = "inside"
             self.setCursor(QCursor(Qt.OpenHandCursor))
         else:
             self.rband_corner = None
             self.setCursor(QCursor(Qt.ArrowCursor))
     QGraphicsView.mouseMoveEvent(self, event)
コード例 #10
0
ファイル: view.py プロジェクト: oasys-kit/orange-canvas
    def mouseMoveEvent(self, event):
        if event.buttons() & Qt.LeftButton:
            if not self.__autoScrollTimer.isActive() and \
                    self.__shouldAutoScroll(event.pos()):
                self.__startAutoScroll()

        QGraphicsView.mouseMoveEvent(self, event)
コード例 #11
0
    def mouseMoveEvent(self, event):

        QGraphicsView.mouseMoveEvent(self, event)

        scenePos = self.mapToScene(event.pos())

        if event.buttons() == Qt.LeftButton:
            clippedCoords = self.clipScenePos(scenePos)
            self.mouseMoveLeftPressed.emit(clippedCoords[0], clippedCoords[1])
コード例 #12
0
 def mouseMoveEvent(self, event):
     """Overload QGraphicsView method."""
     if event.buttons() == Qt.MiddleButton:
         # panning
         delta = event.pos() - self._previous_position
         self.translate(delta.x(), delta.y())
         self._previous_position = event.pos()
     # forwarding
     QGraphicsView.mouseMoveEvent(self, event)
コード例 #13
0
 def mouseMoveEvent(self, mouse_event):
     if self._last_pan_point is not None:
         delta_scene = self.mapToScene(mouse_event.pos()) - self.mapToScene(
             self._last_pan_point)
         if not delta_scene.isNull():
             self.centerOn(self._last_scene_center - delta_scene)
             self._last_scene_center -= delta_scene
         self._last_pan_point = mouse_event.pos()
     QGraphicsView.mouseMoveEvent(self, mouse_event)
コード例 #14
0
    def mouseMoveEvent(self, QMouseEvent):
        scenePos = self.mapToScene(QMouseEvent.pos())
        row = int(scenePos.y())
        column = int(scenePos.x())
        # print("Clicked on image pixel (row=" + str(row) + ", column=" + str(column) + ")")
        if self.lbtnpress:
            self.Moustmove_leftMouseButtonClicked.emit(int(scenePos.x()),
                                                       int(scenePos.y()))

        QGraphicsView.mouseMoveEvent(self, QMouseEvent)
コード例 #15
0
    def mouseMoveEvent(self, event):
        """ Hover event to signal position and gray level.
		"""
        if self.npImage is not None:

            # To fix a bug while pan:
            self.scene.update()

            # Get position in image space (watch what is x and what is y!):
            scenePos = self.mapToScene(event.pos())
            x = np.floor(scenePos.x()).astype(np.int32)
            y = np.floor(scenePos.y()).astype(np.int32)

            # Check boundaries:
            if ((x >= 0) and (x <= (self.npImage.shape[1] - 1)) and \
             (y >= 0) and (y <= (self.npImage.shape[0] - 1))):

                # Emit signal with coordinates and gray value:
                self.mouseHoverEvent.emit(x, y, self.npImage[y, x],
                                          self.imageFormat)
            else:
                # Emit a "out-of-border" signal:
                self.mouseHoverEvent.emit(-1, -1, -1, 'None')

            # This code is called also after a mouse wheel event:
            if not isinstance(event, QWheelEvent):
                QGraphicsView.mouseMoveEvent(self, event)

            if (self.__rightMouseDown) and (self.__WLDownPos is not None):

                # Apply window/level correction:
                winWidth = self.winMax - self.winMin
                winOffset = self.winMin + winWidth / 2

                # To be adapted:
                deltaX = (self.__WLDownPos.x() -
                          event.pos().x()) * winWidth / 255.0
                deltaY = (self.__WLDownPos.y() -
                          event.pos().y()) * winWidth / 255.0

                winOffset -= deltaY
                winWidth -= deltaX

                self.winMax = winOffset + winWidth / 2
                self.winMin = winOffset - winWidth / 2

                # Reset conditions:
                if (self.winMin >= self.winMax):
                    self.winMin = np.amin(self.npImage.astype(np.float32))
                if (self.winMax <= self.winMin):
                    self.winMax = np.amax(self.npImage.astype(np.float32))

                self._updateImageLUT()

                self.__WLDownPos = event.pos()
コード例 #16
0
    def mouseMoveEvent(self, event):
        scenePos = self.mapToScene(event.pos())
        self.sX = int(round(scenePos.x()))
        self.sY = int(round(scenePos.y()))
        self.mainWindow.CursorXY.setText('x:%4d y:%4d ' %
                                         (self.sX, GlobalData.imgHeight -
                                          self.sY))  ##put coordinate as text

        QGraphicsView.mouseMoveEvent(self, event)
        if self.isPanning is True and self.mouseLeftPress is True:
            self.GetFrame()
            self.YellowBox = self.mainWindow.qtSceneViewer.DrawViewBox(
                self.ViewRectX, self.ViewRectY, self.ViewRectWidth,
                self.ViewRectHeight)
コード例 #17
0
    def mouseMoveEvent(self, event):

        QGraphicsView.mouseMoveEvent(self, event)

        scenePos = self.mapToScene(event.pos())

        if event.buttons() == Qt.LeftButton:
            clippedCoords = self.clipScenePos(scenePos)
            self.mouseMoveLeftPressed.emit(clippedCoords[0], clippedCoords[1])

        if self.showCrossair == True:
            self.mouseCoords = scenePos
            self.scene.invalidate(self.sceneRect(),
                                  QGraphicsScene.ForegroundLayer)
コード例 #18
0
 def mouseMoveEvent(self, event):
     if self._pan_from == None:
         QGraphicsView.mouseMoveEvent(self, event)
     else:
         if not self.scene().prevent_mouse_release_deselect:  # yet
             self.setCursor(Qt.ClosedHandCursor)
             self.scene().prevent_mouse_release_deselect = True
         self.horizontalScrollBar().setValue(
             self.horizontalScrollBar().value() - event.x() +
             self._pan_from.x())
         self.verticalScrollBar().setValue(
             self.verticalScrollBar().value() - event.y() +
             self._pan_from.y())
         self._pan_from = event.pos()
         event.accept()
コード例 #19
0
    def mouseMoveEvent(self, event):
        if self.changeRubberBand:
            # update rubber
            self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
            self.rubberBandScenePos = self.mapToScene(self.rubberBand.geometry())
        if event.buttons() & Qt.MidButton:
            # drag image
            offset = self.dragPrevMousePos - event.pos()
            self.dragPrevMousePos = event.pos()

            self.verticalScrollBar().setValue(self.verticalScrollBar().value() + offset.y())
            self.horizontalScrollBar().setValue(self.horizontalScrollBar().value() + offset.x())
            self.updateRubberBandDisplay()

        QGraphicsView.mouseMoveEvent(self, event)
コード例 #20
0
    def mouseMoveEvent(self, event):
        QGraphicsView.mouseMoveEvent(self, event)

        fullState = self.parentView.uiState.parent()
        scenePos = self.mapToScene(event.pos())
        zAt = zStackForUiState(self.parentView.uiState) * 1.0
        location = (scenePos.x(), scenePos.y(), zAt)

        circleOver = None
        if self.parentView.uiState.parent().inPunctaMode():
            circleOver = self.parentView.punctaOnPixel(location)
        else:
            circleOver = self.parentView.pointOnPixel(location)
        self.viewport().setCursor(
            Qt.OpenHandCursor if circleOver is not None else Qt.ArrowCursor)
コード例 #21
0
ファイル: GWView.py プロジェクト: slac-lcls/lcls2
    def mouseMoveEvent(self, e):
        """ Move CENTER othervise zoom at scroll works incorrectly.
        """
        QGraphicsView.mouseMoveEvent(self, e)
        if self._scale_ctl == 0: return
        if self.click_pos is None: return

        dp = e.pos() - self.click_pos
        dx = dp.x() / self.transform().m11() if self._scale_ctl & 1 else 0
        dy = dp.y() / self.transform().m22() if self._scale_ctl & 2 else 0

        sc = self.scene()
        rs = sc.sceneRect()
        rs.moveCenter(self.rs_center - QPointF(dx, dy))
        sc.setSceneRect(rs)
コード例 #22
0
ファイル: FWView.py プロジェクト: slac-lcls/lcls2
    def mouseMoveEvent(self, e):
        QGraphicsView.mouseMoveEvent(self, e)
        #logger.debug('FWView.mouseMoveEvent, at point: %s' % str(e.pos()))
        self.mouse_move_event.emit(e)

        if self._scale_ctl==0: return
        if self.pos_click is None: return

        dp = e.pos() - self.pos_click
        dx = dp.x() / self.transform().m11() if self._scale_ctl & 1 else 0
        dy = dp.y() / self.transform().m22() if self._scale_ctl & 2 else 0
        sc = self.scene()
        rs = sc.sceneRect()
        rs.moveCenter(self.rs_center - QPointF(dx, dy))
        sc.setSceneRect(rs)

        if self.signal_fast: self.emit_signal_if_scene_rect_changed()
コード例 #23
0
ファイル: FWView.py プロジェクト: monarin/lcls2
    def mouseMoveEvent(self, e):
        QGraphicsView.mouseMoveEvent(self, e)
        #print('FWView.mouseMoveEvent, at point: ', e.pos())
        #self.emit(QtCore.SIGNAL('mouse_move_event(QMouseEvent)'), e)
        self.mouse_move_event.emit(e)

        if self._scale_ctl == 0: return
        if self.pos_click is None: return

        dp = e.pos() - self.pos_click
        dx = dp.x() * self.invscalex if self._scale_ctl & 1 else 0
        dy = dp.y() * self.invscaley if self._scale_ctl & 2 else 0
        dpsc = QPointF(dx, dy)

        sc = self.scene()
        rs = sc.sceneRect()
        rs.moveCenter(self.rs_center - dpsc)
        sc.setSceneRect(rs)
コード例 #24
0
 def mouseMoveEvent(self, event):
     if self._pan:
         self.horizontalScrollBar().setValue(
             self.horizontalScrollBar().value() -
             (event.x() - self._panStartX))
         self.verticalScrollBar().setValue(
             self.verticalScrollBar().value() -
             (event.y() - self._panStartY))
         self._panStartX = event.x()
         self._panStartY = event.y()
         event.accept()
     else:
         return QGraphicsView.mouseMoveEvent(self, event)
コード例 #25
0
    def mouseMoveEvent(self, mouseEvent):
        if self._panning:
            delta = self.mapToScene(self._lastPanPoint) - self.mapToScene(
                mouseEvent.pos())
            self._lastPanPoint = mouseEvent.pos()

            self.center += delta

        # If cutting connections
        elif self._cutStartPosition is not None:
            start_scene_pos = self._cutStartPosition
            current_scene_pos = self.mapToScene(mouseEvent.pos())

            path = QPainterPath()
            path.moveTo(start_scene_pos)

            path.lineTo(current_scene_pos)
            self._slicePath = path

            # Set new visual path
            self._drawPathItem.setPath(path)

        else:
            QGraphicsView.mouseMoveEvent(self, mouseEvent)
コード例 #26
0
ファイル: mapcanvas.py プロジェクト: rm-you/nparse
 def mouseMoveEvent(self, event):
     self._mouse_location.set_value(self.mapToScene(event.pos()),
                                    self._scale, self)
     QGraphicsView.mouseMoveEvent(self, event)
コード例 #27
0
 def accept_mouseMove(self, event):
     if self.hasImage():
         QGraphicsView.mouseMoveEvent(self, event)
コード例 #28
0
 def mouseMoveEvent(self, event):
     if self.hasImage():
         self.mouseButtonMove.emit(event)  #发送鼠标左键移动信号
     QGraphicsView.mouseMoveEvent(self, event)
コード例 #29
0
ファイル: ocrwidget.py プロジェクト: correosdelbosque/lector
    def mouseMoveEvent(self, event):
        sp = self.mapToScene(event.pos())

        if self.bResizing: #if we're resizing an area
            item = self.resizingArea
            r = item.rect()
            pos = item.pos()

            newWidth = r.width()
            newHeight = r.height()
            newX, newY = pos.x(), pos.y()

            if self.resizingEdge & 1: #bit mask: top is moving
                #max ensures that y >= 0
                newY = max(0, self.resizingAreaPos.y() + sp.y() - \
                            self.resizingStartingPos.y())
                newHeight = self.resizingAreaRect.height() + \
                            self.resizingAreaPos.y() - newY

            elif self.resizingEdge & 2: #bit mask: bottom is moving
                newHeight = self.resizingAreaRect.height() + sp.y() - \
                            self.resizingStartingPos.y()

                #force area to be inside the scene
                if newY + newHeight > self.scene().height():
                    newHeight = self.scene().height() - newY

            if self.resizingEdge & 4: #bit mask: right is moving
                newX = max(0, self.resizingAreaPos.x() + sp.x() - \
                            self.resizingStartingPos.x())
                newWidth = self.resizingAreaRect.width() + \
                            self.resizingAreaPos.x() - newX
            elif self.resizingEdge & 8: #bit mask: right is moving
                newWidth = self.resizingAreaRect.width() + sp.x() - \
                            self.resizingStartingPos.x()

                #force area to be inside the scene
                if newX + newWidth > self.scene().width():
                    newWidth = self.scene().width() - newX

            #check that height >= OcrArea.resizeBorder
            if newHeight < 2*OcrArea.resizeBorder:
                newHeight = r.height()
                newY = pos.y()
            #check that width >= OcrArea.resizeBorder
            if newWidth < 2*OcrArea.resizeBorder:
                newWidth = r.width()
                newX = pos.x()

            item.setRect(0, 0, newWidth, newHeight)
            item.setPos(newX, newY)

        else: # if not resizing
            # grabbing the position of the widget
            sp = self.mapToScene(event.pos())
            ret = self.scene().areaAt(sp)

            edge = ret % 100
            iArea = ret / 100
            cursors = {0:Qt.SizeAllCursor,
                1: Qt.SizeVerCursor,
                2: Qt.SizeVerCursor,
                4: Qt.SizeHorCursor,
                5: Qt.SizeFDiagCursor,
                6: Qt.SizeBDiagCursor,
                8: Qt.SizeHorCursor,
                9: Qt.SizeBDiagCursor,
                10: Qt.SizeFDiagCursor}

            if iArea:
                self.setCursor(cursors[edge])
            else: # mouse not over an area
                self.setCursor(Qt.CrossCursor)

        QGraphicsView.mouseMoveEvent(self, event)
コード例 #30
0
 def inputGraphicsViewMouseMoveEvent(self, event):
     if event.modifiers() == QtCore.Qt.ShiftModifier:
         # Comment out to permit the view for sending the event to the child scene.
         QGraphicsView.mouseMoveEvent(self.inputGraphicsView, event)
     elif self.drawingFlag == True:
         pass
コード例 #31
0
 def mouseMoveEvent(self, event):
     QGraphicsView.mouseMoveEvent(self, event)
     scenePos = self.mapToScene(event.pos())
     self.mouseMoveLoc.emit(scenePos.x(), scenePos.y())
コード例 #32
0
 def mouseMoveEvent(self, e: QtGui.QMouseEvent) -> None:
     x = e.localPos().x()
     if e.localPos().x() > self.width():
         print(1)
     e.localPos().x()
     QGraphicsView.mouseMoveEvent(self, e)
コード例 #33
0
ファイル: ocrwidget.py プロジェクト: zdenop/lector
    def mouseMoveEvent(self, event):
        sp = self.mapToScene(event.pos())

        if self.bResizing:  #if we're resizing an area
            item = self.resizingArea
            r = item.rect()
            pos = item.pos()

            newWidth = r.width()
            newHeight = r.height()
            newX, newY = pos.x(), pos.y()

            if self.resizingEdge & 1:  #bit mask: top is moving
                #max ensures that y >= 0
                newY = max(0, self.resizingAreaPos.y() + sp.y() - \
                            self.resizingStartingPos.y())
                newHeight = self.resizingAreaRect.height() + \
                            self.resizingAreaPos.y() - newY

            elif self.resizingEdge & 2:  #bit mask: bottom is moving
                newHeight = self.resizingAreaRect.height() + sp.y() - \
                            self.resizingStartingPos.y()

                #force area to be inside the scene
                if newY + newHeight > self.scene().height():
                    newHeight = self.scene().height() - newY

            if self.resizingEdge & 4:  #bit mask: right is moving
                newX = max(0, self.resizingAreaPos.x() + sp.x() - \
                            self.resizingStartingPos.x())
                newWidth = self.resizingAreaRect.width() + \
                            self.resizingAreaPos.x() - newX
            elif self.resizingEdge & 8:  #bit mask: right is moving
                newWidth = self.resizingAreaRect.width() + sp.x() - \
                            self.resizingStartingPos.x()

                #force area to be inside the scene
                if newX + newWidth > self.scene().width():
                    newWidth = self.scene().width() - newX

            #check that height >= OcrArea.resizeBorder
            if newHeight < 2 * OcrArea.resizeBorder:
                newHeight = r.height()
                newY = pos.y()
            #check that width >= OcrArea.resizeBorder
            if newWidth < 2 * OcrArea.resizeBorder:
                newWidth = r.width()
                newX = pos.x()

            item.setRect(0, 0, newWidth, newHeight)
            item.setPos(newX, newY)

        else:  # if not resizing
            # grabbing the position of the widget
            sp = self.mapToScene(event.pos())
            ret = self.scene().areaAt(sp)

            edge = ret % 100
            iArea = ret / 100
            cursors = {
                0: Qt.SizeAllCursor,
                1: Qt.SizeVerCursor,
                2: Qt.SizeVerCursor,
                4: Qt.SizeHorCursor,
                5: Qt.SizeFDiagCursor,
                6: Qt.SizeBDiagCursor,
                8: Qt.SizeHorCursor,
                9: Qt.SizeBDiagCursor,
                10: Qt.SizeFDiagCursor
            }

            if iArea:
                self.setCursor(cursors[edge])
            else:  # mouse not over an area
                self.setCursor(Qt.CrossCursor)

        QGraphicsView.mouseMoveEvent(self, event)