diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index e8e33e8435..2a14b1d6dc 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/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/") diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index 7fce36b6e3..e548c9e9d7 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -234,33 +234,36 @@ Rectangle if(printJob != null) { - if(printJob.status == "printing" || printJob.status == "post_print") + switch (printJob.status) { - 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 - { - 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");