예제 #1
0
 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")
예제 #4
0
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")
예제 #5
0
    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))
예제 #6
0
        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]
예제 #7
0
    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)