Implement the print job pause, resume and abort for Cura Connect

CL-455
This commit is contained in:
Simon Edwards 2017-09-28 13:09:44 +02:00
parent b7dd756427
commit e868b972b5
2 changed files with 47 additions and 28 deletions

View file

@ -97,8 +97,8 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
self._cluster_status_update_timer.setSingleShot(False) self._cluster_status_update_timer.setSingleShot(False)
self._cluster_status_update_timer.timeout.connect(self._requestClusterStatus) self._cluster_status_update_timer.timeout.connect(self._requestClusterStatus)
self._can_pause = False self._can_pause = True
self._can_abort = False self._can_abort = True
self._can_pre_heat_bed = False self._can_pre_heat_bed = False
self._cluster_size = int(properties.get(b"cluster_size", 0)) self._cluster_size = int(properties.get(b"cluster_size", 0))
@ -155,6 +155,22 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
super().close() super().close()
self._cluster_status_update_timer.stop() self._cluster_status_update_timer.stop()
def _setJobState(self, job_state):
if not self._selected_printer:
return
selected_printer_uuid = self._printers_dict[self._selected_printer["unique_name"]]["uuid"]
if selected_printer_uuid not in self._print_job_by_printer_uuid:
return
print_job_uuid = self._print_job_by_printer_uuid[selected_printer_uuid]["uuid"]
url = QUrl(self._api_base_uri + "print_jobs/" + print_job_uuid + "/action")
put_request = QNetworkRequest(url)
put_request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
data = '{"action": "' + job_state + '"}'
self._manager.put(put_request, data.encode())
def _requestClusterStatus(self): def _requestClusterStatus(self):
# TODO: Handle timeout. We probably want to know if the cluster is still reachable or not. # TODO: Handle timeout. We probably want to know if the cluster is still reachable or not.
url = QUrl(self._api_base_uri + "print_jobs/") url = QUrl(self._api_base_uri + "print_jobs/")

View file

@ -234,33 +234,36 @@ Rectangle
if(printJob != null) if(printJob != null)
{ {
if(printJob.status == "printing" || printJob.status == "post_print") switch (printJob.status)
{ {
return catalog.i18nc("@label:status", "Printing") case "printing":
} case "post_print":
else if(printJob.status == "wait_for_configuration") return catalog.i18nc("@label:status", "Printing")
{ case "wait_for_configuration":
return catalog.i18nc("@label:status", "Reserved") return catalog.i18nc("@label:status", "Reserved")
} case "wait_cleanup":
else if(printJob.status == "wait_cleanup") return catalog.i18nc("@label:status", "Finished")
{ case "pre_print":
return catalog.i18nc("@label:status", "Finished") case "sent_to_printer":
} return catalog.i18nc("@label", "Preparing to print")
else if (printJob.status == "pre_print" || printJob.status == "sent_to_printer") case "queued":
{ if (printJob.configuration_changes_required != null && printJob.configuration_changes_required.length !== 0)
return catalog.i18nc("@label", "Preparing to print") {
} return catalog.i18nc("@label:status", "Action required");
else if (printJob.configuration_changes_required != undefined && printJob.status == "queued") }
{ else
return catalog.i18nc("@label:status", "Action required") {
} return "";
else if (printJob.Status == "aborted") }
{ case "pausing":
return catalog.i18nc("@label:status", "Print aborted") case "paused":
} return catalog.i18nc("@label:status", "Paused");
else case "resuming":
{ return catalog.i18nc("@label:status", "Resuming");
return ""; case "aborted":
return catalog.i18nc("@label:status", "Print aborted");
default:
return "";
} }
} }
return catalog.i18nc("@label:status", "Available"); return catalog.i18nc("@label:status", "Available");