示例#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
示例#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
示例#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
示例#4
0
    def from_qevent(qe: QtCore.QEvent) -> 'Modifier':
        v = Modifier(0)

        if isinstance(qe, QtGui.QInputEvent):
            qt_modifiers = int(qe.modifiers())

            if qt_modifiers & Qt.ShiftModifier:
                v |= Modifier.Shift

            if qt_modifiers & Qt.ControlModifier:
                v |= Modifier.Ctrl

            if qt_modifiers & Qt.AltModifier:
                v |= Modifier.Alt

            if qt_modifiers & Qt.MetaModifier:
                v |= Modifier.Meta

        return v
示例#5
0
    def event(self, ev: QEvent) -> bool:

        #   Tab: Insert 4 spaces
        #   Arrow Up/Down: select a line from the history buffer
        #   Newline: Emit returned signal

        if ev.type() == QEvent.KeyPress:
            if ev.key() == Qt.Key_Tab:
                self.insert(' ' * 4)
                return True
            elif ev.key() == Qt.Key_Backtab:

                ccp = self.cursorPosition()
                tl = self.text()[:ccp]
                tr = self.text()[ccp:]

                ends_with_tab = re.match(r"(.*)\s\s\s\s$", tl)

                if ends_with_tab:
                    self.setText(tl[:-4] + tr)
                    self.setCursorPosition(ccp - 4)
                    return True

            elif ev.key() == Qt.Key_Up:
                self.recall(self.hist_index - 1)
                return True
            elif ev.key() == Qt.Key_Down:
                self.recall(self.hist_index + 1)
                return True
            elif ev.key() == Qt.Key_Return:
                if len(self.text()) == 0 and ev.modifiers(
                ) == Qt.ControlModifier:
                    self.open_text_edit()
                else:
                    self.returnkey()
                return True

        return super().event(ev)