correctly show not supported when any of the extruders has a not supported profile - CURA-4451

This commit is contained in:
ChrisTerBeke 2017-10-25 15:57:53 +02:00
parent 9b62b48509
commit 88ffe0d358
6 changed files with 17 additions and 13 deletions

View File

@ -270,7 +270,7 @@ class CuraApplication(QtApplication):
empty_quality_container = copy.deepcopy(empty_container)
empty_quality_container._id = "empty_quality"
empty_quality_container.setName("Not Supported")
empty_quality_container.addMetaDataEntry("quality_type", "normal")
empty_quality_container.addMetaDataEntry("quality_type", "not_supported")
empty_quality_container.addMetaDataEntry("type", "quality")
empty_quality_container.addMetaDataEntry("supported", False)
ContainerRegistry.getInstance().addContainer(empty_quality_container)

View File

@ -87,7 +87,7 @@ class QualityManager:
qualities = set(quality_type_dict.values())
for material_container in material_containers[1:]:
next_quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_container)
qualities.update(set(next_quality_type_dict.values()))
qualities.intersection_update(set(next_quality_type_dict.values()))
return list(qualities)

View File

@ -843,8 +843,6 @@ class MachineManager(QObject):
if not containers or not self._global_container_stack:
return
Logger.log("d", "Attempting to change the active quality to %s", quality_id)
# 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")
@ -864,6 +862,19 @@ class MachineManager(QObject):
if new_quality_settings_list is None:
return
has_not_supported_quality = False
# check if any of the extruder stacks have a not supported profile
# if that is the case, all stacks should have a not supported state (otherwise it will show quality_type normal)
for setting_info in new_quality_settings_list:
if setting_info["quality"].getMetaDataEntry("quality_type") == "not_supported":
has_not_supported_quality = True
break
if has_not_supported_quality:
for setting_info in new_quality_settings_list:
setting_info["quality"] = self._empty_quality_container
self._new_quality_containers.clear()
for setting_info in new_quality_settings_list:
@ -871,8 +882,6 @@ class MachineManager(QObject):
stack_quality = setting_info["quality"]
stack_quality_changes = setting_info["quality_changes"]
Logger.log("d", "=======================setting new quality=%s, %s", stack.getId(), stack_quality.getId())
self._new_quality_containers.append({
"stack": stack,
"quality": stack_quality,

View File

@ -91,7 +91,6 @@ class ProfilesModel(InstanceContainersModel):
# If not qualities are found we dynamically create a not supported container for this machine + material combination
not_supported_container = ContainerRegistry.getInstance().findContainers(id = "empty_quality")[0]
result.append(not_supported_container)
# return result
return result

View File

@ -17,7 +17,7 @@ Menu
MenuItem
{
text: model.name + " - " + model.layer_height
text: (model.layer_height != "") ? model.name + " - " + model.layer_height : model.name
checkable: true
checked: Cura.MachineManager.activeQualityId == model.id
exclusiveGroup: group

View File

@ -65,11 +65,7 @@ Item
function generateActiveQualityText () {
var result = catalog.i18nc("@", "No Profile Available") // default text
console.log("Cura.MachineManager.activeQualityName", Cura.MachineManager.activeQualityName)
console.log("Cura.ProfilesModel.rowCount()", Cura.ProfilesModel.rowCount())
console.log("Cura.MachineManager.isActiveQualitySupported", Cura.MachineManager.isActiveQualitySupported)
if (Cura.MachineManager.activeQualityName && Cura.ProfilesModel.rowCount() > 0) {
if (Cura.MachineManager.isActiveQualitySupported ) {
result = Cura.MachineManager.activeQualityName
if (Cura.MachineManager.activeQualityLayerHeight > 0) {