Fix for duplicating quality changes profiles on the UM2.

Contributes to CURA-2414 Quality changes profiles are created incorrectly
This commit is contained in:
Simon Edwards 2016-09-21 16:50:57 +02:00
parent 51dee95c8f
commit 46dd4f6093
2 changed files with 10 additions and 17 deletions

View file

@ -83,7 +83,7 @@ class QualityManager:
filter_by_material = machine_definition.getMetaDataEntry("has_materials") filter_by_material = machine_definition.getMetaDataEntry("has_materials")
# Stick the material IDs in a set # Stick the material IDs in a set
if material_containers is None: if material_containers is None or len(material_containers) == 0:
filter_by_material = False filter_by_material = False
else: else:
material_ids = set() material_ids = set()

View file

@ -587,24 +587,17 @@ class ContainerManager(QObject):
def _duplicateQualityOrQualityChangesForMachineType(self, quality_name, base_name, machine_definition, material_instances): def _duplicateQualityOrQualityChangesForMachineType(self, quality_name, base_name, machine_definition, material_instances):
UM.Logger.log("d", "Attempting to duplicate the quality %s", quality_name) UM.Logger.log("d", "Attempting to duplicate the quality %s", quality_name)
# Try Quality if base_name is None:
base_name = quality_name
# Try to find a Quality with the name.
containers = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) containers = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances)
if containers: if containers:
container = containers[0] container = containers[0]
if base_name is None:
base_name = quality_name
return self._duplicateQualityForMachineType(container, base_name, machine_definition) return self._duplicateQualityForMachineType(container, base_name, machine_definition)
# Try quality changes. # Assume it is a quality changes.
containers = QualityManager.getInstance().findQualityChangesByName(quality_name, machine_definition, material_instances) return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition)
if containers:
container = containers[0]
if base_name is None:
base_name = quality_name
return self._duplicateQualityChangesForMachineType(container, base_name, machine_definition)
else:
UM.Logger.log("d", "Unable to duplicate the quality %s, because it doesn't exist.", quality_name)
return ""
# Duplicate a quality profile # Duplicate a quality profile
def _duplicateQualityForMachineType(self, quality_container, base_name, machine_definition): def _duplicateQualityForMachineType(self, quality_container, base_name, machine_definition):
@ -631,10 +624,10 @@ class ContainerManager(QObject):
return new_change_instances return new_change_instances
# Duplicate a quality changes container # Duplicate a quality changes container
def _duplicateQualityChangesForMachineType(self, quality_changes_container, base_name, machine_definition): def _duplicateQualityChangesForMachineType(self, quality_changes_name, base_name, machine_definition):
new_change_instances = [] new_change_instances = []
for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_container.getName(), for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name,
machine_definition, None): machine_definition, []):
new_unique_id = self._createUniqueId(container.getId(), base_name) new_unique_id = self._createUniqueId(container.getId(), base_name)
new_container = container.duplicate(new_unique_id, base_name) new_container = container.duplicate(new_unique_id, base_name)
new_change_instances.append(new_container) new_change_instances.append(new_container)