diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 66ee7f9543..b5f8420b97 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -527,10 +527,15 @@ class MachineManager(QObject): @pyqtProperty(bool, notify = printerConnectedStatusChanged) def activeMachineHasRemoteConnection(self) -> bool: - if self._global_container_stack: - connection_type = self._global_container_stack.getMetaDataEntry("connection_type") - return connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value] - return False + return self.activeMachineHasActiveNetworkConnection or self.activeMachineHasActiveCloudConnection + # if self._global_container_stack: + # connection_type = self._global_container_stack.getMetaDataEntry("connection_type") + # return connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value] + # return False + + @pyqtProperty(bool, notify = printerConnectedStatusChanged) + def activeMachineIsGroup(self) -> bool: + return self._printer_output_devices and self._printer_output_devices[0].clusterSize > 1 @pyqtProperty(bool, notify = printerConnectedStatusChanged) def activeMachineHasActiveNetworkConnection(self) -> bool: diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py index af45f06394..c849ebfe4a 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py @@ -121,10 +121,11 @@ class CloudOutputDeviceManager: return device = next((c for c in self._remote_clusters.values() if c.matchesNetworkKey(local_network_key)), None) - if device: - active_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) - device.connect() + if not device: + return + active_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) + device.connect() Logger.log("i", "Found cluster %s with network key %s", device, local_network_key) ## Handles an API error received from the cloud. diff --git a/resources/qml/PrinterSelector/MachineSelector.qml b/resources/qml/PrinterSelector/MachineSelector.qml index 64cf3e6005..c39acb53e7 100644 --- a/resources/qml/PrinterSelector/MachineSelector.qml +++ b/resources/qml/PrinterSelector/MachineSelector.qml @@ -11,10 +11,9 @@ Cura.ExpandablePopup { id: machineSelector - property var outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null - property bool isPrinterConnected: Cura.MachineManager.printerConnected property bool isNetworkPrinter: Cura.MachineManager.activeMachineHasActiveNetworkConnection property bool isCloudPrinter: Cura.MachineManager.activeMachineHasActiveCloudConnection + property bool isGroup: Cura.MachineManager.activeMachineIsGroup contentPadding: UM.Theme.getSize("default_lining").width contentAlignment: Cura.ExpandablePopup.ContentAlignment.AlignLeft @@ -30,15 +29,13 @@ Cura.ExpandablePopup text: isNetworkPrinter ? Cura.MachineManager.activeMachineNetworkGroupName : Cura.MachineManager.activeMachineName source: { - if (isNetworkPrinter) - { - if (machineSelector.outputDevice != null && machineSelector.outputDevice.clusterSize > 1) - { - return UM.Theme.getIcon("printer_group") - } + if (isGroup) { + return UM.Theme.getIcon("printer_group") + } else if (isNetworkPrinter || isCloudPrinter) { return UM.Theme.getIcon("printer_single") + } else { + return "" } - return "" } font: UM.Theme.getFont("medium") iconColor: UM.Theme.getColor("machine_selector_printer_icon") @@ -53,12 +50,22 @@ Cura.ExpandablePopup leftMargin: UM.Theme.getSize("thick_margin").width } - source: machineSelector.isCloudPrinter ? UM.Theme.getIcon("printer_cloud_connected") : UM.Theme.getIcon("printer_connected") + source: + { + if (isNetworkPrinter) { + return UM.Theme.getIcon("printer_connected") + } else if (isCloudPrinter) { + return UM.Theme.getIcon("printer_cloud_connected") + } else { + return "" + } + } + width: UM.Theme.getSize("printer_status_icon").width height: UM.Theme.getSize("printer_status_icon").height color: UM.Theme.getColor("primary") - visible: isNetworkPrinter && isPrinterConnected + visible: isNetworkPrinter || isCloudPrinter // Make a themable circle in the background so we can change it in other themes Rectangle