def test_popup_save_with_user_not_ok(self): with mock.patch('pyface.api.FileDialog') as fd: fd.return_value = self._make_mock_file_dialog(NO) from tvtk.pyface.utils import popup_save x = popup_save() self.assertEqual(x, '')
def keyPressEvent(self, e): """ This method is overridden to prevent the 's'/'w'/'e'/'q' keys from doing the default thing which is generally useless. It also handles the 'p' and 'l' keys so the picker and light manager are called. """ key = e.key() modifiers = e.modifiers() scene = self._scene camera = scene.camera if key in [QtCore.Qt.Key_Minus]: camera.zoom(0.8) scene.render() scene._record_methods('camera.zoom(0.8)\nrender()') return if key in [QtCore.Qt.Key_Equal, QtCore.Qt.Key_Plus]: camera.zoom(1.25) scene.render() scene._record_methods('camera.zoom(1.25)\nrender()') return if key in [QtCore.Qt.Key_E, QtCore.Qt.Key_Q, QtCore.Qt.Key_Escape]: scene._disable_fullscreen() return if key in [QtCore.Qt.Key_W]: return if key in [QtCore.Qt.Key_R]: scene._record_methods('reset_zoom()') return if key in [QtCore.Qt.Key_P] and modifiers == QtCore.Qt.NoModifier: pos = self.mapFromGlobal(QtGui.QCursor.pos()) x = pos.x() y = self.height() - pos.y() scene.picker.pick(x, y) return if key in [QtCore.Qt.Key_F] and modifiers == QtCore.Qt.NoModifier: pos = self.mapFromGlobal(QtGui.QCursor.pos()) x = pos.x() y = self.height() - pos.y() data = scene.picker.pick_world(x, y) coord = data.coordinate if coord is not None: camera.focal_point = coord scene.render() scene._record_methods('camera.focal_point = %r\n'\ 'render()'%list(coord)) return if key in [QtCore.Qt.Key_L] and modifiers == QtCore.Qt.NoModifier: scene.light_manager.configure() return if key in [QtCore.Qt.Key_S] and modifiers == QtCore.Qt.NoModifier: fname = popup_save(self.parent()) if len(fname) != 0: self._scene.save(fname) return shift = ((modifiers & QtCore.Qt.ShiftModifier) == QtCore.Qt.ShiftModifier) if key == QtCore.Qt.Key_Left: if shift: camera.yaw(-5) scene._record_methods('camera.yaw(-5)') else: camera.azimuth(5) scene._record_methods('camera.azimuth(5)') scene.render() scene._record_methods('render()') return if key == QtCore.Qt.Key_Right: if shift: camera.yaw(5) scene._record_methods('camera.yaw(5)') else: camera.azimuth(-5) scene._record_methods('camera.azimuth(-5)') scene.render() scene._record_methods('render()') return if key == QtCore.Qt.Key_Up: if shift: camera.pitch(-5) scene._record_methods('camera.pitch(-5)') else: camera.elevation(-5) scene._record_methods('camera.elevation(-5)') camera.orthogonalize_view_up() scene.render() scene._record_methods('camera.orthogonalize_view_up()\nrender()') return if key == QtCore.Qt.Key_Down: if shift: camera.pitch(5) scene._record_methods('camera.pitch(5)') else: camera.elevation(5) scene._record_methods('camera.elevation(5)') camera.orthogonalize_view_up() scene.render() scene._record_methods('camera.orthogonalize_view_up()\nrender()') return QVTKRenderWindowInteractor.keyPressEvent(self, e)
def OnKeyDown(self, event): """This method is overridden to prevent the 's'/'w'/'e'/'q' keys from doing the default thing which is generally useless. It also handles the 'p' and 'l' keys so the picker and light manager are called. """ keycode = event.GetKeyCode() modifiers = event.HasModifiers() camera = self.camera if keycode < 256: key = chr(keycode) if key == '-': camera.zoom(0.8) self.render() self._record_methods('camera.zoom(0.8)\nrender()') return if key in ['=', '+']: camera.zoom(1.25) self.render() self._record_methods('camera.zoom(1.25)\nrender()') return if key.lower() in ['q', 'e'] or keycode == wx.WXK_ESCAPE: self._disable_fullscreen() if key.lower() in ['w']: event.Skip() return if key.lower() in ['r']: self._record_methods('reset_zoom()') # Handle picking. if key.lower() in ['p']: # In wxPython-2.6, there appears to be a bug in # EVT_CHAR so that event.GetX() and event.GetY() are # not correct. Therefore the picker is called on # KeyUp. event.Skip() return # Camera focal point. if key.lower() in ['f']: event.Skip() return # Light configuration. if key.lower() in ['l'] and not modifiers: self.light_manager.configure() return if key.lower() in ['s'] and not modifiers: parent = self._vtk_control.GetParent() fname = popup_save(parent) if len(fname) != 0: self.save(fname) return shift = event.ShiftDown() if keycode == wx.WXK_LEFT: if shift: camera.yaw(-5) self._record_methods('camera.yaw(-5)') else: camera.azimuth(5) self._record_methods('camera.azimuth(5)') self.render() self._record_methods('render()') return elif keycode == wx.WXK_RIGHT: if shift: camera.yaw(5) self._record_methods('camera.yaw(5)') else: camera.azimuth(-5) self._record_methods('camera.azimuth(-5)') self.render() self._record_methods('render()') return elif keycode == wx.WXK_UP: if shift: camera.pitch(-5) self._record_methods('camera.pitch(-5)') else: camera.elevation(-5) self._record_methods('camera.elevation(-5)') camera.orthogonalize_view_up() self.render() self._record_methods('camera.orthogonalize_view_up()\nrender()') return elif keycode == wx.WXK_DOWN: if shift: camera.pitch(5) self._record_methods('camera.pitch(5)') else: camera.elevation(5) self._record_methods('camera.elevation(5)') camera.orthogonalize_view_up() self.render() self._record_methods('camera.orthogonalize_view_up()\nrender()') return self._vtk_control.OnKeyDown(event) # Skipping the event is not ideal but necessary because we # have no way of knowing of the event was really handled or # not and not skipping will break any keyboard accelerators. # In practice this does not seem to pose serious problems. event.Skip()