Exemplo n.º 1
0
    def _loadAll(self) -> None:
        container_registry = ContainerRegistry.getInstance()
        if not self.has_variants:
            self.variants["empty"] = VariantNode("empty_variant", machine=self)
        else:
            # Find all the variants for this definition ID.
            variants = container_registry.findInstanceContainersMetadata(
                type="variant",
                definition=self.container_id,
                hardware_type="nozzle")
            for variant in variants:
                variant_name = variant["name"]
                if variant_name not in self.variants:
                    self.variants[variant_name] = VariantNode(variant["id"],
                                                              machine=self)
                    self.variants[variant_name].materialsChanged.connect(
                        self.materialsChanged)
            if not self.variants:
                self.variants["empty"] = VariantNode("empty_variant",
                                                     machine=self)

        # Find the global qualities for this printer.
        global_qualities = container_registry.findInstanceContainersMetadata(
            type="quality",
            definition=self.quality_definition,
            global_quality="True")  # First try specific to this printer.
        if len(global_qualities
               ) == 0:  # This printer doesn't override the global qualities.
            global_qualities = container_registry.findInstanceContainersMetadata(
                type="quality", definition="fdmprinter", global_quality="True"
            )  # Otherwise pick the global global qualities.
        for global_quality in global_qualities:
            self.global_qualities[
                global_quality["quality_type"]] = QualityNode(
                    global_quality["id"], parent=self)
Exemplo n.º 2
0
    def _loadAll(self) -> None:
        """(Re)loads all variants under this printer."""

        container_registry = ContainerRegistry.getInstance()
        if not self.has_variants:
            self.variants["empty"] = VariantNode("empty_variant", machine = self)
            self.variants["empty"].materialsChanged.connect(self.materialsChanged)
        else:
            # Find all the variants for this definition ID.
            variants = container_registry.findInstanceContainersMetadata(type = "variant", definition = self.container_id, hardware_type = "nozzle")
            for variant in variants:
                variant_name = variant["name"]
                if variant_name not in self.variants:
                    self.variants[variant_name] = VariantNode(variant["id"], machine = self)
                    self.variants[variant_name].materialsChanged.connect(self.materialsChanged)
                else:
                    # Force reloading the materials if the variant already exists or else materals won't be loaded
                    # when the G-Code flavor changes --> CURA-7354
                    self.variants[variant_name]._loadAll()
            if not self.variants:
                self.variants["empty"] = VariantNode("empty_variant", machine = self)

        # Find the global qualities for this printer.
        global_qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.quality_definition, global_quality = "True")  # First try specific to this printer.
        if not global_qualities:  # This printer doesn't override the global qualities.
            global_qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter", global_quality = "True")  # Otherwise pick the global global qualities.
            if not global_qualities:  # There are no global qualities either?! Something went very wrong, but we'll not crash and properly fill the tree.
                global_qualities = [cura.CuraApplication.CuraApplication.getInstance().empty_quality_container.getMetaData()]
        for global_quality in global_qualities:
            self.global_qualities[global_quality["quality_type"]] = QualityNode(global_quality["id"], parent = self)
Exemplo n.º 3
0
def createVariantNode(container_id, machine_node, container_registry):
    with patch("cura.Machines.VariantNode.MaterialNode"
               ):  # We're not testing the material node here, so patch it out.
        with patch(
                "UM.Settings.ContainerRegistry.ContainerRegistry.getInstance",
                MagicMock(return_value=container_registry)):
            return VariantNode(container_id, machine_node)
Exemplo n.º 4
0
def empty_variant_node(machine_node):
    container_registry = MagicMock(findContainersMetadata=MagicMock(
        return_value=[{
            "name": "test variant name"
        }]))
    with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance",
               MagicMock(return_value=container_registry)):
        with patch("cura.Machines.VariantNode.VariantNode._loadAll",
                   MagicMock()):
            result = VariantNode("test_variant", machine=machine_node)
    return result
Exemplo n.º 5
0
def empty_variant_node(machine_node):
    """Constructs a variant node without any subnodes.

    This is useful for performing tests on VariantNode without being dependent
    on how _loadAll works.
    """

    container_registry = MagicMock(
        findContainersMetadata = MagicMock(return_value = [{"name": "test variant name"}])
    )
    with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)):
        with patch("cura.Machines.VariantNode.VariantNode._loadAll", MagicMock()):
            result = VariantNode("test_variant", machine = machine_node)
    return result