diff --git a/cura/Machines/ContainerTree.py b/cura/Machines/ContainerTree.py index 30c9b8f90d..ebb957b5f7 100644 --- a/cura/Machines/ContainerTree.py +++ b/cura/Machines/ContainerTree.py @@ -1,6 +1,9 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from UM.Settings.ContainerRegistry import ContainerRegistry # To listen to containers being added. +from UM.Settings.DefinitionContainer import DefinitionContainer +from UM.Settings.Interfaces import ContainerInterface from cura.Machines.MachineNode import MachineNode from typing import Dict @@ -12,4 +15,15 @@ from typing import Dict # there will be one machine node here. class ContainerTree: def __init__(self) -> None: - self.machines = {} # type: Dict[str, MachineNode] # Mapping from definition ID to machine nodes. \ No newline at end of file + self.machines = {} # type: Dict[str, MachineNode] # Mapping from definition ID to machine nodes. + ContainerRegistry.getInstance().containerAdded.connect(self.machineAdded) + + ## When a printer gets added, we need to build up the tree for that container. + def machineAdded(self, definition_container: ContainerInterface): + if not isinstance(definition_container, DefinitionContainer): + return # Not our concern. + definition_id = definition_container.getId() + if definition_id in self.machines: + return # Already have this definition ID. + + self.machines[definition_id] = MachineNode(definition_id) \ No newline at end of file