chiark / gitweb /
Add bed temperature control to printer interface. Only show when we get an bed temper...
[cura.git] / Cura / gui / printWindow.py
index 39686ba473ccb2b189ee35a4793fc0796d1141dd..5ecfcddd260fb0d531035fc5fb0460c2fb9508b5 100644 (file)
@@ -4,9 +4,9 @@ import __init__
 import wx, threading, re, subprocess, sys, os\r
 from wx.lib import buttons\r
 \r
-from gui import machineCom\r
 from gui import icon\r
 from gui import toolbarUtil\r
+from util import machineCom\r
 from util import profile\r
 from util import gcodeInterpreter\r
 \r
@@ -82,6 +82,7 @@ class printWindow(wx.Frame):
                self.sendList = []\r
                self.printIdx = None\r
                self.temp = None\r
+               self.bedTemp = None\r
                self.bufferLineCount = 4\r
                self.sendCnt = 0\r
 \r
@@ -109,6 +110,11 @@ class printWindow(wx.Frame):
                h = self.connectButton.GetSize().GetHeight()\r
                self.temperatureSelect = wx.SpinCtrl(self.panel, -1, '0', size=(21*3,21), style=wx.SP_ARROW_KEYS)\r
                self.temperatureSelect.SetRange(0, 400)\r
+               self.bedTemperatureLabel = wx.StaticText(self.panel, -1, "BedTemp:")\r
+               self.bedTemperatureSelect = wx.SpinCtrl(self.panel, -1, '0', size=(21*3,21), style=wx.SP_ARROW_KEYS)\r
+               self.bedTemperatureSelect.SetRange(0, 400)\r
+               self.bedTemperatureLabel.Show(False)\r
+               self.bedTemperatureSelect.Show(False)\r
                \r
                self.sizer.Add(self.connectButton, pos=(0,1))\r
                #self.sizer.Add(self.loadButton, pos=(1,1))\r
@@ -118,6 +124,8 @@ class printWindow(wx.Frame):
                \r
                self.sizer.Add(wx.StaticText(self.panel, -1, "Temp:"), pos=(0,3))\r
                self.sizer.Add(self.temperatureSelect, pos=(0,4))\r
+               self.sizer.Add(self.bedTemperatureLabel, pos=(0,5))\r
+               self.sizer.Add(self.bedTemperatureSelect, pos=(0,6))\r
                \r
                self.directControlPanel = wx.Panel(self.panel)\r
                self.sizer.Add(self.directControlPanel, pos=(1,3), span=(5,4))\r
@@ -162,6 +170,7 @@ class printWindow(wx.Frame):
                self.cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel)\r
                \r
                self.Bind(wx.EVT_SPINCTRL, self.OnTempChange, self.temperatureSelect)\r
+               self.Bind(wx.EVT_SPINCTRL, self.OnBedTempChange, self.bedTemperatureSelect)\r
                \r
                self.Layout()\r
                self.Fit()\r
@@ -195,6 +204,10 @@ class printWindow(wx.Frame):
                        self.progress.SetValue(self.printIdx)\r
                if self.temp != None:\r
                        status += 'Temp: %d\n' % (self.temp)\r
+               if self.bedTemp != None and self.bedTemp > 0:\r
+                       status += 'Bed Temp: %d\n' % (self.bedTemp)\r
+                       self.bedTemperatureLabel.Show(True)\r
+                       self.bedTemperatureSelect.Show(True)\r
                self.statsText.SetLabel(status.strip())\r
                self.Layout()\r
        \r
@@ -238,6 +251,9 @@ class printWindow(wx.Frame):
        def OnTempChange(self, e):\r
                self.sendCommand("M104 S%d" % (self.temperatureSelect.GetValue()))\r
 \r
+       def OnBedTempChange(self, e):\r
+               self.sendCommand("M140 S%d" % (self.bedTemperatureSelect.GetValue()))\r
+\r
        def LoadGCodeFile(self, filename):\r
                if self.printIdx != None:\r
                        return\r
@@ -289,6 +305,8 @@ class printWindow(wx.Frame):
                                wx.CallAfter(self.UpdateButtonStates)\r
                        if 'T:' in line:\r
                                self.temp = float(re.search("[0-9\.]*", line.split('T:')[1]).group(0))\r
+                               if 'B:' in line:\r
+                                       self.bedTemp = float(re.search("[0-9\.]*", line.split('B:')[1]).group(0))\r
                                wx.CallAfter(self.UpdateProgress)\r
                        if self.printIdx == None:\r
                                if line == '':  #When we have a communication "timeout" and we're not sending gcode, then read the temperature.\r