From: daid Date: Thu, 19 Dec 2013 11:12:41 +0000 (+0100) Subject: Added keyboard control for the 3D window to look around with cursor keys. X-Git-Tag: 14.01~17 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=b746cb489d71c9989f87b0441e10458de9a61b22;p=cura.git Added keyboard control for the 3D window to look around with cursor keys. --- 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.