From b746cb489d71c9989f87b0441e10458de9a61b22 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 19 Dec 2013 12:12:41 +0100 Subject: [PATCH] Added keyboard control for the 3D window to look around with cursor keys. --- Cura/gui/mainWindow.py | 1 + Cura/gui/newVersionDialog.py | 1 + Cura/gui/sceneView.py | 74 ++++++++++++++++++++++++++++++------ changelog | 1 + 4 files changed, 65 insertions(+), 12 deletions(-) diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 7efb631d..99c0b2d8 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -245,6 +245,7 @@ class mainWindow(wx.Frame): self.Centre() self.updateSliceMode() + self.scene.SetFocus() def onTimer(self, e): #Check if there is something in the clipboard diff --git a/Cura/gui/newVersionDialog.py b/Cura/gui/newVersionDialog.py index bb36d540..106fc92b 100644 --- a/Cura/gui/newVersionDialog.py +++ b/Cura/gui/newVersionDialog.py @@ -31,6 +31,7 @@ class newVersionDialog(wx.Dialog): s.Add(wx.StaticText(p, -1, '* Updated object boundaries for multi-object prints, allows for tighter fitting of objects on the build platform')) s.Add(wx.StaticText(p, -1, '* Updated time-estimate to greatly improve accuracy of the estimate.')) s.Add(wx.StaticText(p, -1, '* Fixed problem with retractions not happening when they should.')) + s.Add(wx.StaticText(p, -1, '* Added keyboard control for the 3D window to look around with cursor keys.')) self.hasUltimaker = None self.hasUltimaker2 = None diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index 49c4ccc5..9e60a092 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -661,18 +661,68 @@ class SceneView(openglGui.glGuiPanel): if self._selectedObj is not None: self._deleteObject(self._selectedObj) self.QueueRefresh() - if keyCode == wx.WXK_UP: - self.layerSelect.setValue(self.layerSelect.getValue() + 1) - self.QueueRefresh() - elif keyCode == wx.WXK_DOWN: - self.layerSelect.setValue(self.layerSelect.getValue() - 1) - self.QueueRefresh() - elif keyCode == wx.WXK_PAGEUP: - self.layerSelect.setValue(self.layerSelect.getValue() + 10) - self.QueueRefresh() - elif keyCode == wx.WXK_PAGEDOWN: - self.layerSelect.setValue(self.layerSelect.getValue() - 10) - self.QueueRefresh() + if self.viewMode == 'gcode': + if keyCode == wx.WXK_UP: + self.layerSelect.setValue(self.layerSelect.getValue() + 1) + self.QueueRefresh() + elif keyCode == wx.WXK_DOWN: + self.layerSelect.setValue(self.layerSelect.getValue() - 1) + self.QueueRefresh() + elif keyCode == wx.WXK_PAGEUP: + self.layerSelect.setValue(self.layerSelect.getValue() + 10) + self.QueueRefresh() + elif keyCode == wx.WXK_PAGEDOWN: + self.layerSelect.setValue(self.layerSelect.getValue() - 10) + self.QueueRefresh() + else: + if keyCode == wx.WXK_UP: + if wx.GetKeyState(wx.WXK_SHIFT): + self._zoom /= 1.2 + if self._zoom < 1: + self._zoom = 1 + else: + self._pitch -= 15 + self.QueueRefresh() + elif keyCode == wx.WXK_DOWN: + if wx.GetKeyState(wx.WXK_SHIFT): + self._zoom *= 1.2 + if self._zoom > numpy.max(self._machineSize) * 3: + self._zoom = numpy.max(self._machineSize) * 3 + else: + self._pitch += 15 + self.QueueRefresh() + elif keyCode == wx.WXK_LEFT: + self._yaw -= 15 + self.QueueRefresh() + elif keyCode == wx.WXK_RIGHT: + self._yaw += 15 + self.QueueRefresh() + elif keyCode == wx.WXK_NUMPAD_ADD or keyCode == wx.WXK_ADD or keyCode == ord('+') or keyCode == ord('='): + self._zoom /= 1.2 + if self._zoom < 1: + self._zoom = 1 + self.QueueRefresh() + elif keyCode == wx.WXK_NUMPAD_SUBTRACT or keyCode == wx.WXK_SUBTRACT or keyCode == ord('-'): + self._zoom *= 1.2 + if self._zoom > numpy.max(self._machineSize) * 3: + self._zoom = numpy.max(self._machineSize) * 3 + self.QueueRefresh() + elif keyCode == wx.WXK_HOME: + self._yaw = 30 + self._pitch = 60 + self.QueueRefresh() + elif keyCode == wx.WXK_PAGEUP: + self._yaw = 0 + self._pitch = 0 + self.QueueRefresh() + elif keyCode == wx.WXK_PAGEDOWN: + self._yaw = 0 + self._pitch = 90 + self.QueueRefresh() + elif keyCode == wx.WXK_END: + self._yaw = 90 + self._pitch = 90 + self.QueueRefresh() if keyCode == wx.WXK_F3 and wx.GetKeyState(wx.WXK_SHIFT): shaderEditor(self, self.ShaderUpdate, self._objectLoadShader.getVertexShader(), self._objectLoadShader.getFragmentShader()) diff --git a/changelog b/changelog index b3ea6b23..ffad1f19 100644 --- a/changelog +++ b/changelog @@ -4,6 +4,7 @@ Development * Updated object boundaries for multi-object prints, allows for tighter fitting of objects on the build platform * Updated time-estimate to greatly improve accuracy of the estimate. * Fixed problem with retractions not happening when they should. +* Added keyboard control for the 3D window to look around with cursor keys. Ultimaker2 - Firmware update - 13.12 * Fixed the problem where aborting a print did not always home the head. -- 2.30.2