Browse Source

Update intents model to use container tree

CURA-6598
Jaime van Kessel 5 years ago
parent
commit
ba0c16d968
2 changed files with 21 additions and 11 deletions
  1. 20 10
      cura/Machines/Models/IntentModel.py
  2. 1 1
      resources/qml/Settings/SettingComboBox.qml

+ 20 - 10
cura/Machines/Models/IntentModel.py

@@ -10,6 +10,7 @@ from UM.Settings.ContainerRegistry import ContainerRegistry
 from UM.Settings.SettingFunction import SettingFunction
 
 from cura.Machines.ContainerTree import ContainerTree
+from cura.Settings.ExtruderManager import ExtruderManager
 from cura.Settings.IntentManager import IntentManager
 import cura.CuraApplication
 
@@ -61,18 +62,27 @@ class IntentModel(ListModel):
             return
         quality_groups = ContainerTree.getInstance().getCurrentQualityGroups()
 
+        container_tree = ContainerTree.getInstance()
+        machine_node = container_tree.machines[global_stack.definition.getId()]
+        active_extruder = ExtruderManager.getInstance().getActiveExtruderStack()
+        active_variant_name = active_extruder.variant.getMetaDataEntry("name")
+        active_variant_node = machine_node.variants[active_variant_name]
+        active_material_node = active_variant_node.materials[active_extruder.material.getMetaDataEntry("base_file")]
         layer_heights_added = []
-        for quality_tuple, quality_group in quality_groups.items():
-            # Add the intents that are of the correct category
-            if quality_tuple[0] == self._intent_category:
-                layer_height = self._fetchLayerHeight(quality_group)
-                new_items.append({"name": quality_group.name,
-                              "quality_type": quality_tuple[1],
-                              "layer_height": layer_height,
-                              "available": quality_group.is_available,
-                              "intent_category": self._intent_category
-                              })
+        for quality_id, quality_node in active_material_node.qualities.items():
+            quality_group = quality_groups[quality_node.quality_type]
+            layer_height = self._fetchLayerHeight(quality_group)
+
+            for intent_id, intent_node in quality_node.intents.items():
+                if intent_node.intent_category != self._intent_category:
+                    continue
                 layer_heights_added.append(layer_height)
+                new_items.append({"name": quality_group.name,
+                                  "quality_type": quality_group.quality_type,
+                                  "layer_height": layer_height,
+                                  "available": quality_group.is_available,
+                                  "intent_category": self._intent_category
+                                  })
 
         # Now that we added all intents that we found something for, ensure that we set add ticks (and layer_heights)
         # for all groups that we don't have anything for (and set it to not available)

+ 1 - 1
resources/qml/Settings/SettingComboBox.qml

@@ -20,7 +20,7 @@ SettingItem
         textRole: "value"
 
         anchors.fill: parent
-        
+
         onActivated:
         {
             forceActiveFocus()