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 = copy.deepcopy(empty_container)
empty_quality_container._id = "empty_quality" empty_quality_container._id = "empty_quality"
empty_quality_container.setName("Not Supported") 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("type", "quality")
empty_quality_container.addMetaDataEntry("supported", False) empty_quality_container.addMetaDataEntry("supported", False)
ContainerRegistry.getInstance().addContainer(empty_quality_container) ContainerRegistry.getInstance().addContainer(empty_quality_container)

View File

@ -87,7 +87,7 @@ class QualityManager:
qualities = set(quality_type_dict.values()) qualities = set(quality_type_dict.values())
for material_container in material_containers[1:]: for material_container in material_containers[1:]:
next_quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_container) 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) return list(qualities)

View File

@ -843,8 +843,6 @@ class MachineManager(QObject):
if not containers or not self._global_container_stack: if not containers or not self._global_container_stack:
return 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 # 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. # If we found a quality_changes profile then look up its parent quality profile.
container_type = containers[0].getMetaDataEntry("type") container_type = containers[0].getMetaDataEntry("type")
@ -864,6 +862,19 @@ class MachineManager(QObject):
if new_quality_settings_list is None: if new_quality_settings_list is None:
return 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() self._new_quality_containers.clear()
for setting_info in new_quality_settings_list: for setting_info in new_quality_settings_list:
@ -871,8 +882,6 @@ class MachineManager(QObject):
stack_quality = setting_info["quality"] stack_quality = setting_info["quality"]
stack_quality_changes = setting_info["quality_changes"] 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({ self._new_quality_containers.append({
"stack": stack, "stack": stack,
"quality": stack_quality, "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 # 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] not_supported_container = ContainerRegistry.getInstance().findContainers(id = "empty_quality")[0]
result.append(not_supported_container) result.append(not_supported_container)
# return result
return result return result

View File

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

View File

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