diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py index 4c32a1c19c..9b25de7f42 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py @@ -45,6 +45,8 @@ class DiscoverUM3Action(MachineAction): @pyqtSlot() def reset(self): Logger.log("d", "Reset the list of found devices.") + if self._network_plugin: + self._network_plugin.resetLastManualDevice() self.discoveredDevicesChanged.emit() @pyqtSlot() @@ -131,7 +133,7 @@ class DiscoverUM3Action(MachineAction): self._network_plugin.reCheckConnections() @pyqtSlot(result = str) - def getStoredKey(self): + def getStoredKey(self) -> str: global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: meta_data = global_container_stack.getMetaData() @@ -140,6 +142,12 @@ class DiscoverUM3Action(MachineAction): return "" + @pyqtSlot(result = str) + def getLastManualEntryKey(self) -> str: + if self._network_plugin: + return self._network_plugin.getLastManualDevice() + return "" + @pyqtSlot(str, result = bool) def existsKey(self, key) -> bool: return Application.getInstance().getMachineManager().existNetworkInstances(network_key = key) diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index 1cf2074979..3662fe291e 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -158,7 +158,10 @@ Cura.MachineAction model: manager.foundDevices onModelChanged: { - var selectedKey = manager.getStoredKey(); + var selectedKey = manager.getLastManualEntryKey() + // If there is no last manual entry key, then we select the stored key (if any) + if (selectedKey == "") + selectedKey = manager.getStoredKey() for(var i = 0; i < model.length; i++) { if(model[i].key == selectedKey) { diff --git a/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py b/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py index 74a4b044ff..bf5ac96197 100644 --- a/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py @@ -60,6 +60,9 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): self._manual_instances = self._preferences.getValue("um3networkprinting/manual_instances").split(",") + # Store the last manual entry key + self._last_manual_entry_key = "" # type: str + # The zero-conf service changed requests are handled in a separate thread, so we can re-schedule the requests # which fail to get detailed service info. # Any new or re-scheduled requests will be appended to the request queue, and the handling thread will pick @@ -72,6 +75,12 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): def getDiscoveredDevices(self): return self._discovered_devices + def getLastManualDevice(self) -> str: + return self._last_manual_entry_key + + def resetLastManualDevice(self) -> None: + self._last_manual_entry_key = "" + ## Start looking for devices on network. def start(self): self.startDiscovery() @@ -93,6 +102,7 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): for address in self._manual_instances: if address: self.addManualDevice(address) + self.resetLastManualDevice() def reCheckConnections(self): active_machine = Application.getInstance().getGlobalContainerStack() @@ -136,6 +146,7 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): if not address: address = self._discovered_devices[key].ipAddress self._onRemoveDevice(key) + self.resetLastManualDevice() if address in self._manual_instances: self._manual_instances.remove(address) @@ -157,6 +168,7 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): if instance_name not in self._discovered_devices: # Add a preliminary printer instance self._onAddDevice(instance_name, address, properties) + self._last_manual_entry_key = instance_name self._checkManualDevice(address)