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
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
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
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
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)