From 88ffe0d3584267baa5f2868638272969f9f2c94e Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 25 Oct 2017 15:57:53 +0200 Subject: [PATCH] correctly show not supported when any of the extruders has a not supported profile - CURA-4451 --- cura/CuraApplication.py | 2 +- cura/QualityManager.py | 2 +- cura/Settings/MachineManager.py | 17 +++++++++++++---- cura/Settings/ProfilesModel.py | 1 - resources/qml/Menus/ProfileMenu.qml | 2 +- resources/qml/Settings/SettingView.qml | 6 +----- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 3af1112afc..2d1c35aca7 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -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) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index d2a2df27ac..0312c50daf 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -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) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 467b5c00a2..bb8b8aefa4 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -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, diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 8762512a6e..57498ffbd3 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -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 diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index fb1ade6e0b..fecea5ef99 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -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 diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 14c85d81e8..c116fa933a 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -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) {