def __getitem__(self, definition_id: str) -> MachineNode: if definition_id not in self._machines: start_time = time.time() self._machines[definition_id] = MachineNode(definition_id) self._machines[definition_id].materialsChanged.connect(ContainerTree.getInstance().materialsChanged) Logger.log("d", "Adding container tree for {definition_id} took {duration} seconds.".format(definition_id = definition_id, duration = time.time() - start_time)) return self._machines[definition_id]
def createMachineNode(container_id, container_registry): with patch("cura.Machines.MachineNode.VariantNode" ): # We're not testing the variant node here, so patch it out. with patch("cura.Machines.MachineNode.QualityNode"): with patch( "UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): return MachineNode(container_id)
def empty_machine_node(): empty_container_registry = MagicMock() empty_container_registry.findContainersMetadata = MagicMock( return_value=[ metadata_dict ]) # Still contain the MachineNode's own metadata for the constructor. empty_container_registry.findInstanceContainersMetadata = MagicMock( return_value=[]) with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=empty_container_registry)): with patch("cura.Machines.MachineNode.MachineNode._loadAll", MagicMock()): return MachineNode("machine_1")
def empty_machine_node(): """Creates a machine node without anything underneath it. No sub-nodes. For testing stuff with machine nodes without testing _loadAll(). You'll need to add subnodes manually in your test. """ empty_container_registry = MagicMock() empty_container_registry.findContainersMetadata = MagicMock(return_value = [metadata_dict]) # Still contain the MachineNode's own metadata for the constructor. empty_container_registry.findInstanceContainersMetadata = MagicMock(return_value = []) with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = empty_container_registry)): with patch("cura.Machines.MachineNode.MachineNode._loadAll", MagicMock()): return MachineNode("machine_1")
def addMachineNodeByDefinitionId(self, definition_id: str) -> None: if definition_id in self.machines: return # Already have this definition ID. start_time = time.time() self.machines[definition_id] = MachineNode(definition_id) self.machines[definition_id].materialsChanged.connect( self.materialsChanged) Logger.log( "d", "Adding container tree for {definition_id} took {duration} seconds." .format(definition_id=definition_id, duration=time.time() - start_time))
def __getitem__(self, definition_id: str) -> MachineNode: """Returns a machine node for the specified definition ID. If the machine node wasn't loaded yet, this will load it lazily. :param definition_id: The definition to look for. :return: A machine node for that definition. """ if definition_id not in self._machines: start_time = time.time() self._machines[definition_id] = MachineNode(definition_id) self._machines[definition_id].materialsChanged.connect( ContainerTree.getInstance().materialsChanged) Logger.log( "d", "Adding container tree for {definition_id} took {duration} seconds." .format(definition_id=definition_id, duration=time.time() - start_time)) return self._machines[definition_id]
def _loadAll(self): Logger.log("i", "Building container tree.") start_time = time.time() all_stacks = ContainerRegistry.getInstance().findContainerStacks() for stack in all_stacks: if not isinstance(stack, GlobalStack): continue # Only want to load global stacks. We don't need to create a tree for extruder definitions. definition_id = stack.definition.getId() if definition_id not in self.machines: definition_start_time = time.time() self.machines[definition_id] = MachineNode(definition_id) self.machines[definition_id].materialsChanged.connect( self.materialsChanged) Logger.log( "d", "Adding container tree for {definition_id} took {duration} seconds." .format(definition_id=definition_id, duration=time.time() - definition_start_time)) Logger.log("d", "Building the container tree took %s seconds", time.time() - start_time)