mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
Store extruder position of quality groups as int
Instead of as a string with a number in it. For the actual global stack's extruders we still need to convert to string, sadly. I could go refactor that too, but then I won't be going home until 23 o'clock or something. Contributes to issue CURA-4606.
This commit is contained in:
parent
981c47ed87
commit
d904f677bc
4 changed files with 14 additions and 13 deletions
|
@ -21,6 +21,8 @@ class QualitySettingsModel(ListModel):
|
||||||
UserValueRole = Qt.UserRole + 6
|
UserValueRole = Qt.UserRole + 6
|
||||||
CategoryRole = Qt.UserRole + 7
|
CategoryRole = Qt.UserRole + 7
|
||||||
|
|
||||||
|
GLOBAL_STACK_POSITION = -1
|
||||||
|
|
||||||
def __init__(self, parent = None):
|
def __init__(self, parent = None):
|
||||||
super().__init__(parent = parent)
|
super().__init__(parent = parent)
|
||||||
|
|
||||||
|
@ -36,8 +38,7 @@ class QualitySettingsModel(ListModel):
|
||||||
self._application = Application.getInstance()
|
self._application = Application.getInstance()
|
||||||
self._quality_manager = self._application.getQualityManager()
|
self._quality_manager = self._application.getQualityManager()
|
||||||
|
|
||||||
self._selected_position = "" # empty string means GlobalStack
|
self._selected_position = self.GLOBAL_STACK_POSITION #Must be either GLOBAL_STACK_POSITION or an extruder position (0, 1, etc.)
|
||||||
# strings such as "0", "1", etc. mean extruder positions
|
|
||||||
self._selected_quality_item = None # The selected quality in the quality management page
|
self._selected_quality_item = None # The selected quality in the quality management page
|
||||||
self._i18n_catalog = None
|
self._i18n_catalog = None
|
||||||
|
|
||||||
|
@ -54,7 +55,7 @@ class QualitySettingsModel(ListModel):
|
||||||
self.selectedPositionChanged.emit()
|
self.selectedPositionChanged.emit()
|
||||||
self._update()
|
self._update()
|
||||||
|
|
||||||
@pyqtProperty(str, fset = setSelectedPosition, notify = selectedPositionChanged)
|
@pyqtProperty(int, fset = setSelectedPosition, notify = selectedPositionChanged)
|
||||||
def selectedPosition(self):
|
def selectedPosition(self):
|
||||||
return self._selected_position
|
return self._selected_position
|
||||||
|
|
||||||
|
@ -83,7 +84,7 @@ class QualitySettingsModel(ListModel):
|
||||||
quality_group = self._selected_quality_item["quality_group"]
|
quality_group = self._selected_quality_item["quality_group"]
|
||||||
quality_changes_group = self._selected_quality_item["quality_changes_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
|
quality_node = quality_group.node_for_global
|
||||||
else:
|
else:
|
||||||
quality_node = quality_group.nodes_for_extruders.get(self._selected_position)
|
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
|
# 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.
|
# the settings in that quality_changes_group.
|
||||||
if quality_changes_group is not None:
|
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
|
quality_changes_node = quality_changes_group.node_for_global
|
||||||
else:
|
else:
|
||||||
quality_changes_node = quality_changes_group.nodes_for_extruders.get(self._selected_position)
|
quality_changes_node = quality_changes_group.nodes_for_extruders.get(self._selected_position)
|
||||||
|
@ -127,7 +128,7 @@ class QualitySettingsModel(ListModel):
|
||||||
profile_value = new_value
|
profile_value = new_value
|
||||||
|
|
||||||
# Global tab should use resolve (if there is one)
|
# 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")
|
resolve_value = global_container_stack.getProperty(definition.key, "resolve")
|
||||||
if resolve_value is not None and definition.key in settings_keys:
|
if resolve_value is not None and definition.key in settings_keys:
|
||||||
profile_value = resolve_value
|
profile_value = resolve_value
|
||||||
|
@ -135,10 +136,10 @@ class QualitySettingsModel(ListModel):
|
||||||
if profile_value is not None:
|
if profile_value is not None:
|
||||||
break
|
break
|
||||||
|
|
||||||
if not self._selected_position:
|
if self._selected_position == self.GLOBAL_STACK_POSITION:
|
||||||
user_value = global_container_stack.userChanges.getProperty(definition.key, "value")
|
user_value = global_container_stack.userChanges.getProperty(definition.key, "value")
|
||||||
else:
|
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")
|
user_value = extruder_stack.userChanges.getProperty(definition.key, "value")
|
||||||
|
|
||||||
if profile_value is None and user_value is None:
|
if profile_value is None and user_value is None:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Copyright (c) 2018 Ultimaker B.V.
|
# Copyright (c) 2018 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# 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
|
from PyQt5.QtCore import QObject, pyqtSlot
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class QualityGroup(QObject):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.name = name
|
self.name = name
|
||||||
self.node_for_global = None # type: Optional["QualityGroup"]
|
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.quality_type = quality_type
|
||||||
self.is_available = False
|
self.is_available = False
|
||||||
|
|
||||||
|
|
|
@ -939,9 +939,9 @@ class MachineManager(QObject):
|
||||||
|
|
||||||
# Set quality and quality_changes for each ExtruderStack
|
# Set quality and quality_changes for each ExtruderStack
|
||||||
for position, node in quality_group.nodes_for_extruders.items():
|
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:
|
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.activeQualityGroupChanged.emit()
|
||||||
self.activeQualityChangesGroupChanged.emit()
|
self.activeQualityChangesGroupChanged.emit()
|
||||||
|
|
|
@ -11,7 +11,7 @@ Tab
|
||||||
{
|
{
|
||||||
id: base
|
id: base
|
||||||
|
|
||||||
property string extruderPosition: ""
|
property int extruderPosition: -1 //Denotes the global stack.
|
||||||
property var qualityItem: null
|
property var qualityItem: null
|
||||||
|
|
||||||
property bool isQualityItemCurrentlyActivated:
|
property bool isQualityItemCurrentlyActivated:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue