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.timeout.connect(self._requestClusterStatus)
self._can_pause = False
self._can_abort = False
self._can_pause = True
self._can_abort = True
self._can_pre_heat_bed = False
self._cluster_size = int(properties.get(b"cluster_size", 0))
@ -155,6 +155,22 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
super().close()
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):
# TODO: Handle timeout. We probably want to know if the cluster is still reachable or not.
url = QUrl(self._api_base_uri + "print_jobs/")

View file

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