Browse Source

Adjusted code to filter out the abstract colors per machine.

CURA-11634
Paul Kuiper 5 months ago
parent
commit
99b6fd7616

+ 1 - 0
cura/Machines/MachineNode.py

@@ -48,6 +48,7 @@ class MachineNode(ContainerNode):
         self.preferred_variant_name = my_metadata.get("preferred_variant_name", "")
         self.preferred_material = my_metadata.get("preferred_material", "")
         self.preferred_quality_type = my_metadata.get("preferred_quality_type", "")
+        self.supports_abstract_color = parseBool(my_metadata.get("supports_abstract_color", "false"))
 
         self._loadAll()
 

+ 3 - 0
cura/Machines/VariantNode.py

@@ -63,6 +63,9 @@ class VariantNode(ContainerNode):
         filtered_materials = [material for material in materials if not self.machine.isExcludedMaterialBaseFile(material["id"])]
 
         for material in filtered_materials:
+            if material.get("abstract_color", False):
+                if not self.machine.supports_abstract_color:
+                    continue  # do not show abstract color profiles if the machine does not support them
             base_file = material["base_file"]
             if base_file not in self.materials:
                 self.materials[base_file] = MaterialNode(material["id"], variant = self)

+ 0 - 5
plugins/XmlMaterialProfile/XmlMaterialProfile.py

@@ -918,11 +918,6 @@ class XmlMaterialProfile(InstanceContainer):
         base_metadata["properties"] = property_values
         base_metadata["definition"] = "fdmprinter"
 
-        # Certain materials are loaded but should not be visible / selectable to the user.
-        # Only show abstract color profiles (Any Color) if the machine supports them
-        base_metadata["visible"] = (not base_metadata.get("abstract_color", False)
-                                    or base_metadata.get("supports_abstract_color", False))
-
         compatible_entries = data.iterfind("./um:settings/um:setting[@key='hardware compatible']", cls.__namespaces)
         try:
             common_compatibility = cls._parseCompatibleValue(next(compatible_entries).text) # type: ignore