CURA-4398 block print over network when another upload is already in progress

This commit is contained in:
ChrisTerBeke 2017-10-04 11:06:20 +02:00
parent 15d945a207
commit 3328184fbc

View file

@ -49,7 +49,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
self._api_prefix = api_prefix
self._gcode = None
self._print_finished = True # _print_finsihed == False means we're halfway in a print
self._print_finished = True # _print_finished == False means we're halfway in a print
self._write_finished = True # _write_finished == False means we're currently sending a G-code file
self._use_gzip = True # Should we use g-zip compression before sending the data?
@ -649,7 +650,16 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
# \param filter_by_machine Whether to filter MIME types by machine. This
# is ignored.
# \param kwargs Keyword arguments.
def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None, **kwargs):
def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs):
# Check if we're already writing
if not self._write_finished:
self._error_message = Message(
i18n_catalog.i18nc("@info:status",
"Sending new jobs (temporarily) blocked, still sending the previous print job."))
self._error_message.show()
return
if self._printer_state not in ["idle", ""]:
self._error_message = Message(
i18n_catalog.i18nc("@info:status", "Unable to start a new print job, printer is busy. Current printer status is %s.") % self._printer_state,
@ -749,6 +759,9 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
)
return
# Indicate we're starting a new write action, is set back to True in the startPrint() method
self._write_finished = False
self.startPrint()
def _configurationMismatchMessageCallback(self, button):
@ -908,6 +921,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
## Post request + data
self._post_reply = self._manager.post(self._post_request, self._post_multi_part)
self._post_reply.uploadProgress.connect(self._onUploadProgress)
self._post_reply.finished.connect(self._onUploadFinished) # used to unblock new write actions
except IOError:
self._progress_message.hide()
@ -1218,6 +1232,10 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
self._progress_message.setProgress(0)
self._progress_message.hide()
## Allow new write actions (uploads) again when uploading is finished.
def _onUploadFinished(self):
self._write_finished = True
## Let the user decide if the hotends and/or material should be synced with the printer
def materialHotendChangedMessage(self, callback):
Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Sync with your printer"),