diff --git a/cura/Machines/Models/QualitySettingsModel.py b/cura/Machines/Models/QualitySettingsModel.py index 15ebe37f05..5489ad0dd7 100644 --- a/cura/Machines/Models/QualitySettingsModel.py +++ b/cura/Machines/Models/QualitySettingsModel.py @@ -21,6 +21,8 @@ class QualitySettingsModel(ListModel): UserValueRole = Qt.UserRole + 6 CategoryRole = Qt.UserRole + 7 + GLOBAL_STACK_POSITION = -1 + def __init__(self, parent = None): super().__init__(parent = parent) @@ -36,8 +38,7 @@ class QualitySettingsModel(ListModel): self._application = Application.getInstance() self._quality_manager = self._application.getQualityManager() - self._selected_position = "" # empty string means GlobalStack - # strings such as "0", "1", etc. mean extruder positions + self._selected_position = self.GLOBAL_STACK_POSITION #Must be either GLOBAL_STACK_POSITION or an extruder position (0, 1, etc.) self._selected_quality_item = None # The selected quality in the quality management page self._i18n_catalog = None @@ -54,7 +55,7 @@ class QualitySettingsModel(ListModel): self.selectedPositionChanged.emit() self._update() - @pyqtProperty(str, fset = setSelectedPosition, notify = selectedPositionChanged) + @pyqtProperty(int, fset = setSelectedPosition, notify = selectedPositionChanged) def selectedPosition(self): return self._selected_position @@ -83,7 +84,7 @@ class QualitySettingsModel(ListModel): quality_group = self._selected_quality_item["quality_group"] quality_changes_group = self._selected_quality_item["quality_changes_group"] - if self._selected_position == "": + if self._selected_position == self.GLOBAL_STACK_POSITION: quality_node = quality_group.node_for_global else: quality_node = quality_group.nodes_for_extruders.get(self._selected_position) @@ -93,7 +94,7 @@ class QualitySettingsModel(ListModel): # Here, if the user has selected a quality changes, then "quality_changes_group" will not be None, and we fetch # the settings in that quality_changes_group. if quality_changes_group is not None: - if self._selected_position == "": + if self._selected_position == self.GLOBAL_STACK_POSITION: quality_changes_node = quality_changes_group.node_for_global else: quality_changes_node = quality_changes_group.nodes_for_extruders.get(self._selected_position) @@ -127,7 +128,7 @@ class QualitySettingsModel(ListModel): profile_value = new_value # Global tab should use resolve (if there is one) - if self._selected_position == "": + if self._selected_position == self.GLOBAL_STACK_POSITION: resolve_value = global_container_stack.getProperty(definition.key, "resolve") if resolve_value is not None and definition.key in settings_keys: profile_value = resolve_value @@ -135,10 +136,10 @@ class QualitySettingsModel(ListModel): if profile_value is not None: break - if not self._selected_position: + if self._selected_position == self.GLOBAL_STACK_POSITION: user_value = global_container_stack.userChanges.getProperty(definition.key, "value") else: - extruder_stack = global_container_stack.extruders[self._selected_position] + extruder_stack = global_container_stack.extruders[str(self._selected_position)] user_value = extruder_stack.userChanges.getProperty(definition.key, "value") if profile_value is None and user_value is None: diff --git a/cura/Machines/QualityGroup.py b/cura/Machines/QualityGroup.py index 6945162401..02096cfb36 100644 --- a/cura/Machines/QualityGroup.py +++ b/cura/Machines/QualityGroup.py @@ -1,7 +1,7 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, List +from typing import Dict, Optional, List from PyQt5.QtCore import QObject, pyqtSlot @@ -25,7 +25,7 @@ class QualityGroup(QObject): super().__init__(parent) self.name = name self.node_for_global = None # type: Optional["QualityGroup"] - self.nodes_for_extruders = dict() # position str -> QualityGroup + self.nodes_for_extruders = {} # type: Dict[int, "QualityGroup"] self.quality_type = quality_type self.is_available = False diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 35ffc3c7d3..3a65b6df5d 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -939,9 +939,9 @@ class MachineManager(QObject): # Set quality and quality_changes for each ExtruderStack for position, node in quality_group.nodes_for_extruders.items(): - self._global_container_stack.extruders[position].quality = node.getContainer() + self._global_container_stack.extruders[str(position)].quality = node.getContainer() if empty_quality_changes: - self._global_container_stack.extruders[position].qualityChanges = self._empty_quality_changes_container + self._global_container_stack.extruders[str(position)].qualityChanges = self._empty_quality_changes_container self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() diff --git a/resources/qml/Preferences/ProfileTab.qml b/resources/qml/Preferences/ProfileTab.qml index e202e933f3..0ae0899051 100644 --- a/resources/qml/Preferences/ProfileTab.qml +++ b/resources/qml/Preferences/ProfileTab.qml @@ -11,7 +11,7 @@ Tab { id: base - property string extruderPosition: "" + property int extruderPosition: -1 //Denotes the global stack. property var qualityItem: null property bool isQualityItemCurrentlyActivated: