Set some meta data before switching active stacks, fix manual added device pairing

This commit is contained in:
ChrisTerBeke 2019-10-01 19:31:35 +02:00
parent 609ceed140
commit c3d846440d
No known key found for this signature in database
GPG Key ID: A49F1AB9D7E0C263
3 changed files with 17 additions and 16 deletions

View File

@ -127,8 +127,8 @@ class CloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
if network_key.startswith(self.clusterData.host_name): if network_key.startswith(self.clusterData.host_name):
return True return True
# However, for manually added printers, the local IP address is used in lieu of a proper # However, for manually added printers, the local IP address is used in lieu of a proper
# network key, so check for that as well # network key, so check for that as well. It is in the format "manual:10.1.10.1".
if self.clusterData.host_internal_ip is not None and network_key in self.clusterData.host_internal_ip: if network_key.endswith(self.clusterData.host_internal_ip):
return True return True
return False return False

View File

@ -9,6 +9,7 @@ from UM.Logger import Logger # To log errors talking to the API.
from UM.Signal import Signal from UM.Signal import Signal
from cura.API import Account from cura.API import Account
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
from cura.Settings.CuraStackBuilder import CuraStackBuilder
from cura.Settings.GlobalStack import GlobalStack from cura.Settings.GlobalStack import GlobalStack
from .CloudApiClient import CloudApiClient from .CloudApiClient import CloudApiClient
@ -140,14 +141,12 @@ class CloudOutputDeviceManager:
if not device: if not device:
return return
# The newly added machine is automatically activated. # Create a new machine and activate it.
machine_manager = CuraApplication.getInstance().getMachineManager() # We do not use use MachineManager.addMachine here because we need to set the cluster ID before activating it.
machine_manager.addMachine(device.printerType, device.clusterData.friendly_name) new_machine = CuraStackBuilder.createMachine(device.name, device.printerType)
active_machine = CuraApplication.getInstance().getGlobalContainerStack() new_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key)
if not active_machine: CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId())
return self._connectToOutputDevice(device, new_machine)
active_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key)
self._connectToOutputDevice(device, active_machine)
## Callback for when the active machine was changed by the user or a new remote cluster was found. ## Callback for when the active machine was changed by the user or a new remote cluster was found.
def _connectToActiveMachine(self) -> None: def _connectToActiveMachine(self) -> None:

View File

@ -9,6 +9,7 @@ from UM.Signal import Signal
from UM.Version import Version from UM.Version import Version
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
from cura.Settings.CuraStackBuilder import CuraStackBuilder
from cura.Settings.GlobalStack import GlobalStack from cura.Settings.GlobalStack import GlobalStack
from .ZeroConfClient import ZeroConfClient from .ZeroConfClient import ZeroConfClient
@ -203,12 +204,13 @@ class LocalClusterOutputDeviceManager:
if device is None: if device is None:
return return
# The newly added machine is automatically activated. # Create a new machine and activate it.
CuraApplication.getInstance().getMachineManager().addMachine(device.printerType, device.name) # We do not use use MachineManager.addMachine here because we need to set the network key before activating it.
active_machine = CuraApplication.getInstance().getGlobalContainerStack() # If we do not do this the auto-pairing with the cloud-equivalent device will not work.
if not active_machine: new_machine = CuraStackBuilder.createMachine(device.name, device.printerType)
return new_machine.setMetaDataEntry(self.META_NETWORK_KEY, device.key)
self._connectToOutputDevice(device, active_machine) CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId())
self._connectToOutputDevice(device, new_machine)
self._showCloudFlowMessage(device) self._showCloudFlowMessage(device)
## Add an address to the stored preferences. ## Add an address to the stored preferences.