Browse Source

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

Simon Edwards 7 years ago
parent
commit
e868b972b5

+ 18 - 2
plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py

@@ -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/")

+ 29 - 26
plugins/UM3NetworkPrinting/PrinterInfoBlock.qml

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