Add the option to show the machine log in case of an error,, also make the printer interface window larger by default.

master
daid303 2012-10-01 13:47:16 +02:00
parent f4f4c13a21
commit 2ade97783a
3 changed files with 44 additions and 6 deletions

View 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")
boxsizer.Add(self.statsText, flag=wx.LEFT, border=5)
self.sizer.Add(boxsizer, pos=(0,0), span=(5,1), flag=wx.EXPAND)
self.sizer.Add(boxsizer, pos=(0,0), span=(6,1), flag=wx.EXPAND)
self.connectButton = wx.Button(self.panel, -1, 'Connect')
#self.loadButton = wx.Button(self.panel, -1, 'Load GCode')
self.printButton = wx.Button(self.panel, -1, 'Print GCode')
self.pauseButton = wx.Button(self.panel, -1, 'Pause')
self.cancelButton = wx.Button(self.panel, -1, 'Cancel print')
self.machineLogButton = wx.Button(self.panel, -1, 'Error log')
self.progress = wx.Gauge(self.panel, -1)
self.sizer.Add(self.connectButton, pos=(0,1))
@ -128,10 +129,11 @@ class printWindow(wx.Frame):
self.sizer.Add(self.printButton, pos=(2,1))
self.sizer.Add(self.pauseButton, pos=(3,1))
self.sizer.Add(self.cancelButton, pos=(4,1))
self.sizer.Add(self.progress, pos=(5,0), span=(1,2), flag=wx.EXPAND)
self.sizer.Add(self.machineLogButton, pos=(5,1))
self.sizer.Add(self.progress, pos=(6,0), span=(1,2), flag=wx.EXPAND)
nb = wx.Notebook(self.panel)
self.sizer.Add(nb, pos=(0,3), span=(7,4), flag=wx.EXPAND)
self.sizer.Add(nb, pos=(0,3), span=(6,4), flag=wx.EXPAND)
self.temperaturePanel = wx.Panel(nb)
sizer = wx.GridBagSizer(2, 2)
@ -153,7 +155,7 @@ class printWindow(wx.Frame):
sizer.Add(self.bedTemperatureSelect, pos=(1,1))
sizer.Add(self.temperatureGraph, pos=(2,0), span=(1,2), flag=wx.EXPAND)
sizer.AddGrowableRow(2)
sizer.AddGrowableCol(0)
sizer.AddGrowableCol(1)
nb.AddPage(self.temperaturePanel, 'Temp')
@ -270,6 +272,7 @@ class printWindow(wx.Frame):
self.printButton.Bind(wx.EVT_BUTTON, self.OnPrint)
self.pauseButton.Bind(wx.EVT_BUTTON, self.OnPause)
self.cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel)
self.machineLogButton.Bind(wx.EVT_BUTTON, self.OnMachineLog)
self.Bind(wx.EVT_SPINCTRL, self.OnTempChange, self.temperatureSelect)
self.Bind(wx.EVT_SPINCTRL, self.OnBedTempChange, self.bedTemperatureSelect)
@ -284,6 +287,8 @@ class printWindow(wx.Frame):
self.Layout()
self.Fit()
self.Centre()
self.statsText.SetMinSize(self.statsText.GetSize())
self.UpdateButtonStates()
#self.UpdateProgress()
@ -324,6 +329,7 @@ class printWindow(wx.Frame):
self.temperatureSelect.Enable(self.machineCom != None and self.machineCom.isOperational())
self.bedTemperatureSelect.Enable(self.machineCom != None and self.machineCom.isOperational())
self.directControlPanel.Enable(self.machineCom != None and self.machineCom.isOperational())
self.machineLogButton.Show(self.machineCom != None and self.machineCom.isError())
def UpdateProgress(self):
status = ""
@ -391,6 +397,9 @@ class printWindow(wx.Frame):
else:
self.machineCom.setPause(True)
def OnMachineLog(self, e):
LogWindow('\n'.join(self.machineCom.getLog()))
def OnClose(self, e):
global printWindowHandle
printWindowHandle = None
@ -520,6 +529,7 @@ class temperatureGraph(wx.Panel):
self.points = []
self.backBuffer = None
self.addPoint(0,0,0,0)
self.SetMinSize((320,200))
def OnEraseBackground(self, e):
pass
@ -546,12 +556,22 @@ class temperatureGraph(wx.Panel):
bt0 = 0
tSP0 = 0
btSP0 = 0
bgLinePen = wx.Pen('#A0A0A0')
tempPen = wx.Pen('#FF4040')
tempSPPen = wx.Pen('#FFA0A0')
tempPenBG = wx.Pen('#FFD0D0')
bedTempPen = wx.Pen('#4040FF')
bedTempSPPen = wx.Pen('#A0A0FF')
bedTempPenBG = wx.Pen('#D0D0FF')
for x in xrange(w, 0, -30):
dc.SetPen(bgLinePen)
dc.DrawLine(x, 0, x, h)
for y in xrange(h-1, 0, -h * 50 / 300):
dc.SetPen(bgLinePen)
dc.DrawLine(0, y, w, y)
dc.DrawLine(0, 0, w, 0)
dc.DrawLine(0, 0, 0, h)
for temp, tempSP, bedTemp, bedTempSP, t in self.points:
x1 = int(w - (now - t))
for x in xrange(x0, x1 + 1):
@ -592,3 +612,10 @@ class temperatureGraph(wx.Panel):
self.points.append((temp, tempSP, bedTemp, bedTempSP, time.time()))
wx.CallAfter(self.UpdateDrawing)
class LogWindow(wx.Frame):
def __init__(self, logText):
super(LogWindow, self).__init__(None, title="Machine log")
self.textBox = wx.TextCtrl(self, -1, logText, style=wx.TE_MULTILINE|wx.TE_DONTWRAP|wx.TE_READONLY)
self.SetSize((400,300))
self.Centre()
self.Show(True)

View 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:

View File

@ -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"