chiark / gitweb /
Add the option to show the machine log in case of an error,, also make the printer...
authordaid303 <daid303@gmail.com>
Mon, 1 Oct 2012 11:47:16 +0000 (13:47 +0200)
committerdaid303 <daid303@gmail.com>
Mon, 1 Oct 2012 11:47:16 +0000 (13:47 +0200)
Cura/gui/printWindow.py
Cura/util/machineCom.py
package.sh

index f2be38ca8114b1ab08b372d0e1f7a3b5254f83b1..0261b6104092829ab6cf47cac1ec74e150967e21 100644 (file)
@@ -114,13 +114,14 @@ class printWindow(wx.Frame):
                self.statsText = wx.StaticText(self.panel, -1, "Filament: ####.##m #.##g\nPrint time: #####:##\nMachine state:\nDetecting baudrateXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")\r
                boxsizer.Add(self.statsText, flag=wx.LEFT, border=5)\r
                \r
-               self.sizer.Add(boxsizer, pos=(0,0), span=(5,1), flag=wx.EXPAND)\r
+               self.sizer.Add(boxsizer, pos=(0,0), span=(6,1), flag=wx.EXPAND)\r
                \r
                self.connectButton = wx.Button(self.panel, -1, 'Connect')\r
                #self.loadButton = wx.Button(self.panel, -1, 'Load GCode')\r
                self.printButton = wx.Button(self.panel, -1, 'Print GCode')\r
                self.pauseButton = wx.Button(self.panel, -1, 'Pause')\r
                self.cancelButton = wx.Button(self.panel, -1, 'Cancel print')\r
+               self.machineLogButton = wx.Button(self.panel, -1, 'Error log')\r
                self.progress = wx.Gauge(self.panel, -1)\r
                \r
                self.sizer.Add(self.connectButton, pos=(0,1))\r
@@ -128,10 +129,11 @@ class printWindow(wx.Frame):
                self.sizer.Add(self.printButton, pos=(2,1))\r
                self.sizer.Add(self.pauseButton, pos=(3,1))\r
                self.sizer.Add(self.cancelButton, pos=(4,1))\r
-               self.sizer.Add(self.progress, pos=(5,0), span=(1,2), flag=wx.EXPAND)\r
+               self.sizer.Add(self.machineLogButton, pos=(5,1))\r
+               self.sizer.Add(self.progress, pos=(6,0), span=(1,2), flag=wx.EXPAND)\r
 \r
                nb = wx.Notebook(self.panel)\r
-               self.sizer.Add(nb, pos=(0,3), span=(7,4), flag=wx.EXPAND)\r
+               self.sizer.Add(nb, pos=(0,3), span=(6,4), flag=wx.EXPAND)\r
                \r
                self.temperaturePanel = wx.Panel(nb)\r
                sizer = wx.GridBagSizer(2, 2)\r
@@ -153,7 +155,7 @@ class printWindow(wx.Frame):
                sizer.Add(self.bedTemperatureSelect, pos=(1,1))\r
                sizer.Add(self.temperatureGraph, pos=(2,0), span=(1,2), flag=wx.EXPAND)\r
                sizer.AddGrowableRow(2)\r
-               sizer.AddGrowableCol(0)\r
+               sizer.AddGrowableCol(1)\r
 \r
                nb.AddPage(self.temperaturePanel, 'Temp')\r
 \r
@@ -270,6 +272,7 @@ class printWindow(wx.Frame):
                self.printButton.Bind(wx.EVT_BUTTON, self.OnPrint)\r
                self.pauseButton.Bind(wx.EVT_BUTTON, self.OnPause)\r
                self.cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel)\r
+               self.machineLogButton.Bind(wx.EVT_BUTTON, self.OnMachineLog)\r
                \r
                self.Bind(wx.EVT_SPINCTRL, self.OnTempChange, self.temperatureSelect)\r
                self.Bind(wx.EVT_SPINCTRL, self.OnBedTempChange, self.bedTemperatureSelect)\r
@@ -284,6 +287,8 @@ class printWindow(wx.Frame):
                self.Layout()\r
                self.Fit()\r
                self.Centre()\r
+               \r
+               self.statsText.SetMinSize(self.statsText.GetSize())\r
 \r
                self.UpdateButtonStates()\r
                #self.UpdateProgress()\r
@@ -324,6 +329,7 @@ class printWindow(wx.Frame):
                self.temperatureSelect.Enable(self.machineCom != None and self.machineCom.isOperational())\r
                self.bedTemperatureSelect.Enable(self.machineCom != None and self.machineCom.isOperational())\r
                self.directControlPanel.Enable(self.machineCom != None and self.machineCom.isOperational())\r
+               self.machineLogButton.Show(self.machineCom != None and self.machineCom.isError())\r
        \r
        def UpdateProgress(self):\r
                status = ""\r
@@ -391,6 +397,9 @@ class printWindow(wx.Frame):
                else:\r
                        self.machineCom.setPause(True)\r
        \r
+       def OnMachineLog(self, e):\r
+               LogWindow('\n'.join(self.machineCom.getLog()))\r
+       \r
        def OnClose(self, e):\r
                global printWindowHandle\r
                printWindowHandle = None\r
@@ -520,6 +529,7 @@ class temperatureGraph(wx.Panel):
                self.points = []\r
                self.backBuffer = None\r
                self.addPoint(0,0,0,0)\r
+               self.SetMinSize((320,200))\r
        \r
        def OnEraseBackground(self, e):\r
                pass\r
@@ -546,12 +556,22 @@ class temperatureGraph(wx.Panel):
                bt0 = 0\r
                tSP0 = 0\r
                btSP0 = 0\r
+               bgLinePen = wx.Pen('#A0A0A0')\r
                tempPen = wx.Pen('#FF4040')\r
                tempSPPen = wx.Pen('#FFA0A0')\r
                tempPenBG = wx.Pen('#FFD0D0')\r
                bedTempPen = wx.Pen('#4040FF')\r
                bedTempSPPen = wx.Pen('#A0A0FF')\r
                bedTempPenBG = wx.Pen('#D0D0FF')\r
+               for x in xrange(w, 0, -30):\r
+                       dc.SetPen(bgLinePen)\r
+                       dc.DrawLine(x, 0, x, h)\r
+               for y in xrange(h-1, 0, -h * 50 / 300):\r
+                       dc.SetPen(bgLinePen)\r
+                       dc.DrawLine(0, y, w, y)\r
+               dc.DrawLine(0, 0, w, 0)\r
+               dc.DrawLine(0, 0, 0, h)\r
+               \r
                for temp, tempSP, bedTemp, bedTempSP, t in self.points:\r
                        x1 = int(w - (now - t))\r
                        for x in xrange(x0, x1 + 1):\r
@@ -592,3 +612,10 @@ class temperatureGraph(wx.Panel):
                self.points.append((temp, tempSP, bedTemp, bedTempSP, time.time()))\r
                wx.CallAfter(self.UpdateDrawing)\r
 \r
+class LogWindow(wx.Frame):\r
+       def __init__(self, logText):\r
+               super(LogWindow, self).__init__(None, title="Machine log")\r
+               self.textBox = wx.TextCtrl(self, -1, logText, style=wx.TE_MULTILINE|wx.TE_DONTWRAP|wx.TE_READONLY)\r
+               self.SetSize((400,300))\r
+               self.Centre()\r
+               self.Show(True)\r
index 971e88fb25524ca14bbced41ecff05e3cb3cdb93..a5f211d4d33ed13c4c0be3ddcf6970878f24bc0c 100644 (file)
@@ -226,6 +226,9 @@ class MachineCom(object):
        
        def isClosedOrError(self):
                return self._state == self.STATE_ERROR or self._state == self.STATE_CLOSED_WITH_ERROR or self._state == self.STATE_CLOSED
+
+       def isError(self):
+               return self._state == self.STATE_ERROR or self._state == self.STATE_CLOSED_WITH_ERROR
        
        def isOperational(self):
                return self._state == self.STATE_OPERATIONAL or self._state == self.STATE_PRINTING or self._state == self.STATE_PAUSED
@@ -245,6 +248,14 @@ class MachineCom(object):
        def getBedTemp(self):
                return self._bedTemp
        
+       def getLog(self):
+               ret = []
+               while not self._logQueue.empty():
+                       ret.append(self._logQueue.get())
+               for line in ret:
+                       self._logQueue.put(line, False)
+               return ret
+       
        def _monitor(self):
                timeout = time.time() + 5
                while True:
index 9a62875dae65c6c0732f9e9197106193cff76594..dc70e807173b2ab03f8de04ac59a876f57b09b74 100755 (executable)
@@ -191,13 +191,13 @@ if (( ${ARCHIVE_FOR_DISTRIBUTION} )); then
                        rm -rf scripts/win32/dist
                        ln -sf `pwd`/${TARGET_DIR} scripts/win32/dist
                        wine ~/.wine/drive_c/Program\ Files/NSIS/makensis.exe /DVERSION=${BUILD_NAME} scripts/win32/installer.nsi 
-                       mv scripts/win32/Cura-${BUILD_NAME}.exe ./
+                       mv scripts/win32/Cura_${BUILD_NAME}.exe ./
                fi
                if [ -f '/c/Program Files (x86)/NSIS/makensis.exe' ]; then
                        rm -rf scripts/win32/dist
                        mv `pwd`/${TARGET_DIR} scripts/win32/dist
                        '/c/Program Files (x86)/NSIS/makensis.exe' -DVERSION=${BUILD_NAME} 'scripts/win32/installer.nsi'
-                       mv scripts/win32/Cura-${BUILD_NAME}.exe ./
+                       mv scripts/win32/Cura_${BUILD_NAME}.exe ./
                fi
        else
                echo "Archiving to ${TARGET_DIR}.tar.gz"