chiark / gitweb /
Renamed DepthComplexity to XRay in code
authorDaid <daid303@gmail.com>
Fri, 9 Mar 2012 19:00:22 +0000 (20:00 +0100)
committerDaid <daid303@gmail.com>
Fri, 9 Mar 2012 19:00:22 +0000 (20:00 +0100)
Added working steps per E calibration
Fixed checkboxes being unchecked always on first run

SkeinPyPy_NewUI/newui/configBase.py
SkeinPyPy_NewUI/newui/configWizard.py
SkeinPyPy_NewUI/newui/mainWindow.py
SkeinPyPy_NewUI/newui/preview3d.py

index c221b080683e9ec0a0260f2b431c4e904e61665d..0f939de34e44350d60c5192852d5499e2d5e7c24 100644 (file)
@@ -116,13 +116,11 @@ class SettingRow():
                        self.ctrl.Bind(wx.EVT_TEXT, self.OnSettingChange)
                elif isinstance(defaultValue, types.BooleanType):
                        self.ctrl = wx.CheckBox(panel, -1, style=wx.ALIGN_RIGHT)
-                       self.ctrl.SetValue(getSettingFunc(configName, defaultValue) == "True")
+                       self.SetValue(getSettingFunc(configName, defaultValue))
                        self.ctrl.Bind(wx.EVT_CHECKBOX, self.OnSettingChange)
                else:
                        self.ctrl = wx.ComboBox(panel, -1, getSettingFunc(configName, defaultValue[0]), choices=defaultValue, style=wx.CB_DROPDOWN|wx.CB_READONLY)
                        self.ctrl.Bind(wx.EVT_TEXT, self.OnSettingChange)
-               #self.helpButton = wx.Button(panel, -1, "?", style=wx.BU_EXACTFIT)
-               #self.helpButton.SetToolTip(wx.ToolTip(help))
                
                self.ctrl.Bind(wx.EVT_ENTER_WINDOW, lambda e: panel.main.OnPopupDisplay(self))
                self.ctrl.Bind(wx.EVT_LEAVE_WINDOW, panel.main.OnPopupHide)
@@ -131,7 +129,6 @@ class SettingRow():
                
                sizer.Add(self.label, (x,y), flag=wx.ALIGN_CENTER_VERTICAL)
                sizer.Add(self.ctrl, (x,y+1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)
-               #sizer.Add(helpButton, (x,y+2))
                sizer.SetRows(x+1)
 
        def OnSettingChange(self, e):
index 34690fc4318b6c0cd09901f7d101b528247ac293..107f30420780019fa4a387f698a91bea36d958e1 100644 (file)
@@ -36,6 +36,11 @@ class InfoPage(wx.wizard.WizardPageSimple):
                self.GetSizer().Add(radio, 0, wx.EXPAND|wx.ALL, 5)\r
                return radio\r
        \r
+       def AddButton(self, label):\r
+               button = wx.Button(self, -1, label)\r
+               self.GetSizer().Add(button, 0, wx.LEFT, 5)\r
+               return button\r
+       \r
        def AddDualButton(self, label1, label2):\r
                p = wx.Panel(self)\r
                p.SetSizer(wx.BoxSizer(wx.HORIZONTAL))\r
@@ -43,7 +48,7 @@ class InfoPage(wx.wizard.WizardPageSimple):
                p.GetSizer().Add(button1, 0, wx.RIGHT, 8)\r
                button2 = wx.Button(p, -1, label2)\r
                p.GetSizer().Add(button2, 0)\r
-               self.GetSizer().Add(p, 0)\r
+               self.GetSizer().Add(p, 0, wx.LEFT, 5)\r
                return button1, button2\r
        \r
        def AllowNext(self):\r
@@ -119,9 +124,8 @@ class FirmwareUpgradePage(InfoPage):
                self.AddText('* You have an older machine based on ATMega1280')\r
                self.AddText('* Using an LCD panel')\r
                self.AddText('* Have other changes in the firmware')\r
-               button = wx.Button(self, -1, 'Goto this page for a custom firmware')\r
+               button = self.AddButton('Goto this page for a custom firmware')\r
                button.Bind(wx.EVT_BUTTON, self.OnUrlClick)\r
-               self.GetSizer().Add(button, 0)\r
        \r
        def AllowNext(self):\r
                return False\r
@@ -299,12 +303,51 @@ class UltimakerCalibrateStepsPerEPage(InfoPage):
                self.AddText("First remove any filament from your machine.")\r
                self.AddText("Next put in your filament so the tip is aligned with the\ntop of the extruder drive.")\r
                self.AddText("We'll push the filament 100mm")\r
-               self.AddText("[BUTTON:PUSH 100mm]")\r
+               self.extrudeButton = self.AddButton("Extrude 100mm filament")\r
                self.AddText("Now measure the amount of extruded filament:\n(this can be more or less then 100mm)")\r
-               self.AddText("[INPUT:MEASUREMENT][BUTTON:SAVE]")\r
+               p = wx.Panel(self)\r
+               p.SetSizer(wx.BoxSizer(wx.HORIZONTAL))\r
+               self.lengthInput = wx.TextCtrl(p, -1, '100')\r
+               p.GetSizer().Add(self.lengthInput, 0, wx.RIGHT, 8)\r
+               self.saveLengthButton = wx.Button(p, -1, 'Save')\r
+               p.GetSizer().Add(self.saveLengthButton, 0)\r
+               self.GetSizer().Add(p, 0, wx.LEFT, 5)\r
                self.AddText("This results in the following steps per E:")\r
-               self.AddText("[INPUT:E_RESULT]")\r
+               self.stepsPerEInput = wx.TextCtrl(self, -1, settings.getPreference('steps_per_e', '865.888'))\r
+               self.GetSizer().Add(self.stepsPerEInput, 0, wx.LEFT, 5)\r
                self.AddText("You can repeat these steps to get better calibration.")\r
+               \r
+               self.saveLengthButton.Bind(wx.EVT_BUTTON, self.OnSaveLengthClick)\r
+               self.extrudeButton.Bind(wx.EVT_BUTTON, self.OnExtrudeClick)\r
+       \r
+       def OnSaveLengthClick(self, e):\r
+               currentEValue = float(self.stepsPerEInput.GetValue())\r
+               realExtrudeLength = float(self.lengthInput.GetValue())\r
+               newEValue = currentEValue * 100 / realExtrudeLength\r
+               self.stepsPerEInput.SetValue(str(newEValue))\r
+               self.lengthInput.SetValue("100")\r
+       \r
+       def OnExtrudeClick(self, e):\r
+               threading.Thread(target=self.OnRun).start()\r
+\r
+       def OnRun(self):\r
+               self.comm = machineCom.MachineCom()\r
+               self.sendGCommand('M302') #Disable cold extrusion protection\r
+               self.sendGCommand("G92 E0");\r
+               self.sendGCommand("G1 E100 F300");\r
+               self.comm.close()\r
+       \r
+       def sendGCommand(self, cmd):\r
+               self.comm.sendCommand(cmd) #Disable cold extrusion protection\r
+               while True:\r
+                       line = self.comm.readline()\r
+                       if line == '':\r
+                               return\r
+                       if line.startswith('ok'):\r
+                               break\r
+       \r
+       def StoreData(self):\r
+               settings.putPreference('steps_per_e', self.stepsPerEInput.GetValue())\r
 \r
 class configWizard(wx.wizard.Wizard):\r
        def __init__(self):\r
index 2a0dd310f98476657161edf517e9576e5ca62f3b..25ac4c01a75fdd3cb1b5a02aa8c360e2c2062ca9 100644 (file)
@@ -32,6 +32,9 @@ class mainWindow(configBase.configWindowBase):
                
                menubar = wx.MenuBar()
                fileMenu = wx.Menu()
+               i = fileMenu.Append(-1, 'Load STL file...')
+               self.Bind(wx.EVT_MENU, self.OnLoadSTL, i)
+               fileMenu.AppendSeparator()
                i = fileMenu.Append(-1, 'Open Profile...')
                self.Bind(wx.EVT_MENU, self.OnLoadProfile, i)
                i = fileMenu.Append(-1, 'Save Profile...')
@@ -52,6 +55,9 @@ class mainWindow(configBase.configWindowBase):
                self.Bind(wx.EVT_MENU, self.OnDefaultMarlinFirmware, i)
                i = expertMenu.Append(-1, 'Install custom firmware')
                self.Bind(wx.EVT_MENU, self.OnCustomFirmware, i)
+               expertMenu.AppendSeparator()
+               i = expertMenu.Append(-1, 'ReRun first run wizard...')
+               self.Bind(wx.EVT_MENU, self.OnFirstRunWizard, i)
                menubar.Append(expertMenu, 'Expert')
                self.SetMenuBar(menubar)
                
@@ -93,7 +99,6 @@ class mainWindow(configBase.configWindowBase):
                validators.validFloat(c, 1.0)
                validators.warningAbove(c, 150.0, "It is highly unlikely that your machine can achieve a printing speed above 150mm/s")
                
-               #Printing temperature is a problem right now, as our start code depends on a heated head.
                configBase.TitleRow(right, "Temperature")
                c = configBase.SettingRow(right, "Printing temperature", 'print_temperature', '0', 'Temperature used for printing. Set at 0 to pre-heat yourself')
                validators.validFloat(c, 0.0, 340.0)
@@ -171,6 +176,8 @@ class mainWindow(configBase.configWindowBase):
                sliceButton = wx.Button(self, -1, 'Slice to GCode')
                self.Bind(wx.EVT_BUTTON, self.OnLoadSTL, loadButton)
                self.Bind(wx.EVT_BUTTON, self.OnSlice, sliceButton)
+               #Also bind double clicking the 3D preview to load an STL file.
+               self.preview3d.glCanvas.Bind(wx.EVT_LEFT_DCLICK, self.OnLoadSTL, self.preview3d.glCanvas)
 
                #Main sizer, to position the preview window, buttons and tab control
                sizer = wx.GridBagSizer()
@@ -230,6 +237,9 @@ class mainWindow(configBase.configWindowBase):
                        #For some reason my Ubuntu 10.10 crashes here.
                        machineCom.InstallFirmware(filename, settings.getPreference('serial_port', 'AUTO'))
 
+       def OnFirstRunWizard(self, e):
+               configWizard.configWizard()
+
        def OnLoadSTL(self, e):
                dlg=wx.FileDialog(self, "Open file to print", self.lastPath, style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST)
                dlg.SetWildcard("OBJ, STL files (*.stl;*.obj)|*.stl;*.obj")
@@ -281,4 +291,3 @@ class mainWindow(configBase.configWindowBase):
        def OnClose(self, e):
                settings.saveGlobalProfile(settings.getDefaultProfilePath())
                self.Destroy()
-
index a9e31128425bb9321c3cfa5c3bc680d0c7971bf1..9c8251dc768359804d4cdbefa45af8aefc9b343d 100644 (file)
@@ -47,9 +47,9 @@ class previewPanel(wx.Panel):
                self.transparentButton = wx.Button(self.toolbar, -1, "T", size=(21,21))\r
                self.toolbar.AddControl(self.transparentButton)\r
                self.Bind(wx.EVT_BUTTON, self.OnTransparentClick, self.transparentButton)\r
-               self.depthComplexityButton = wx.Button(self.toolbar, -1, "X-RAY", size=(21*2,21))\r
-               self.toolbar.AddControl(self.depthComplexityButton)\r
-               self.Bind(wx.EVT_BUTTON, self.OnDepthComplexityClick, self.depthComplexityButton)\r
+               self.XRayButton = wx.Button(self.toolbar, -1, "X-RAY", size=(21*2,21))\r
+               self.toolbar.AddControl(self.XRayButton)\r
+               self.Bind(wx.EVT_BUTTON, self.OnXRayClick, self.XRayButton)\r
                \r
                self.layerSpin = wx.SpinCtrl(self.toolbar, -1, '', size=(21*4,21), style=wx.SP_ARROW_KEYS)\r
                self.toolbar.AddControl(self.layerSpin)\r
@@ -131,7 +131,7 @@ class previewPanel(wx.Panel):
        \r
        def updateToolbar(self):\r
                self.transparentButton.Show(self.triangleMesh != None)\r
-               self.depthComplexityButton.Show(self.triangleMesh != None)\r
+               self.XRayButton.Show(self.triangleMesh != None)\r
                self.layerSpin.Show(self.gcode != None)\r
                if self.gcode != None:\r
                        self.layerSpin.SetRange(1, self.gcode.layerCount)\r
@@ -140,12 +140,12 @@ class previewPanel(wx.Panel):
        def OnTransparentClick(self, e):\r
                self.glCanvas.renderTransparent = not self.glCanvas.renderTransparent\r
                if self.glCanvas.renderTransparent:\r
-                       self.glCanvas.renderDepthComplexity = False\r
+                       self.glCanvas.renderXRay = False\r
                self.glCanvas.Refresh()\r
        \r
-       def OnDepthComplexityClick(self, e):\r
-               self.glCanvas.renderDepthComplexity = not self.glCanvas.renderDepthComplexity\r
-               if self.glCanvas.renderDepthComplexity:\r
+       def OnXRayClick(self, e):\r
+               self.glCanvas.renderXRay = not self.glCanvas.renderXRay\r
+               if self.glCanvas.renderXRay:\r
                        self.glCanvas.renderTransparent = False\r
                self.glCanvas.Refresh()\r
        \r
@@ -217,9 +217,9 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                self.fillLineWidth = 0.4\r
                self.view3D = True\r
                self.renderTransparent = False\r
-               self.renderDepthComplexity = False\r
+               self.renderXRay = False\r
                self.modelDisplayList = None\r
-\r
+       \r
        def OnMouseMotion(self,e):\r
                if e.Dragging() and e.LeftIsDown():\r
                        if self.view3D:\r
@@ -405,7 +405,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                                glBlendFunc(GL_ONE, GL_ONE)\r
                                glEnable(GL_LIGHTING)\r
                                glCallList(self.modelDisplayList)\r
-                       elif self.renderDepthComplexity:\r
+                       elif self.renderXRay:\r
                                glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)\r
                                glDisable(GL_DEPTH_TEST)\r
                                glEnable(GL_STENCIL_TEST);\r