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
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
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
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
self.Layout()\r
self.Fit()\r
self.Centre()\r
+ \r
+ self.statsText.SetMinSize(self.statsText.GetSize())\r
\r
self.UpdateButtonStates()\r
#self.UpdateProgress()\r
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
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
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
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
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