Move all per-extruder settings

Also move things that we didn't think of previously, such as extruder offsets. You can't enter them as a user in the interface if it was single-extrusion, but you could've edited the files.

Contributes to issue CURA-4708.
This commit is contained in:
Ghostkeeper 2018-01-02 08:36:46 +01:00
parent 0c28c61e05
commit 2e197f0f34
No known key found for this signature in database
GPG Key ID: 5252B696FB5E7C7A

View File

@ -443,18 +443,19 @@ class CuraContainerRegistry(ContainerRegistry):
definition_changes.addMetaDataEntry("definition", extruder_definition.getId()) definition_changes.addMetaDataEntry("definition", extruder_definition.getId())
# move definition_changes settings if exist # move definition_changes settings if exist
for setting_key in ("machine_nozzle_size", "material_diameter"): for setting_key in definition_changes.getAllKeys():
setting_value = machine.definitionChanges.getProperty(setting_key, "value") if machine.definition.getProperty(setting_key, "settable_per_extruder"):
if setting_value is not None: setting_value = machine.definitionChanges.getProperty(setting_key, "value")
# move it to the extruder stack's definition_changes if setting_value is not None:
setting_definition = machine.getSettingDefinition(setting_key) # move it to the extruder stack's definition_changes
new_instance = SettingInstance(setting_definition, definition_changes) setting_definition = machine.getSettingDefinition(setting_key)
new_instance.setProperty("value", setting_value) new_instance = SettingInstance(setting_definition, definition_changes)
new_instance.resetState() # Ensure that the state is not seen as a user state. new_instance.setProperty("value", setting_value)
definition_changes.addInstance(new_instance) new_instance.resetState() # Ensure that the state is not seen as a user state.
definition_changes.setDirty(True) definition_changes.addInstance(new_instance)
definition_changes.setDirty(True)
machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) machine.definitionChanges.removeInstance(setting_key, postpone_emit = True)
self.addContainer(definition_changes) self.addContainer(definition_changes)
extruder_stack.setDefinitionChanges(definition_changes) extruder_stack.setDefinitionChanges(definition_changes)