mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
CURA-4398 block print over network when another upload is already in progress
This commit is contained in:
parent
15d945a207
commit
3328184fbc
1 changed files with 20 additions and 2 deletions
|
@ -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"),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue