ReplaceQuality changes only emits signals if there was a change

CURA-3780
This commit is contained in:
Jaime van Kessel 2017-05-10 10:33:40 +02:00
parent 3d429e44ae
commit 9a387f9ee2

View file

@ -810,13 +810,13 @@ class MachineManager(QObject):
# Quality profile come in two flavours: type=quality and type=quality_changes
# If we found a quality_changes profile then look up its parent quality profile.
container_type = containers[0].getMetaDataEntry("type")
quality_name = containers[0].getName()
quality_type = containers[0].getMetaDataEntry("quality_type")
# Get quality container and optionally the quality_changes container.
if container_type == "quality":
quality_type = containers[0].getMetaDataEntry("quality_type")
new_quality_settings_list = self.determineQualityAndQualityChangesForQualityType(quality_type)
elif container_type == "quality_changes":
quality_name = containers[0].getName()
new_quality_settings_list = self._determineQualityAndQualityChangesForQualityChanges(quality_name)
else:
Logger.log("e", "Tried to set quality to a container that is not of the right type")
@ -952,12 +952,16 @@ class MachineManager(QObject):
# Disconnect the signal handling from the old container.
container_type = container.getMetaDataEntry("type")
if container_type == "quality":
if stack.quality == container:
return # Nothing to do
stack.quality.nameChanged.disconnect(self._onQualityNameChanged)
stack.setQuality(container)
stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged)
elif container_type == "quality_changes" or container_type is None:
# If the container is an empty container, we need to change the quality_changes.
# Quality can never be set to empty.
if stack.qualityChanges == container:
return # Nothing to do
stack.qualityChanges.nameChanged.disconnect(self._onQualityNameChanged)
stack.setQualityChanges(container)
stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged)