def paint(self, editor, node, column, object, paint_context): painter, option, index = paint_context data = self.get_data(object) xs = np.linspace(0, option.rect.width(), len(data)) + option.rect.left() ys = (data.max() - data) / self.y_scale + option.rect.top() height = option.rect.height() plot_height = ys.ptp() extra = height - plot_height if bool(option.displayAlignment & QtCore.Qt.AlignVCenter): ys += extra / 2 elif bool(option.displayAlignment & QtCore.Qt.Bottom): ys += extra if bool(option.state & QtGui.QStyle.State_Selected): painter.fillRect(option.rect, option.palette.highlight()) points = [QtCore.QPointF(x, y) for x, y in zip(xs, ys)] old_pen = painter.pen() if bool(option.state & QtGui.QStyle.State_Selected): painter.setPen(QtGui.QPen(option.palette.highlightedText(), 0)) try: if qt_api.startswith('pyside'): painter.drawPolyline(points) else: painter.drawPolyline(*points) finally: painter.setPen(old_pen) return None
def test_vertical_mouse_wheel(self): from pyface.qt import QtCore, QtGui is_qt4 = (QtCore.__version_info__[0] <= 4) # create and mock a mouse wheel event if is_qt4: qt_event = QtGui.QWheelEvent(QtCore.QPoint(0, 0), 200, QtCore.Qt.NoButton, QtCore.Qt.NoModifier, QtCore.Qt.Vertical) else: qt_event = QtGui.QWheelEvent( QtCore.QPointF(0, 0), self.window.control.mapToGlobal(QtCore.QPoint(0, 0)), QtCore.QPoint(0, 200), QtCore.QPoint(0, 200), 200, QtCore.Qt.Vertical, QtCore.Qt.NoButton, QtCore.Qt.NoModifier, QtCore.Qt.ScrollUpdate) # dispatch event self.window._on_mouse_wheel(qt_event) # validate results self.assertEqual(self.tool.event.mouse_wheel_axis, 'vertical') self.assertAlmostEqual(self.tool.event.mouse_wheel, 5.0 / 3.0) self.assertEqual(self.tool.event.mouse_wheel_delta, (0, 200))
def test_horizontal_mouse_wheel(self): from pyface.qt import QtCore, QtGui, is_qt4, is_qt5 # create and mock a mouse wheel event if is_qt4: qt_event = QtGui.QWheelEvent( QtCore.QPoint(0, 0), # pos 200, # delta QtCore.Qt.NoButton, # buttons QtCore.Qt.NoModifier, # modifiers QtCore.Qt.Horizontal, # orient ) elif is_qt5: qt_event = QtGui.QWheelEvent( QtCore.QPoint(0, 0), # pos self.window.control.mapToGlobal(QtCore.QPoint(0, 0)), # globalPos QtCore.QPoint(200, 0), # pixelDelta QtCore.QPoint(200, 0), # angleDelta 200, # qt4Delta QtCore.Qt.Horizontal, # qt4Orietation QtCore.Qt.NoButton, # buttons QtCore.Qt.NoModifier, # modifiers QtCore.Qt.ScrollUpdate, # phase ) else: qt_event = QtGui.QWheelEvent( QtCore.QPointF(0, 0), # pos self.window.control.mapToGlobal(QtCore.QPointF( 0, 0)), # globalPos QtCore.QPoint(200, 0), # pixelDelta QtCore.QPoint(200, 0), # angleDelta QtCore.Qt.NoButton, # buttons QtCore.Qt.NoModifier, # modifiers QtCore.Qt.ScrollUpdate, # phase False, # inverted ) # dispatch event self.window._on_mouse_wheel(qt_event) # validate results self.assertEqual(self.tool.event.mouse_wheel_axis, "horizontal") self.assertAlmostEqual(self.tool.event.mouse_wheel, 5.0 / 3.0) self.assertEqual(self.tool.event.mouse_wheel_delta, (200, 0))
def show_text(self, text, point=None): """ Draw text on the device at current text position. This is also used for showing text at a particular point specified by x and y. """ if point is None: pos = tuple(self.text_pos) else: pos = tuple(point) unflip_trans = QtGui.QTransform(*self.text_transform) unflip_trans.translate(0, self._height) unflip_trans.scale(1.0, -1.0) self.gc.save() self.gc.setTransform(unflip_trans, True) self.gc.drawText(QtCore.QPointF(pos[0], self._flip_y(pos[1])), text) self.gc.restore()
def show_text(self, text, point=None): """ Draw text on the device at current text position. This is also used for showing text at a particular point specified by x and y. """ if point is None: pos = tuple(self.text_pos) else: pos = tuple(point) unflip_trans = QtGui.QTransform(*self.text_transform) unflip_trans.translate(0, self._height) unflip_trans.scale(1.0, -1.0) # Make some temporary modifications to the state with self: # Kiva uses the fill color for text brush = self.gc.brush() self.gc.setPen(brush.color()) self.gc.setTransform(unflip_trans, True) pos = QtCore.QPointF(pos[0], self._flip_y(pos[1])) self.gc.drawText(pos, text)