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