chiark / gitweb /
Add error message if pypy crashes
authorDaid <daid303@gmail.com>
Fri, 24 Feb 2012 22:01:22 +0000 (23:01 +0100)
committerDaid <daid303@gmail.com>
Fri, 24 Feb 2012 22:01:22 +0000 (23:01 +0100)
Position 3D model at given printer center
Add temperature/support headers so I do not forget those settings.

SkeinPyPy_NewUI/newui/mainWindow.py
SkeinPyPy_NewUI/newui/preview3d.py
SkeinPyPy_NewUI/newui/sliceProgessPanel.py

index 7953f9c69728e2395da75faa5c8be4db92a1901f..788aade63072c0ef56ecf9854ad4e355ef8d44fb 100644 (file)
@@ -40,7 +40,11 @@ class mainWindow(wx.Frame):
                self.filename = None
                self.progressPanelList = []
                self.settingControlList = []
-               
+
+               #Preview window
+               self.preview3d = preview3d.previewPanel(self)
+
+               #Main tabs
                nb = wx.Notebook(self)
                
                (left, right) = self.CreateConfigTab(nb, 'Print config')
@@ -69,14 +73,20 @@ class mainWindow(wx.Frame):
                #c = SettingRow(right, "Cool type", self.plugins['cool'].preferencesDict['Cool_Type'])
                c = SettingRow(right, "Minimal layer time (sec)", 'cool_min_layer_time', '10', 'Minimum time spend in a layer, gives the layer time to cool down before the next layer is put on top. If the layer will be placed down too fast the printer will slow down to make sure it has spend atleast this amount of seconds printing this layer.')
                validators.validFloat(c, 0.0)
+
+               TitleRow(right, "Temperature")
+               TitleRow(right, "Support")
+
                
                (left, right) = self.CreateConfigTab(nb, 'Machine && Filament')
                
                TitleRow(left, "Machine size")
                c = SettingRow(left, "Machine center X (mm)", 'machine_center_x', '100', 'The center of your machine, your print will be placed at this location')
                validators.validInt(c, 10)
+               settingNotify(c, self.preview3d.updateCenterX)
                c = SettingRow(left, "Machine center Y (mm)", 'machine_center_y', '100', 'The center of your machine, your print will be placed at this location')
                validators.validInt(c, 10)
+               settingNotify(c, self.preview3d.updateCenterY)
                #self.AddSetting(left, "Width (mm)", settings.IntSpin().getFromValue(10, "machine_width", None, 1000, 205))
                #self.AddSetting(left, "Depth (mm)", settings.IntSpin().getFromValue(10, "machine_depth", None, 1000, 205))
                #self.AddSetting(left, "Height (mm)", settings.IntSpin().getFromValue(10, "machine_height", None, 1000, 200))
@@ -115,14 +125,13 @@ class mainWindow(wx.Frame):
                
                nb.AddPage(alterationPanel.alterationPanel(nb), "Start/End-GCode")
 
-               #Preview window, load and slice buttons.
-               self.preview3d = preview3d.previewPanel(self)
-               
+               # load and slice buttons.
                loadButton = wx.Button(self, -1, 'Load STL')
                sliceButton = wx.Button(self, -1, 'Slice to GCode')
                self.Bind(wx.EVT_BUTTON, self.OnLoadSTL, loadButton)
                self.Bind(wx.EVT_BUTTON, self.OnSlice, sliceButton)
 
+               #Main sizer, to position the preview window, buttons and tab control
                sizer = wx.GridBagSizer()
                self.SetSizer(sizer)
                sizer.Add(nb, (0,0), span=(1,1), flag=wx.EXPAND)
@@ -131,7 +140,6 @@ class mainWindow(wx.Frame):
                sizer.AddGrowableRow(0)
                sizer.Add(loadButton, (1,1))
                sizer.Add(sliceButton, (1,2))
-               
                self.sizer = sizer
 
                #Create the popup window
@@ -332,3 +340,17 @@ class SettingRow():
        def SetValue(self, value):
                self.ctrl.SetValue(value)
 
+#Settings notify works as a validator, but instead of validating anything, it calls another function, which can use the value.
+class settingNotify():
+       def __init__(self, setting, func):
+               self.setting = setting
+               self.setting.validators.append(self)
+               self.func = func
+       
+       def validate(self):
+               try:
+                       f = float(self.setting.GetValue())
+                       self.func(f)
+                       return validators.SUCCESS, ''
+               except ValueError:
+                       return validators.SUCCESS, ''
index 61cb30a47acee1e71031ba7e6964b678e52c3cad..7902d9aa6d55035c1b0c044b5ddaafcc124b967f 100644 (file)
@@ -29,7 +29,7 @@ class previewPanel(wx.Panel):
                self.triangleMesh = None\r
                self.pathList = None\r
                self.machineSize = Vector3(210, 210, 200)\r
-               self.machineCenter = Vector3(105, 105, 0)\r
+               self.machineCenter = Vector3(0, 0, 0)\r
                \r
                tb = wx.ToolBar( self, -1 )\r
                self.ToolBar = tb\r
@@ -44,6 +44,15 @@ class previewPanel(wx.Panel):
                sizer.Add(self.glCanvas, 1, flag=wx.EXPAND)\r
                self.SetSizer(sizer)\r
 \r
+       def updateCenterX(self, x):\r
+               self.machineCenter.x = x\r
+               self.moveModel()\r
+               self.glCanvas.Refresh()\r
+\r
+       def updateCenterY(self, y):\r
+               self.machineCenter.y = y\r
+               self.moveModel()\r
+               self.glCanvas.Refresh()\r
        \r
        def loadModelFile(self, filename):\r
                self.modelFilename = filename\r
index cf3af8bebdb1b2793d33aef744687cc39cc900dc..2c181ac0156dce72c826fa687811147ed02fd909 100644 (file)
@@ -67,14 +67,17 @@ class sliceProgessPanel(wx.Panel):
        def OnShowGCode(self, e):
                self.mainWindow.preview3d.loadGCodeFile(self.filename[: self.filename.rfind('.')] + "_export.gcode")
        
-       def OnSliceDone(self):
-               self.statusText.SetLabel("Ready.")
+       def OnSliceDone(self, ret):
                self.progressGauge.Destroy()
-               self.showButton = wx.Button(self, -1, "Show GCode")
-               self.Bind(wx.EVT_BUTTON, self.OnShowGCode, self.showButton)
-               self.sizer.Remove(self.abortButton)
-               self.sizer.Add(self.showButton, 0)
-               self.sizer.Add(self.abortButton, 0)
+               if ret == 0:
+                       self.statusText.SetLabel("Ready.")
+                       self.showButton = wx.Button(self, -1, "Show GCode")
+                       self.Bind(wx.EVT_BUTTON, self.OnShowGCode, self.showButton)
+                       self.sizer.Remove(self.abortButton)
+                       self.sizer.Add(self.showButton, 0)
+                       self.sizer.Add(self.abortButton, 0)
+               else:
+                       self.statusText.SetLabel("!?! Something went wrong during slicing.")
                self.sizer.Layout()
                self.abort = True
        
@@ -116,5 +119,6 @@ class WorkerThread(threading.Thread):
                                wx.CallAfter(self.notifyWindow.statusText.SetLabel, "Aborted by user.")
                                return
                        line = p.stdout.readline()
-               wx.CallAfter(self.notifyWindow.OnSliceDone)
+               ret = p.wait()
+               wx.CallAfter(self.notifyWindow.OnSliceDone, ret)