This commit is contained in:
fieldOfView 2016-09-29 16:05:32 +02:00
commit 3982dc2046
5 changed files with 63 additions and 71 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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":

View File

@ -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":