Browse Source

Merge branch 'master' of https://github.com/Ultimaker/Cura

fieldOfView 8 years ago
parent
commit
3982dc2046

+ 6 - 1
cura/Settings/ContainerManager.py

@@ -561,10 +561,15 @@ class ContainerManager(QObject):
         new_name = self._container_registry.uniqueName(new_name)
 
         container_registry = self._container_registry
-        for container in self._getFilteredContainers(name = quality_name, type = "quality_changes"):
+
+        containers_to_rename = self._container_registry.findInstanceContainers(type = "quality_changes", name = quality_name)
+        for container in containers_to_rename:
             stack_id = container.getMetaDataEntry("extruder", global_stack.getId())
             container_registry.renameContainer(container.getId(), new_name, self._createUniqueId(stack_id, new_name))
 
+        if not containers_to_rename:
+            UM.Logger.log("e", "Unable to rename %s, because we could not find the profile", quality_name)
+
         self._machine_manager.activeQualityChanged.emit()
         return True
 

+ 9 - 5
cura/Settings/CuraContainerRegistry.py

@@ -129,13 +129,17 @@ class CuraContainerRegistry(ContainerRegistry):
 
         plugin_registry = PluginRegistry.getInstance()
         container_registry = ContainerRegistry.getInstance()
+        extension = file_name.split(".")[-1]
         for plugin_id, meta_data in self._getIOPlugins("profile_reader"):
+            if meta_data["profile_reader"][0]["extension"] != extension:
+                continue
+
             profile_reader = plugin_registry.getPluginObject(plugin_id)
             try:
-                profile_or_list = profile_reader.read(file_name) # Try to open the file with the profile reader.
+                profile_or_list = profile_reader.read(file_name)  # Try to open the file with the profile reader.
             except Exception as e:
-                #Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None.
-                Logger.log("e", "Failed to import profile from %s: %s", file_name, str(e))
+                # Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None.
+                Logger.log("e", "Failed to import profile from %s: %s while using profile reader", file_name, str(e), profile_reader.getPluginId())
                 return { "status": "error", "message": catalog.i18nc("@info:status", "Failed to import profile from <filename>{0}</filename>: <message>{1}</message>", file_name, str(e))}
             if profile_or_list: # Success!
                 name_seed = os.path.splitext(os.path.basename(file_name))[0]
@@ -157,8 +161,8 @@ class CuraContainerRegistry(ContainerRegistry):
 
                     return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile_or_list[0].getName())}
 
-        #If it hasn't returned by now, none of the plugins loaded the profile successfully.
-        return { "status": "error", "message": catalog.i18nc("@info:status", "Profile {0} has an unknown file type.", file_name)}
+        # If it hasn't returned by now, none of the plugins loaded the profile successfully.
+        return {"status": "error", "message": catalog.i18nc("@info:status", "Profile {0} has an unknown file type.", file_name)}
 
     def _configureProfile(self, profile, id_seed):
         profile.setReadOnly(False)

+ 2 - 6
cura/Settings/ExtruderManager.py

@@ -143,9 +143,7 @@ class ExtruderManager(QObject):
 
                 # Make sure the next stack is a stack that contains only the machine definition
                 if not extruder_train.getNextStack():
-                    shallow_stack = UM.Settings.ContainerStack(machine_id + "_shallow")
-                    shallow_stack.addContainer(machine_definition)
-                    extruder_train.setNextStack(shallow_stack)
+                    extruder_train.setNextStack(UM.Application.getInstance().getGlobalContainerStack())
                     changed = True
         if changed:
             self.extrudersChanged.emit(machine_id)
@@ -264,9 +262,7 @@ class ExtruderManager(QObject):
 
         # Make sure the next stack is a stack that contains only the machine definition
         if not container_stack.getNextStack():
-            shallow_stack = UM.Settings.ContainerStack(machine_id + "_shallow")
-            shallow_stack.addContainer(machine_definition)
-            container_stack.setNextStack(shallow_stack)
+            container_stack.setNextStack(UM.Application.getInstance().getGlobalContainerStack())
 
         container_registry.addContainer(container_stack)
 

+ 1 - 14
cura/Settings/MachineManager.py

@@ -245,20 +245,7 @@ class MachineManager(QObject):
 
     def _onPropertyChanged(self, key, property_name):
         if property_name == "value":
-            # If a setting is not settable per extruder, but "has enabled" or "value" relations that are settable per extruder
-            # we need to copy the value to global, so that the front-end displays the right settings.
-            if not self._active_container_stack.getProperty(key, "settable_per_extruder"):
-                relations = self._global_container_stack.getBottom()._getDefinition(key).relations
-                for relation in filter(lambda r: (r.role == "enabled" or r.role == "value") and r.type == RelationType.RequiredByTarget, relations):
-                    # Target setting is settable per extruder
-                    if self._active_container_stack.getProperty(relation.target.key, "settable_per_extruder"):
-                        new_value = self._global_container_stack.getProperty(key, "value")
-                        stacks = [stack for stack in ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())]
-                        for extruder_stack in stacks:
-                            if extruder_stack.getProperty(key, "value") != new_value:
-                                extruder_stack.getTop().setProperty(key, "value", new_value)
-                        break
-
+            # Notify UI items, such as the "changed" star in profile pull down menu.
             self.activeStackValueChanged.emit()
 
         if property_name == "validationState":

+ 45 - 45
resources/definitions/fdmprinter.def.json

@@ -650,7 +650,7 @@
                             "default_value": 0.4,
                             "type": "float",
                             "value": "line_width",
-                            "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true
                         },
@@ -935,7 +935,7 @@
                             "type": "float",
                             "default_value": 2,
                             "minimum_value": "0",
-                            "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == \"grid\" else (3 if infill_pattern == \"triangles\" or infill_pattern == \"cubic\" else (4 if infill_pattern == \"tetrahedral\" else 1)))",
+                            "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'cubic' else (4 if infill_pattern == 'tetrahedral' else 1)))",
                             "settable_per_mesh": true
                         }
                     }
@@ -1616,7 +1616,7 @@
                     "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
                     "maximum_value_warning": "300",
                     "value": "speed_layer_0",
-                    "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2141,7 +2141,7 @@
                     "description": "The nozzle avoids already printed parts when traveling. This option is only available when combing is enabled.",
                     "type": "bool",
                     "default_value": true,
-                    "enabled": "retraction_combing != \"off\"",
+                    "enabled": "retraction_combing != 'off'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true
                 },
@@ -2155,7 +2155,7 @@
                     "value": "machine_nozzle_tip_outer_diameter / 2 * 1.25",
                     "minimum_value": "0",
                     "maximum_value_warning": "machine_nozzle_tip_outer_diameter * 5",
-                    "enabled": "retraction_combing != \"off\" and travel_avoid_other_parts",
+                    "enabled": "retraction_combing != 'off' and travel_avoid_other_parts",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true
                 }
@@ -2242,7 +2242,7 @@
                     "unit": "mm",
                     "type": "float",
                     "default_value": 0.5,
-                    "value": "0 if adhesion_type == \"raft\" else layer_height_0",
+                    "value": "0 if resolveOrValue('adhesion_type') == 'raft' else layer_height_0",
                     "minimum_value": "0",
                     "maximum_value_warning": "10.0",
                     "settable_per_mesh": false,
@@ -2396,7 +2396,7 @@
                             "minimum_value": "0",
                             "default_value": 2.66,
                             "enabled": "support_enable",
-                            "value": "(support_line_width * 100) / support_infill_rate * (2 if support_pattern == \"grid\" else (3 if support_pattern == \"triangles\" else 1))",
+                            "value": "(support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))",
                             "limit_to_extruder": "support_infill_extruder_nr",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true
@@ -2616,7 +2616,7 @@
                             "type": "float",
                             "default_value": 0.4,
                             "minimum_value": "0",
-                            "value": "0 if support_interface_density == 0 else (support_interface_line_width * 100) / support_interface_density * (2 if support_interface_pattern == \"grid\" else (3 if support_interface_pattern == \"triangles\" else 1))",
+                            "value": "0 if support_interface_density == 0 else (support_interface_line_width * 100) / support_interface_density * (2 if support_interface_pattern == 'grid' else (3 if support_interface_pattern == 'triangles' else 1))",
                             "limit_to_extruder": "support_interface_extruder_nr",
                             "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable",
                             "settable_per_mesh": false,
@@ -2753,7 +2753,7 @@
                     "default_value": 1,
                     "minimum_value": "0",
                     "maximum_value_warning": "10",
-                    "enabled": "adhesion_type == \"skirt\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'skirt'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2767,7 +2767,7 @@
                     "default_value": 3,
                     "minimum_value_warning": "0",
                     "maximum_value_warning": "100",
-                    "enabled": "adhesion_type == \"skirt\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'skirt'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2782,7 +2782,7 @@
                     "minimum_value": "0",
                     "minimum_value_warning": "25",
                     "maximum_value_warning": "2500",
-                    "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true
                 },
@@ -2795,7 +2795,7 @@
                     "default_value": 8.0,
                     "minimum_value": "0.0",
                     "maximum_value_warning": "100.0",
-                    "enabled": "adhesion_type == \"brim\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'brim'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr",
@@ -2810,7 +2810,7 @@
                             "minimum_value": "0",
                             "maximum_value_warning": "300",
                             "value": "math.ceil(brim_width / skirt_brim_line_width)",
-                            "enabled": "adhesion_type == \"brim\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'brim'",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true,
                             "limit_to_extruder": "adhesion_extruder_nr"
@@ -2823,7 +2823,7 @@
                     "description": "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much.",
                     "type": "bool",
                     "default_value": true,
-                    "enabled": "adhesion_type == \"brim\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'brim'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2837,7 +2837,7 @@
                     "default_value": 15,
                     "minimum_value_warning": "0",
                     "maximum_value_warning": "10",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "limit_to_extruder": "adhesion_extruder_nr",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true
@@ -2851,7 +2851,7 @@
                     "default_value": 0.3,
                     "minimum_value": "0",
                     "maximum_value_warning": "1.0",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2865,7 +2865,7 @@
                     "value": "raft_airgap / 2",
                     "minimum_value": "0",
                     "maximum_value_warning": "layer_height",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2878,7 +2878,7 @@
                     "default_value": 2,
                     "minimum_value": "0",
                     "maximum_value_warning": "20",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2893,7 +2893,7 @@
                     "value": "layer_height",
                     "minimum_value": "0",
                     "maximum_value_warning": "2.0",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2908,7 +2908,7 @@
                     "value": "line_width",
                     "minimum_value": "0.0001",
                     "maximum_value_warning": "machine_nozzle_size * 2",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2922,7 +2922,7 @@
                     "default_value": 0.4,
                     "minimum_value": "0.0001",
                     "maximum_value_warning": "5.0",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "value": "raft_surface_line_width",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
@@ -2938,7 +2938,7 @@
                     "value": "layer_height * 1.5",
                     "minimum_value": "0",
                     "maximum_value_warning": "5.0",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2953,7 +2953,7 @@
                     "value": "line_width * 2",
                     "minimum_value": "0.0001",
                     "maximum_value_warning": "machine_nozzle_size * 2",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2968,7 +2968,7 @@
                     "value": "raft_interface_line_width + 0.2",
                     "minimum_value": "0",
                     "maximum_value_warning": "15.0",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2983,7 +2983,7 @@
                     "value": "layer_height_0 * 1.2",
                     "minimum_value": "0",
                     "maximum_value_warning": "5.0",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -2998,7 +2998,7 @@
                     "minimum_value": "0.0001",
                     "value": "machine_nozzle_size * 2",
                     "maximum_value_warning": "machine_nozzle_size * 3",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -3013,7 +3013,7 @@
                     "value": "raft_base_line_width * 2",
                     "minimum_value": "0.0001",
                     "maximum_value_warning": "100",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
                     "limit_to_extruder": "adhesion_extruder_nr"
@@ -3028,7 +3028,7 @@
                     "minimum_value": "0.1",
                     "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
                     "maximum_value_warning": "200",
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "value": "speed_print / 60 * 30",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
@@ -3045,7 +3045,7 @@
                             "minimum_value": "0.1",
                             "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
                             "maximum_value_warning": "100",
-                            "enabled": "adhesion_type == \"raft\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                             "value": "raft_speed",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true,
@@ -3062,7 +3062,7 @@
                             "minimum_value": "0.1",
                             "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
                             "maximum_value_warning": "150",
-                            "enabled": "adhesion_type == \"raft\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true,
                             "limit_to_extruder": "adhesion_extruder_nr"
@@ -3077,7 +3077,7 @@
                             "minimum_value": "0.1",
                             "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
                             "maximum_value_warning": "200",
-                            "enabled": "adhesion_type == \"raft\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                             "value": "0.75 * raft_speed",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true,
@@ -3095,7 +3095,7 @@
                     "minimum_value_warning": "100",
                     "maximum_value_warning": "10000",
                     "value": "acceleration_print",
-                    "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled",
                     "settable_per_mesh": false,
                     "limit_to_extruder": "adhesion_extruder_nr",
                     "children": {
@@ -3109,7 +3109,7 @@
                             "minimum_value": "0.1",
                             "minimum_value_warning": "100",
                             "maximum_value_warning": "10000",
-                            "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled",
                             "settable_per_mesh": false,
                             "limit_to_extruder": "adhesion_extruder_nr"
                         },
@@ -3123,7 +3123,7 @@
                             "minimum_value": "0.1",
                             "minimum_value_warning": "100",
                             "maximum_value_warning": "10000",
-                            "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled",
                             "settable_per_mesh": false,
                             "limit_to_extruder": "adhesion_extruder_nr"
                         },
@@ -3137,7 +3137,7 @@
                             "minimum_value": "0.1",
                             "minimum_value_warning": "100",
                             "maximum_value_warning": "10000",
-                            "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled",
                             "settable_per_mesh": false,
                             "limit_to_extruder": "adhesion_extruder_nr"
                         }
@@ -3153,7 +3153,7 @@
                     "minimum_value_warning": "5",
                     "maximum_value_warning": "50",
                     "value": "jerk_print",
-                    "enabled": "adhesion_type == \"raft\" and jerk_enabled",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled",
                     "settable_per_mesh": false,
                     "limit_to_extruder": "adhesion_extruder_nr",
                     "children": {
@@ -3167,7 +3167,7 @@
                             "minimum_value": "0.1",
                             "minimum_value_warning": "5",
                             "maximum_value_warning": "100",
-                            "enabled": "adhesion_type == \"raft\" and jerk_enabled",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled",
                             "settable_per_mesh": false,
                             "limit_to_extruder": "adhesion_extruder_nr"
                         },
@@ -3181,7 +3181,7 @@
                             "minimum_value": "0.1",
                             "minimum_value_warning": "5",
                             "maximum_value_warning": "50",
-                            "enabled": "adhesion_type == \"raft\" and jerk_enabled",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled",
                             "settable_per_mesh": false,
                             "limit_to_extruder": "adhesion_extruder_nr"
                         },
@@ -3195,7 +3195,7 @@
                             "minimum_value": "0.1",
                             "minimum_value_warning": "5",
                             "maximum_value_warning": "50",
-                            "enabled": "adhesion_type == \"raft\" and jerk_enabled",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled",
                             "settable_per_mesh": false,
                             "limit_to_extruder": "adhesion_extruder_nr"
                         }
@@ -3211,7 +3211,7 @@
                     "default_value": 0,
                     "settable_per_mesh": false,
                     "settable_per_extruder": true,
-                    "enabled": "adhesion_type == \"raft\"",
+                    "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                     "limit_to_extruder": "adhesion_extruder_nr",
                     "children":
                     {
@@ -3225,7 +3225,7 @@
                             "maximum_value": "100",
                             "default_value": 0,
                             "value": "raft_fan_speed",
-                            "enabled": "adhesion_type == \"raft\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true,
                             "limit_to_extruder": "adhesion_extruder_nr"
@@ -3240,7 +3240,7 @@
                             "maximum_value": "100",
                             "default_value": 0,
                             "value": "raft_fan_speed",
-                            "enabled": "adhesion_type == \"raft\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true,
                             "limit_to_extruder": "adhesion_extruder_nr"
@@ -3255,7 +3255,7 @@
                             "maximum_value": "100",
                             "default_value": 0,
                             "value": "raft_fan_speed",
-                            "enabled": "adhesion_type == \"raft\"",
+                            "enabled": "resolveOrValue('adhesion_type') == 'raft'",
                             "settable_per_mesh": false,
                             "settable_per_extruder": true,
                             "limit_to_extruder": "adhesion_extruder_nr"
@@ -3625,7 +3625,7 @@
                     "maximum_value_warning": "9999",
                     "default_value": 10,
                     "value": "10",
-                    "enabled": "draft_shield_enabled and draft_shield_height_limitation == \"limited\"",
+                    "enabled": "draft_shield_enabled and draft_shield_height_limitation == 'limited'",
                     "settable_per_mesh": false,
                     "settable_per_extruder": false
                 },
@@ -3710,7 +3710,7 @@
                     "description": "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions.",
                     "type": "bool",
                     "default_value": false,
-                    "enabled": "top_bottom_pattern != \"concentric\"",
+                    "enabled": "top_bottom_pattern != 'concentric'",
                     "settable_per_mesh": true
                 },
                 "support_conical_enabled":