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)
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)
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)
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
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