chiark / gitweb /
Make the print button functional.
authordaid303 <daid303@gmail.com>
Fri, 29 Mar 2013 13:49:56 +0000 (14:49 +0100)
committerdaid303 <daid303@gmail.com>
Fri, 29 Mar 2013 13:49:56 +0000 (14:49 +0100)
Cura/gui/printWindow.py
Cura/gui/sceneView.py
Cura/util/machineCom.py

index 45c650791d271cbd4910ebfafe49679e1a78cdf3..52d4d90132a6faf9af0544d6b5bb9d11aaab8a01 100644 (file)
@@ -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])
index b7190752d7b2d172e90bb25fe60d03bae0b460eb..933737a7b10365d22b2f262b0c370a9a76c88578 100644 (file)
@@ -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():
index 642c6a8e9456b9d207bae490093aa9e54ebf5af1..9cefa3ed491ea7d02aecb2e64be69d8473563fee 100644 (file)
@@ -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):