chiark / gitweb /
Open the serial port in the thread, so it no longer blocks the GUI during auto-detect...
[cura.git] / Cura / gui / printWindow.py
index 83642b18dc4a81221ba72bfed01d31f2cb6532bf..9cf502893f95e73a5d3b0eeff6870987409eaca2 100644 (file)
@@ -328,7 +328,7 @@ class printWindow(wx.Frame):
                self.cancelButton.Enable(self.machineCom != None and (self.machineCom.isPrinting() or self.machineCom.isPaused()))\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.directControlPanel.Enable(self.machineCom != None and self.machineCom.isOperational() and not self.machineCom.isPrinting())\r
                self.machineLogButton.Show(self.machineCom != None and self.machineCom.isError())\r
        \r
        def UpdateProgress(self):\r
@@ -349,8 +349,9 @@ class printWindow(wx.Frame):
                        printTime = self.machineCom.getPrintTime() / 60\r
                        printTimeTotal = printTime * len(self.gcodeList) / self.machineCom.getPrintPos()\r
                        printTimeLeft = printTimeTotal - printTime\r
-                       status += 'Line: %d/%d\n' % (self.machineCom.getPrintPos(), len(self.gcodeList))\r
-                       status += 'Height: %f\n' % (self.currentZ)\r
+                       status += 'Line: %d/%d %d%%\n' % (self.machineCom.getPrintPos(), len(self.gcodeList), self.machineCom.getPrintPos() * 100 / len(self.gcodeList))\r
+                       if self.currentZ > 0:\r
+                               status += 'Height: %0.1f\n' % (self.currentZ)\r
                        status += 'Print time: %02d:%02d\n' % (int(printTime / 60), int(printTime % 60))\r
                        status += 'Print time left: %02d:%02d\n' % (int(printTimeLeft / 60), int(printTimeLeft % 60))\r
                        self.progress.SetValue(self.machineCom.getPrintPos())\r
@@ -558,11 +559,6 @@ class temperatureGraph(wx.Panel):
                dc.SelectObject(self.backBuffer)\r
                dc.Clear()\r
                w, h = self.GetSizeTuple()\r
-               x0 = 0\r
-               t0 = 0\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
@@ -570,6 +566,28 @@ class temperatureGraph(wx.Panel):
                bedTempPen = wx.Pen('#4040FF')\r
                bedTempSPPen = wx.Pen('#A0A0FF')\r
                bedTempPenBG = wx.Pen('#D0D0FF')\r
+\r
+               x0 = 0\r
+               t0 = 0\r
+               bt0 = 0\r
+               tSP0 = 0\r
+               btSP0 = 0\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
+                               t = float(x - x0) / float(x1 - x0 + 1) * (temp - t0) + t0\r
+                               bt = float(x - x0) / float(x1 - x0 + 1) * (bedTemp - bt0) + bt0\r
+                               dc.SetPen(tempPenBG)\r
+                               dc.DrawLine(x, h, x, h - (t * h / 300))\r
+                               dc.SetPen(bedTempPenBG)\r
+                               dc.DrawLine(x, h, x, h - (bt * h / 300))\r
+                       t0 = temp\r
+                       bt0 = bedTemp\r
+                       tSP0 = tempSP\r
+                       btSP0 = bedTempSP\r
+                       x0 = x1 + 1\r
+\r
+               #Draw the grid\r
                for x in xrange(w, 0, -30):\r
                        dc.SetPen(bgLinePen)\r
                        dc.DrawLine(x, 0, x, h)\r
@@ -579,6 +597,11 @@ class temperatureGraph(wx.Panel):
                dc.DrawLine(0, 0, w, 0)\r
                dc.DrawLine(0, 0, 0, h)\r
                \r
+               x0 = 0\r
+               t0 = 0\r
+               bt0 = 0\r
+               tSP0 = 0\r
+               btSP0 = 0\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
@@ -586,10 +609,6 @@ class temperatureGraph(wx.Panel):
                                bt = float(x - x0) / float(x1 - x0 + 1) * (bedTemp - bt0) + bt0\r
                                tSP = float(x - x0) / float(x1 - x0 + 1) * (tempSP - tSP0) + tSP0\r
                                btSP = float(x - x0) / float(x1 - x0 + 1) * (bedTempSP - btSP0) + btSP0\r
-                               dc.SetPen(tempPenBG)\r
-                               dc.DrawLine(x, h, x, h - (t * h / 300))\r
-                               dc.SetPen(bedTempPenBG)\r
-                               dc.DrawLine(x, h, x, h - (bt * h / 300))\r
                                dc.SetPen(tempSPPen)\r
                                dc.DrawPoint(x, h - (tSP * h / 300))\r
                                dc.SetPen(bedTempSPPen)\r