diff --git a/cura/Machines/Models/IntentModel.py b/cura/Machines/Models/IntentModel.py index 666786e26a..5b4ce10878 100644 --- a/cura/Machines/Models/IntentModel.py +++ b/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) diff --git a/resources/qml/Settings/SettingComboBox.qml b/resources/qml/Settings/SettingComboBox.qml index 1814d997b3..cbabb3ffd4 100644 --- a/resources/qml/Settings/SettingComboBox.qml +++ b/resources/qml/Settings/SettingComboBox.qml @@ -20,7 +20,7 @@ SettingItem textRole: "value" anchors.fill: parent - + onActivated: { forceActiveFocus()