Let getDefaultQualityType use the container tree structure

Contributes to issue CURA-6600.
This commit is contained in:
Ghostkeeper 2019-08-15 14:20:58 +02:00
parent bee5491879
commit 370d7adcd5
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276
2 changed files with 15 additions and 5 deletions

View file

@ -37,6 +37,7 @@ class MachineNode(ContainerNode):
self.quality_definition = my_metadata.get("quality_definition", container_id) self.quality_definition = my_metadata.get("quality_definition", container_id)
self.exclude_materials = my_metadata.get("exclude_materials", []) self.exclude_materials = my_metadata.get("exclude_materials", [])
self.preferred_variant_name = my_metadata.get("preferred_variant_name", "") self.preferred_variant_name = my_metadata.get("preferred_variant_name", "")
self.preferred_quality_type = my_metadata.get("preferred_quality_type", "")
container_registry.containerAdded.connect(self._variantAdded) container_registry.containerAdded.connect(self._variantAdded)
self._loadAll() self._loadAll()

View file

@ -140,11 +140,20 @@ class QualityManager(QObject):
return quality_group_dict return quality_group_dict
def getDefaultQualityType(self, machine: "GlobalStack") -> Optional[QualityGroup]: def getDefaultQualityType(self, machine: "GlobalStack") -> QualityGroup:
preferred_quality_type = machine.definition.getMetaDataEntry("preferred_quality_type") machine_node = ContainerTree.getInstance().machines[machine.definition.getId()]
quality_group_dict = self.getQualityGroups(machine) variant_names = []
quality_group = quality_group_dict.get(preferred_quality_type) material_bases = []
return quality_group extruder_enabled = []
for extruder in machine.extruders.values():
variant_names.append(extruder.variant.getName())
material_bases.append(extruder.material.getMetaDataEntry("base_file"))
extruder_enabled.append(extruder.isEnabled)
quality_groups = machine_node.getQualityGroups(variant_names, material_bases, extruder_enabled)
result = quality_groups.get(machine_node.preferred_quality_type)
if result is not None:
return result
return next(iter(quality_groups.values())) # If preferred quality type is not available, pick any quality type.
# #