From: daid303 Date: Fri, 29 Mar 2013 13:49:56 +0000 (+0100) Subject: Make the print button functional. X-Git-Tag: 13.05~143 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=97d717ebcba2979670829307aac9c680717203ec;p=cura.git Make the print button functional. --- diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index 45c65079..52d4d901 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -511,12 +511,12 @@ class printWindow(wx.Frame): def OnTermKey(self, e): if len(self.termHistory) > 0: if e.GetKeyCode() == wx.WXK_UP: - self.termHistoryIdx = self.termHistoryIdx - 1 + self.termHistoryIdx -= 1 if self.termHistoryIdx < 0: self.termHistoryIdx = len(self.termHistory) - 1 self.termInput.SetValue(self.termHistory[self.termHistoryIdx]) if e.GetKeyCode() == wx.WXK_DOWN: - self.termHistoryIdx = self.termHistoryIdx - 1 + self.termHistoryIdx -= 1 if self.termHistoryIdx >= len(self.termHistory): self.termHistoryIdx = 0 self.termInput.SetValue(self.termHistory[self.termHistoryIdx]) diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index b7190752..933737a7 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -10,11 +10,13 @@ OpenGL.ERROR_CHECKING = False from OpenGL.GLU import * from OpenGL.GL import * +from Cura.gui import printWindow from Cura.util import profile from Cura.util import meshLoader from Cura.util import objectScene from Cura.util import resources from Cura.util import sliceEngine +from Cura.util import machineCom from Cura.gui.util import opengl from Cura.gui.util import openglGui @@ -59,14 +61,15 @@ class SceneView(openglGui.glGuiPanel): self._platformMesh = meshLoader.loadMeshes(resources.getPathForMesh('ultimaker_platform.stl'))[0] self._platformMesh._drawOffset = numpy.array([0,0,0.5], numpy.float32) self._isSimpleMode = True - self._slicer = sliceEngine.Slicer(self._updateSliceProgress) - self._sceneUpdateTimer = wx.Timer(self) - self.Bind(wx.EVT_TIMER, lambda e : self._slicer.runSlicer(self._scene), self._sceneUpdateTimer) self.openFileButton = openglGui.glButton(self, 4, 'Load', (0,0), self.ShowLoadModel) self.printButton = openglGui.glButton(self, 6, 'Print', (1,0), self.ShowPrintWindow) self.printButton.setDisabled(True) + self._slicer = sliceEngine.Slicer(self._updateSliceProgress) + self._sceneUpdateTimer = wx.Timer(self) + self.Bind(wx.EVT_TIMER, lambda e : self._slicer.runSlicer(self._scene), self._sceneUpdateTimer) + self.updateProfileToControls() wx.EVT_IDLE(self, self.OnIdle) @@ -85,7 +88,8 @@ class SceneView(openglGui.glGuiPanel): self.loadScene([filename]) def ShowPrintWindow(self): - pass + if machineCom.machineIsConnected(): + printWindow.printFile(self._slicer.getGCodeFilename()) def OnIdle(self, e): if self._animView is not None or self._animZoom is not None: @@ -184,6 +188,8 @@ class SceneView(openglGui.glGuiPanel): self.Refresh() def OnMouseUp(self, e): + if e.LeftIsDown() or e.MiddleIsDown() or e.RightIsDown(): + return if self._mouseState == 'dragOrClick': if e.Button == 1: if self._focusObj is not None: @@ -191,6 +197,12 @@ class SceneView(openglGui.glGuiPanel): else: self._selectedObj = None self.Refresh() + if e.Button == 3 and self._selectedObj == self._focusObj: + #menu = wx.Menu() + #menu.Append(-1, 'Test') + #self.PopupMenu(menu) + #menu.Destroy() + pass if self._mouseState == 'dragObject' and self._selectedObj is not None: self._scene.pushFree() self.sceneUpdated() @@ -261,6 +273,8 @@ class SceneView(openglGui.glGuiPanel): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT) def OnPaint(self,e): + self.printButton._imageID = 6 if machineCom.machineIsConnected() else 2 + if self._animView is not None: self._viewTarget = self._animView.getPosition() if self._animView.isDone(): diff --git a/Cura/util/machineCom.py b/Cura/util/machineCom.py index 642c6a8e..9cefa3ed 100644 --- a/Cura/util/machineCom.py +++ b/Cura/util/machineCom.py @@ -8,6 +8,7 @@ import math import re import traceback import threading +import platform import Queue as queue import serial @@ -25,14 +26,14 @@ except: def serialList(forAutoDetect=False): baselist=[] - if os.name=="nt": + if platform.system() == "Windows": try: key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM") i=0 while True: values = _winreg.EnumValue(key, i) if not forAutoDetect or 'USBSER' in values[0]: - baselist+=[_winreg.EnumValue(key,i)[1]] + baselist+=[values[1]] i+=1 except: pass @@ -45,10 +46,18 @@ def serialList(forAutoDetect=False): if prev in baselist: baselist.remove(prev) baselist.insert(0, prev) - if version.isDevVersion(): + if version.isDevVersion() and not forAutoDetect: baselist.append('VIRTUAL') return baselist +def machineIsConnected(): + port = profile.getPreference('serial_port') + if port == 'AUTO': + return len(serialList(True)) > 0 + if platform.system() == "Windows": + return port in serialList(True) + return os.path.isfile(port) + def baudrateList(): ret = [250000, 230400, 115200, 57600, 38400, 19200, 9600] if profile.getPreference('serial_baud_auto') != '': @@ -143,14 +152,14 @@ class MachineCom(object): STATE_CLOSED_WITH_ERROR = 10 def __init__(self, port = None, baudrate = None, callbackObject = None): - if port == None: + if port is None: port = profile.getPreference('serial_port') - if baudrate == None: + if baudrate is None: if profile.getPreference('serial_baud') == 'AUTO': baudrate = 0 else: baudrate = int(profile.getPreference('serial_baud')) - if callbackObject == None: + if callbackObject is None: callbackObject = MachineComPrintCallback() self._port = port @@ -533,7 +542,7 @@ class MachineCom(object): self._printSection = 'CUSTOM' self._changeState(self.STATE_PRINTING) self._printStartTime = time.time() - for i in xrange(0, 6): + for i in xrange(0, 4): self._sendNext() def cancelPrint(self):