From 5a3e427450af9407d99632ee3b07fd55de635a7e Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 2 Oct 2017 14:20:41 +0200 Subject: [PATCH 1/5] CL-228 when adding a Cura Connect printer, do not ask authentication, it is always authenticated --- plugins/UM3NetworkPrinting/DiscoverUM3Action.qml | 2 +- .../NetworkClusterPrinterOutputDevice.py | 15 +++++++++++++++ plugins/UM3NetworkPrinting/UM3InfoComponents.qml | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index 5ea7d77d8a..b1964c6c06 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -389,4 +389,4 @@ Cura.MachineAction } ] } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index 94bd6bc9a3..b3cc42b110 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -44,6 +44,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte else: name = key + self._authentication_state = NetworkPrinterOutputDevice.AuthState.Authenticated # The printer is always authenticated self._plugin_path = plugin_path self.setName(name) @@ -110,6 +111,20 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte temporary_translation3 = i18n_catalog.i18n("{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate.") #When finished. temporary_translation4 = i18n_catalog.i18n("{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing.") #When configuration changed. + ## No authentication, so requestAuthentication should do exactly nothing + @pyqtSlot() + def requestAuthentication(self, message_id = None, action_id = "Retry"): + Logger.log("d", "requestAuthentication for Cura Connect - nothing to be done") + + def setAuthenticationState(self, auth_state): + self._authentication_state = NetworkPrinterOutputDevice.AuthState.Authenticated # The printer is always authenticated + + def _verifyAuthentication(self): + pass + + def _checkAuthentication(self): + Logger.log("d", "_checkAuthentication Cura Connect - nothing to be done") + @pyqtProperty(QObject, notify=selectedPrinterChanged) def controlItem(self): # TODO: Probably not the nicest way to do this. This needs to be done better at some point in time. diff --git a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml index a5ed944773..2c3902dcff 100644 --- a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml +++ b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml @@ -121,4 +121,4 @@ Item } UM.I18nCatalog{id: catalog; name:"cura"} -} \ No newline at end of file +} From 6d861c8a33e9a4bf2fe0782c7f0d0420db4022db Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 2 Oct 2017 15:41:07 +0200 Subject: [PATCH 2/5] CL-228 CL-229 more detailed printer status labels --- plugins/UM3NetworkPrinting/PrinterInfoBlock.qml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index e548c9e9d7..f262540450 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -266,7 +266,20 @@ Rectangle return ""; } } - return catalog.i18nc("@label:status", "Available"); + switch (printer.status) + { + case "pre_print": + return catalog.i18nc("@label", "Preparing to print") + case "printing": + return catalog.i18nc("@label:status", "Printing"); + case "idle": + return catalog.i18nc("@label:status", "Available"); + case "unreachable": // TODO: new string + case "maintenance": // TODO: new string + case "unknown": + default: + return catalog.i18nc("@label", "Unknown"); + } } elide: Text.ElideRight From 341b2b37185053e9f91ce6526b725188dfa8d497 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 2 Oct 2017 16:02:59 +0200 Subject: [PATCH 3/5] CL-228 CL-229 better fallback to printer status labels --- .../UM3NetworkPrinting/PrinterInfoBlock.qml | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index f262540450..e2f7c2b5df 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -37,6 +37,23 @@ Rectangle return Math.min(100, Math.round(printJob.time_elapsed / printJob.time_total * 100)) + "%"; } + function printerStatusText(printer) + { + switch (printer.status) + { + case "pre_print": + return catalog.i18nc("@label", "Preparing to print") + case "printing": + return catalog.i18nc("@label:status", "Printing"); + case "idle": + return catalog.i18nc("@label:status", "Available"); + case "unreachable": // TODO: new string + case "maintenance": // TODO: new string + case "unknown": + default: + return catalog.i18nc("@label", "Unknown"); + } + } id: printerDelegate property var printer @@ -232,7 +249,7 @@ Rectangle return catalog.i18nc("@label:status", "Disabled"); } - if(printJob != null) + if ((printJob != null) && ((printer.status === "pre_print") || (printer.status === "printing"))) { switch (printJob.status) { @@ -263,23 +280,10 @@ Rectangle case "aborted": return catalog.i18nc("@label:status", "Print aborted"); default: - return ""; + return printerStatusText(printer); } } - switch (printer.status) - { - case "pre_print": - return catalog.i18nc("@label", "Preparing to print") - case "printing": - return catalog.i18nc("@label:status", "Printing"); - case "idle": - return catalog.i18nc("@label:status", "Available"); - case "unreachable": // TODO: new string - case "maintenance": // TODO: new string - case "unknown": - default: - return catalog.i18nc("@label", "Unknown"); - } + return printerStatusText(printer); } elide: Text.ElideRight From b5b3f47e4dd6130cbacb1aa7023ad9230bcc558a Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Mon, 2 Oct 2017 17:05:39 +0200 Subject: [PATCH 4/5] Apply the @override decorator CL-228 --- .../NetworkClusterPrinterOutputDevice.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index 999bc15223..dbc9f12974 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -13,6 +13,7 @@ from PyQt5.QtGui import QDesktopServices from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply from PyQt5.QtQml import QQmlComponent, QQmlContext from UM.Application import Application +from UM.Decorators import override from UM.Logger import Logger from UM.Message import Message from UM.OutputDevice import OutputDeviceError @@ -114,15 +115,19 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte ## No authentication, so requestAuthentication should do exactly nothing @pyqtSlot() + @override(NetworkPrinterOutputDevice) def requestAuthentication(self, message_id = None, action_id = "Retry"): - Logger.log("d", "requestAuthentication for Cura Connect - nothing to be done") + pass # Cura Connect doesn't do any authorization + @override(NetworkPrinterOutputDevice) def setAuthenticationState(self, auth_state): self._authentication_state = NetworkPrinterOutputDevice.AuthState.Authenticated # The printer is always authenticated + @override(NetworkPrinterOutputDevice) def _verifyAuthentication(self): pass + @override(NetworkPrinterOutputDevice) def _checkAuthentication(self): Logger.log("d", "_checkAuthentication Cura Connect - nothing to be done") From 6dade567584156cc3e1f5520d202d2fd62275393 Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Mon, 2 Oct 2017 17:12:15 +0200 Subject: [PATCH 5/5] Unapply the @override decorator as it doesn't actually work CL-228 --- .../UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index dbc9f12974..c514a4b0df 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -115,19 +115,15 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte ## No authentication, so requestAuthentication should do exactly nothing @pyqtSlot() - @override(NetworkPrinterOutputDevice) def requestAuthentication(self, message_id = None, action_id = "Retry"): pass # Cura Connect doesn't do any authorization - @override(NetworkPrinterOutputDevice) def setAuthenticationState(self, auth_state): self._authentication_state = NetworkPrinterOutputDevice.AuthState.Authenticated # The printer is always authenticated - @override(NetworkPrinterOutputDevice) def _verifyAuthentication(self): pass - @override(NetworkPrinterOutputDevice) def _checkAuthentication(self): Logger.log("d", "_checkAuthentication Cura Connect - nothing to be done")