def __init__(self, parent=None): super(GraphicsView, self).__init__(parent) assert self.dragMode() == QGraphicsView.NoDrag self.setRenderHint(QPainter.Antialiasing) self.setRenderHint(QPainter.TextAntialiasing) self.freehandTool = FreehandTool(view=self) self.setMouseTracking(True)
class GraphicsView(QGraphicsView): def __init__(self, parent=None): super(GraphicsView, self).__init__(parent) assert self.dragMode() == QGraphicsView.NoDrag self.setRenderHint(QPainter.Antialiasing) self.setRenderHint(QPainter.TextAntialiasing) self.freehandTool = FreehandTool(view=self) self.setMouseTracking(True) # Enable mouseMoveEvent ''' Delegate events to FreehandTool. ''' def mouseMoveEvent(self, event): ''' Tell freehandTool to update its SegmentString. ''' pointerEvent = PointerEvent() pointerEvent.makeFromEvent(mapper=self, event=event) self.freehandTool.pointerMoveEvent(pointerEvent) def mousePressEvent(self, event): ''' On mouse button down, create a new (infinitesmal) SegmentString and PointerTrackGhost. freehandTool remembers and updates SegmentString. ''' pointerEvent = PointerEvent() pointerEvent.makeFromEvent(mapper=self, event=event) ''' freehandCurve as QGraphicsItem positioned at event in scene. It keeps its internal data in its local CS ''' freehandCurve = SegmentString() self.scene().addItem(freehandCurve) freehandCurve.setPos(pointerEvent.scenePos) ''' headGhost at (0,0) in scene it keeps its local data in CS equivalent to scene ''' headGhost = PointerTrackGhost() self.scene().addItem(headGhost) self.freehandTool.setSegmentString(segmentString=freehandCurve, pathHeadGhost=headGhost, scenePosition=pointerEvent.scenePos) self.freehandTool.pointerPressEvent(pointerEvent) def mouseReleaseEvent(self, event): pointerEvent = PointerEvent() pointerEvent.makeFromEvent(mapper=self, event=event) self.freehandTool.pointerReleaseEvent(pointerEvent) def keyPressEvent(self, event): if event.modifiers() & Qt.ControlModifier: alternateMode = True else: alternateMode = False self.freehandTool.testControlPoint(event, alternateMode)
def __init__(self, parent=None): super(GraphicsView, self).__init__(parent) assert self.dragMode() == QGraphicsView.NoDrag self.setRenderHint(QPainter.Antialiasing) self.setRenderHint(QPainter.TextAntialiasing) self.freehandTool = FreehandTool(view=self) self.setMouseTracking(True); # Enable mouseMoveEvent
class GraphicsView(QGraphicsView): def __init__(self, parent=None): super(GraphicsView, self).__init__(parent) assert self.dragMode() == QGraphicsView.NoDrag self.setRenderHint(QPainter.Antialiasing) self.setRenderHint(QPainter.TextAntialiasing) self.freehandTool = FreehandTool(view=self) self.setMouseTracking(True); # Enable mouseMoveEvent ''' Delegate events to FreehandTool. ''' def mouseMoveEvent(self, event): ''' Tell freehandTool to update its SegmentString. ''' pointerEvent = PointerEvent() pointerEvent.makeFromEvent(mapper=self, event=event) self.freehandTool.pointerMoveEvent(pointerEvent) def mousePressEvent(self, event): ''' On mouse button down, create a new (infinitesmal) SegmentString and PointerTrackGhost. freehandTool remembers and updates SegmentString. ''' pointerEvent = PointerEvent() pointerEvent.makeFromEvent(mapper=self, event=event) ''' freehandCurve as QGraphicsItem positioned at event in scene. It keeps its internal data in its local CS ''' freehandCurve = SegmentString() self.scene().addItem(freehandCurve) freehandCurve.setPos(pointerEvent.scenePos) ''' headGhost at (0,0) in scene it keeps its local data in CS equivalent to scene ''' headGhost = PointerTrackGhost() self.scene().addItem(headGhost) self.freehandTool.setSegmentString(segmentString=freehandCurve, pathHeadGhost=headGhost, scenePosition=pointerEvent.scenePos) self.freehandTool.pointerPressEvent(pointerEvent) def mouseReleaseEvent(self, event): pointerEvent = PointerEvent() pointerEvent.makeFromEvent(mapper=self, event=event) self.freehandTool.pointerReleaseEvent(pointerEvent) def keyPressEvent(self, event): if event.modifiers() & Qt.ControlModifier: alternateMode = True else: alternateMode = False self.freehandTool.testControlPoint(event, alternateMode)