Source code for views.CustomViewBox
#
# TI Voxel Viewer component.
#
# Copyright (c) 2014 Texas Instruments Inc.
#
from PySide import QtGui, QtCore
import pyqtgraph
import numpy as np
[docs]class CustomViewBox(pyqtgraph.ViewBox):
resetView = QtCore.Signal()
autoHistogram = QtCore.Signal()
histogramToggle = QtCore.Signal()
export = QtCore.Signal()
def __init__(self):
super(CustomViewBox, self).__init__()
self.setMouseMode(pyqtgraph.ViewBox.RectMode)
self.invertY()
self.setAspectLocked(True)
[docs] def mouseDragEvent(self, ev, axis = None):
## if axis is specified, event will only affect that axis.
ev.accept() ## we accept all buttons
pos = ev.pos()
lastPos = ev.lastPos()
dif = pos - lastPos
dif = dif * -1
## Ignore axes if mouse is disabled
mouseEnabled = np.array(self.state['mouseEnabled'], dtype=np.float)
mask = mouseEnabled.copy()
if axis is not None:
mask[1 - axis] = 0.0
## Scale or translate based on mouse button
if (ev.button() & QtCore.Qt.LeftButton) and (ev.modifiers() & QtCore.Qt.ShiftModifier):
tr = dif*mask
tr = self.mapToView(tr) - self.mapToView(pyqtgraph.Point(0,0))
x = tr.x() if mask[0] == 1 else None
y = tr.y() if mask[1] == 1 else None
self.translateBy(x = x, y = y)
self.sigRangeChangedManually.emit(self.state['mouseEnabled'])
else:
super(CustomViewBox, self).mouseDragEvent(ev, axis)
[docs] def keyPressEvent(self, ev):
if ev.key() == QtCore.Qt.Key_R:
self.resetView.emit()
ev.accept()
elif ev.key() == QtCore.Qt.Key_A:
self.autoHistogram.emit()
ev.accept()
elif ev.key() == QtCore.Qt.Key_H:
self.histogramToggle.emit()
ev.accept()
elif ev.key() == QtCore.Qt.Key_E:
self.export.emit()
ev.accept()
else:
super(CustomViewBox, self).keyPressEvent(ev)