Exemplo n.º 1
0
    def sceneEventFilter(self, event: QtCore.QEvent) -> bool:
        # call the inherited method
        if MaskTool.sceneEventFilter(self, event):
            return True

        if self.parent.maskTypeChooser.active_draw_type is None:
            return True

        # Mouse wheel to change the cursor size
        if event.type() == QtCore.QEvent.GraphicsSceneWheel:
            try:  # PyQt 5
                angle = event.angleDelta().y()
            except AttributeError:  # PyQt 4
                angle = event.delta()
            # wheel with CTRL means changing the cursor size
            if event.modifiers() == QtCore.Qt.ControlModifier:
                if angle > 0:
                    self.parent.changeCursorSize(+1)
                else:
                    self.parent.changeCursorSize(-1)
                event.accept()
                return True

        # Mouse press starts drawing
        if event.type() == QtCore.QEvent.GraphicsSceneMousePress and event.button() == QtCore.Qt.LeftButton:
            # if no mask has been created, create one for painting
            if self.parent.MaskEmpty is True:
                self.parent.AddEmptyMask()
            # store the coordinates
            self.last_x = event.pos().x()
            self.last_y = event.pos().y()
            # add a first circle (so that even if the mouse isn't moved something is drawn)
            self.DrawLine(self.last_x, self.last_x + 0.00001, self.last_y, self.last_y)
            # set the changed flag for the database
            self.parent.data_file.setChangesMade()
            # accept the event
            return True
        if event.type() == QtCore.QEvent.GraphicsSceneMouseRelease and event.button() == QtCore.Qt.LeftButton:
            if self.parent.config.auto_mask_update:
                with self.parent.window.changeTracker("draw line in mask"):
                    self.parent.save()
        # Mouse move event to draw the stroke
        if event.type() == QtCore.QEvent.GraphicsSceneMouseMove:
            # get the new position
            self.parent.DrawCursor.setPos(event.pos())
            pos_x = event.pos().x()
            pos_y = event.pos().y()
            # draw a line and store the position
            self.DrawLine(pos_x, self.last_x, pos_y, self.last_y)
            self.last_x = pos_x
            self.last_y = pos_y
            # accept the event
            return True
        # Mouse hover updates the color_under_cursor and displays the brush cursor
        if event.type() == QtCore.QEvent.GraphicsSceneHoverMove:
            # move brush cursor
            self.parent.DrawCursor.setPos(event.pos())
        # don't accept the event, so that others can accept it
        return False
Exemplo n.º 2
0
    def sceneEventFilter(self, event: QtCore.QEvent) -> None:
        if event.type() == QtCore.QEvent.GraphicsSceneWheel:
            try:  # PyQt 5
                angle = event.angleDelta().y()
            except AttributeError:  # PyQt 4
                angle = event.delta()

            # wheel with SHIFT means changing the opacity
            if event.modifiers() == QtCore.Qt.ShiftModifier:
                if angle > 0:
                    self.parent.changeOpacity(+0.1)
                else:
                    self.parent.changeOpacity(-0.1)
                event.accept()
                return True
Exemplo n.º 3
0
 def sceneEventFilter(self, event: QtCore.QEvent) -> bool:
     if event.type() == QtCore.QEvent.GraphicsSceneWheel:
         try:  # PyQt 5
             angle = event.angleDelta().y()
         except AttributeError:  # PyQt 4
             angle = event.delta()
         # wheel with CTRL means changing the cursor size
         if event.modifiers() == QtCore.Qt.ControlModifier:
             if angle > 0:
                 self.changeCursorSize(+1)
             else:
                 self.changeCursorSize(-1)
             event.accept()
             return True
         # wheel with SHIFT means changing the opacity
         elif event.modifiers() == QtCore.Qt.ShiftModifier:
             if angle > 0:
                 self.changeOpacity(+0.1)
             else:
                 self.changeOpacity(-0.1)
             event.accept()
             return True
     # don't accept the event, so that others can accept it
     return False