From fda889d91263c6c381334e4f7a6d1bbb687a8e3f Mon Sep 17 00:00:00 2001 From: Youness Alaoui Date: Fri, 22 May 2015 17:50:36 -0400 Subject: [PATCH] Fix behavior of isPrinting, which should be False when in Paused state --- Cura/gui/printWindow.py | 42 ++++++++++++------- .../printerConnection/serialConnection.py | 4 +- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index c5a73f42..387d1602 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -253,7 +253,7 @@ class printWindowPlugin(wx.Frame): def OnClose(self, e): if self._printerConnection.hasActiveConnection(): - if self._printerConnection.isPrinting(): + if self._printerConnection.isPrinting() or self._printerConnection.isPaused(): pass #TODO: Give warning that the close will kill the print. self._printerConnection.closeActiveConnection() self._printerConnection.removeCallback(self._doPrinterConnectionUpdate) @@ -300,21 +300,28 @@ class printWindowPlugin(wx.Frame): for button in self._buttonList: if button.command == self.script_connect: button.Show(self._printerConnection.hasActiveConnection()) - button.Enable(not self._printerConnection.isActiveConnectionOpen() and not self._printerConnection.isActiveConnectionOpening()) + button.Enable(not self._printerConnection.isActiveConnectionOpen() and \ + not self._printerConnection.isActiveConnectionOpening()) elif button.command == self.script_pausePrint: button.Show(self._printerConnection.hasPause()) - if not self._printerConnection.hasActiveConnection() or self._printerConnection.isActiveConnectionOpen(): - button.Enable(self._printerConnection.isPrinting() or self._printerConnection.isPaused()) + if not self._printerConnection.hasActiveConnection() or \ + self._printerConnection.isActiveConnectionOpen(): + button.Enable(self._printerConnection.isPrinting() or \ + self._printerConnection.isPaused()) else: button.Enable(False) elif button.command == self.script_startPrint: - if not self._printerConnection.hasActiveConnection() or self._printerConnection.isActiveConnectionOpen(): - button.Enable(not self._printerConnection.isPrinting()) + if not self._printerConnection.hasActiveConnection() or \ + self._printerConnection.isActiveConnectionOpen(): + button.Enable(not self._printerConnection.isPrinting() and \ + not self._printerConnection.isPaused()) else: button.Enable(False) elif button.command == self.script_cancelPrint: - if not self._printerConnection.hasActiveConnection() or self._printerConnection.isActiveConnectionOpen(): - button.Enable(self._printerConnection.isPrinting()) + if not self._printerConnection.hasActiveConnection() or \ + self._printerConnection.isActiveConnectionOpen(): + button.Enable(self._printerConnection.isPrinting() or \ + self._printerConnection.isPaused()) else: button.Enable(False) elif button.command == self.script_showErrorLog: @@ -344,8 +351,9 @@ class printWindowPlugin(wx.Frame): self._addTermLog('< %s\n' % (extraInfo)) self._updateButtonStates() + isPrinting = connection.isPrinting() or connection.isPaused() if self._progressBar is not None: - if connection.isPrinting(): + if isPrinting: self._progressBar.SetValue(connection.getPrintProgress() * 1000) else: self._progressBar.SetValue(0) @@ -359,8 +367,8 @@ class printWindowPlugin(wx.Frame): self._infoText.SetLabel(info) else: self.SetTitle(info.replace('\n', ', ')) - if connection.isPrinting() != self._isPrinting: - self._isPrinting = connection.isPrinting() + if isPrinting != self._isPrinting: + self._isPrinting = isPrinting preventComputerFromSleeping(self, self._isPrinting) class printWindowBasic(wx.Frame): @@ -450,7 +458,7 @@ class printWindowBasic(wx.Frame): def OnClose(self, e): if self._printerConnection.hasActiveConnection(): - if self._printerConnection.isPrinting(): + if self._printerConnection.isPrinting() or self._printerConnection.isPaused(): pass #TODO: Give warning that the close will kill the print. self._printerConnection.closeActiveConnection() self._printerConnection.removeCallback(self._doPrinterConnectionUpdate) @@ -491,7 +499,8 @@ class printWindowBasic(wx.Frame): self._addTermLog('< %s\n' % (extraInfo)) self._updateButtonStates() - if connection.isPrinting(): + isPrinting = connection.isPrinting() or connection.isPaused() + if isPrinting: self.progress.SetValue(connection.getPrintProgress() * 1000) else: self.progress.SetValue(0) @@ -503,8 +512,8 @@ class printWindowBasic(wx.Frame): info += ' Bed: %d' % (self._printerConnection.getBedTemperature()) info += '\n\n' self.statsText.SetLabel(info) - if connection.isPrinting() != self._isPrinting: - self._isPrinting = connection.isPrinting() + if isPrinting != self._isPrinting: + self._isPrinting = isPrinting preventComputerFromSleeping(self, self._isPrinting) @@ -519,7 +528,8 @@ class printWindowBasic(wx.Frame): self.connectButton.Enable(not self._printerConnection.isActiveConnectionOpen() and not self._printerConnection.isActiveConnectionOpening()) self.pauseButton.Show(self._printerConnection.hasPause()) if not self._printerConnection.hasActiveConnection() or self._printerConnection.isActiveConnectionOpen(): - self.printButton.Enable(not self._printerConnection.isPrinting()) + self.printButton.Enable(not self._printerConnection.isPrinting() and \ + not self._printerConnection.isPaused()) self.pauseButton.Enable(self._printerConnection.isPrinting()) self.cancelButton.Enable(self._printerConnection.isPrinting()) else: diff --git a/Cura/util/printerConnection/serialConnection.py b/Cura/util/printerConnection/serialConnection.py index 6f5d1a8d..2c8d8292 100644 --- a/Cura/util/printerConnection/serialConnection.py +++ b/Cura/util/printerConnection/serialConnection.py @@ -103,7 +103,7 @@ class serialConnection(printerConnectionBase.printerConnectionBase): self._printProgress = 0 def isPrinting(self): - return self._commState == machineCom.MachineCom.STATE_PRINTING or self.isPaused() + return self._commState == machineCom.MachineCom.STATE_PRINTING #Returns true if we have the ability to pause the file printing. def hasPause(self): @@ -114,7 +114,7 @@ class serialConnection(printerConnectionBase.printerConnectionBase): #Pause or unpause the printing depending on the value, if supported. def pause(self, value): - if not self.isPrinting() or self._process is None: + if not (self.isPrinting() or self.isPaused) or self._process is None: return self._process.stdin.write('PAUSE\n' if value else "RESUME\n") -- 2.30.2