diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index 2aa6fb382e..0141e74ba4 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -41,6 +41,9 @@ class PrinterOutputDevice(QObject, OutputDevice): # # Signal to indicate that the hotend of the active printer on the remote changed. hotendIdChanged = pyqtSignal() + # Signal to indicate that the info text about the connection has changed. + connectionTextChanged = pyqtSignal() + def __init__(self, device_id, parent = None): super().__init__(device_id = device_id, parent = parent) @@ -65,11 +68,21 @@ class PrinterOutputDevice(QObject, OutputDevice): self._connection_state = ConnectionState.closed self._address = "" + self._connection_text = "" - @pyqtProperty(str, constant = True) + @pyqtProperty(str, notify = connectionTextChanged) def address(self): return self._address + def setConnectionText(self, connection_text): + if self._connection_text != connection_text: + self._connection_text = connection_text + self.connectionTextChanged.emit() + + @pyqtProperty(str, constant=True) + def connectionText(self): + return self._connection_text + def materialHotendChangedMessage(self, callback): Logger.log("w", "materialHotendChangedMessage needs to be implemented, returning 'Yes'") callback(QMessageBox.Yes) diff --git a/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py b/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py index 45c152ee2f..b13817d763 100644 --- a/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py @@ -69,6 +69,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self.setShortDescription(i18n_catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print over network")) self.setDescription(i18n_catalog.i18nc("@properties:tooltip", "Print over network")) + self.setConnectionText(i18n_catalog.i18nc("@info:status", "Connected over the network")) + self._printer_uuid_to_unique_name_mapping = {} self._finished_jobs = [] diff --git a/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py b/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py index 786b97d034..6b3675064d 100644 --- a/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py @@ -78,10 +78,16 @@ class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice): def _onAuthenticationStateChanged(self): # We only accept commands if we are authenticated. + self._setAcceptsCommands(self._authentication_state == AuthState.Authenticated) + if self._authentication_state == AuthState.Authenticated: - self._setAcceptsCommands(True) - else: - self._setAcceptsCommands(False) + self.setConnectionText(i18n_catalog.i18nc("@info:status", "Connected over the network.")) + elif self._authentication_state == AuthState.AuthenticationRequested: + self.setConnectionText(i18n_catalog.i18nc("@info:status", + "Connected over the network. Please approve the access request on the printer.")) + elif self._authentication_state == AuthState.AuthenticationDenied: + self.setConnectionText(i18n_catalog.i18nc("@info:status", "Connected over the network. No access to control the printer.")) + def _setupMessages(self): self._authentication_requested_message = Message(i18n_catalog.i18nc("@info:status", diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 6c03450a88..d372b54c38 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -80,6 +80,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._firmware_progress = 0 self._firmware_update_state = FirmwareUpdateState.idle + self.setConnectionText(catalog.i18nc("@info:status", "Connected via USB")) + # Queue for commands that need to be send. Used when command is sent when a print is active. self._command_queue = Queue()