Browse Source

Use container tree to check for variants when serialising

Not the variant manager, because it's deprecated.

Contributes to issue CURA-6600.
Ghostkeeper 5 years ago
parent
commit
b60b13e5bf
1 changed files with 9 additions and 10 deletions
  1. 9 10
      plugins/XmlMaterialProfile/XmlMaterialProfile.py

+ 9 - 10
plugins/XmlMaterialProfile/XmlMaterialProfile.py

@@ -226,7 +226,7 @@ class XmlMaterialProfile(InstanceContainer):
         machine_container_map = {} # type: Dict[str, InstanceContainer]
         machine_variant_map = {} # type: Dict[str, Dict[str, Any]]
 
-        variant_manager = CuraApplication.getInstance().getVariantManager()
+        container_tree = ContainerTree.getInstance()
 
         root_material_id = self.getMetaDataEntry("base_file")  # if basefile is self.getId, this is a basefile.
         all_containers = registry.findInstanceContainers(base_file = root_material_id)
@@ -243,16 +243,15 @@ class XmlMaterialProfile(InstanceContainer):
                 machine_variant_map[definition_id] = {}
 
             variant_name = container.getMetaDataEntry("variant_name")
-            if variant_name:
-                variant_node = variant_manager.getVariantNode(definition_id, variant_name)
-                if variant_node is None:
-                    continue
-                variant_dict = {"variant_node":variant_node ,
-                                "material_container": container}
-                machine_variant_map[definition_id][variant_name] = variant_dict
-                continue
+            if not variant_name:
+                machine_container_map[definition_id] = container
 
-            machine_container_map[definition_id] = container
+            if variant_name not in container_tree.machines[definition_id].variants:
+                continue
+            variant_node = container_tree.machines[definition_id].variants[variant_name]
+            variant_dict = {"variant_node": variant_node,
+                            "material_container": container}
+            machine_variant_map[definition_id][variant_name] = variant_dict
 
         # Map machine human-readable names to IDs
         product_id_map = self.getProductIdMap()