diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index 7de8f0c8ee..7e06b95100 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -29,6 +29,9 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): # containers. IndexRole = Qt.UserRole + 4 + # The ID of the definition of the extruder. + DefinitionRole = Qt.UserRole + 5 + ## List of colours to display if there is no material or the material has no known # colour. defaultColors = ["#ffc924", "#86ec21", "#22eeee", "#245bff", "#9124ff", "#ff24c8"] @@ -44,6 +47,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self.addRoleName(self.NameRole, "name") self.addRoleName(self.ColorRole, "color") self.addRoleName(self.IndexRole, "index") + self.addRoleName(self.DefinitionRole, "definition") self._add_global = False self._simple_names = False @@ -126,7 +130,8 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): "id": global_container_stack.getId(), "name": "Global", "color": color, - "index": -1 + "index": -1, + "definition": "" } items.append(item) changed = True @@ -148,7 +153,8 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): "id": extruder.getId(), "name": extruder_name, "color": color, - "index": position + "index": position, + "definition": extruder.getBottom().getId() } items.append(item) changed = True diff --git a/cura/Settings/QualitySettingsModel.py b/cura/Settings/QualitySettingsModel.py index 1e5fbc97e7..e57e09e862 100644 --- a/cura/Settings/QualitySettingsModel.py +++ b/cura/Settings/QualitySettingsModel.py @@ -25,6 +25,7 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): self._container_registry = UM.Settings.ContainerRegistry.getInstance() self._extruder_id = None + self._extruder_definition_id = None self._quality = None self._material = None @@ -46,6 +47,17 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): def extruderId(self): return self._extruder_id + def setExtruderDefinition(self, extruder_definition): + if extruder_definition != self._extruder_definition_id: + self._extruder_definition_id = extruder_definition + self._update() + self.extruderDefinitionChanged.emit() + + extruderDefinitionChanged = pyqtSignal() + @pyqtProperty(str, fset = setExtruderDefinition, notify = extruderDefinitionChanged) + def extruderDefinition(self): + return self._extruder_definition_id + def setQuality(self, quality): if quality != self._quality: self._quality = quality @@ -138,8 +150,9 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): if quality_changes_container: criteria = {"type": "quality_changes", "quality_type": quality_type, "definition": definition_id, "name": quality_changes_container.getName()} - if self._extruder_id != "": - criteria["extruder"] = self._extruder_id + if self._extruder_definition_id != "": + criteria["extruder"] = self._extruder_definition_id + criteria["name"] = "%s_%s" % (self._extruder_definition_id, quality_changes_container.getName()) else: criteria["extruder"] = None diff --git a/resources/qml/Preferences/ProfileTab.qml b/resources/qml/Preferences/ProfileTab.qml index d50689ccf9..630d524871 100644 --- a/resources/qml/Preferences/ProfileTab.qml +++ b/resources/qml/Preferences/ProfileTab.qml @@ -12,6 +12,7 @@ Tab id: base property string extruderId: ""; + property string extruderDefinition: ""; property string quality: ""; property string material: ""; @@ -55,7 +56,8 @@ Tab model: Cura.QualitySettingsModel { - extruderId: base.extruderId != "" ? base.extruderId : "" + extruderId: base.extruderId + extruderDefinition: base.extruderDefinition quality: base.quality != null ? base.quality : "" material: base.material != null ? base.material : "" } diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 1809e06a36..335bfda82c 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -223,6 +223,7 @@ UM.ManagementPage { title: model.name; extruderId: model.id; + extruderDefinition: model.definition; quality: base.currentItem != null ? base.currentItem.id : ""; material: Cura.MachineManager.allActiveMaterialIds[model.id] }