diff --git a/plugins/VersionUpgrade/VersionUpgrade52to53/VersionUpgrade52to53.py b/plugins/VersionUpgrade/VersionUpgrade52to53/VersionUpgrade52to53.py new file mode 100644 index 0000000000..f40bd3579d --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade52to53/VersionUpgrade52to53.py @@ -0,0 +1,94 @@ +# Copyright (c) 2023 UltiMaker +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser +from typing import Tuple, List +import io +from UM.VersionUpgrade import VersionUpgrade + +_removed_settings = { + "limit_support_retractions", + "material_flow_dependent_temperature", +} + +class VersionUpgrade52to53(VersionUpgrade): + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades preferences to remove from the visibility list the settings that were removed in this version. + It also changes the preferences to have the new version number. + + This removes any settings that were removed in the new Cura version. + :param serialized: The original contents of the preferences file. + :param filename: The file name of the preferences file. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "21" + + # Remove deleted settings from the visible settings list. + if "general" in parser and "visible_settings" in parser["general"]: + visible_settings = set(parser["general"]["visible_settings"].split(";")) + for removed in _removed_settings: + if removed in visible_settings: + visible_settings.remove(removed) + + parser["general"]["visible_settings"] = ";".join(visible_settings) + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades instance containers to remove the settings that were removed in this version. + It also changes the instance containers to have the new version number. + + This removes any settings that were removed in the new Cura version and updates settings that need to be updated + with a new value. + + :param serialized: The original contents of the instance container. + :param filename: The original file name of the instance container. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "21" + + if "values" in parser: + # Remove deleted settings from the instance containers. + for removed in _removed_settings: + if removed in parser["values"]: + del parser["values"][removed] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades stacks to have the new version number. + + :param serialized: The original contents of the stack. + :param filename: The original file name of the stack. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + + parser["metadata"]["setting_version"] = "21" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade52to53/__init__.py b/plugins/VersionUpgrade/VersionUpgrade52to53/__init__.py new file mode 100644 index 0000000000..561d236f68 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade52to53/__init__.py @@ -0,0 +1,59 @@ +# Copyright (c) 2023 UltiMaker +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade52to53 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade52to53.VersionUpgrade52to53() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 7000019): ("preferences", 7000020, upgrade.upgradePreferences), + ("machine_stack", 5000019): ("machine_stack", 5000020, upgrade.upgradeStack), + ("extruder_train", 5000019): ("extruder_train", 5000020, upgrade.upgradeStack), + ("definition_changes", 4000019): ("definition_changes", 4000020, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000019): ("quality_changes", 4000020, upgrade.upgradeInstanceContainer), + ("quality", 4000019): ("quality", 4000020, upgrade.upgradeInstanceContainer), + ("user", 4000019): ("user", 4000020, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade52to53/plugin.json b/plugins/VersionUpgrade/VersionUpgrade52to53/plugin.json new file mode 100644 index 0000000000..dda1f3ecc1 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade52to53/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade to 5.3", + "author": "UltiMaker", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 5.2 to Cura 5.3.", + "api": 8, + "i18n-catalog": "cura" +} diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b0cdd06aa3..1eea77aa91 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2409,7 +2409,7 @@ "minimum_value_warning": "0", "maximum_value_warning": "285", "maximum_value": "365", - "enabled": "machine_nozzle_temp_enabled and not (material_flow_dependent_temperature)", + "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2471,7 +2471,7 @@ "minimum_value": "0", "maximum_value_warning": "10.0", "maximum_value": "machine_nozzle_heat_up_speed", - "enabled": "material_flow_dependent_temperature or (extruders_enabled_count > 1 and material_final_print_temperature != material_print_temperature)", + "enabled": "extruders_enabled_count > 1 and material_final_print_temperature != material_print_temperature", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -4103,16 +4103,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "limit_support_retractions": - { - "label": "Limit Support Retractions", - "description": "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure.", - "type": "bool", - "default_value": true, - "enabled": "retraction_enable and (support_enable or support_meshes_present)", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "retraction_combing": { "label": "Combing Mode", @@ -6836,16 +6826,6 @@ "default_value": false, "settable_per_mesh": true }, - "material_flow_dependent_temperature": - { - "label": "Auto Temperature", - "description": "Change the temperature for each layer automatically with the average flow speed of that layer.", - "type": "bool", - "default_value": false, - "enabled": "machine_nozzle_temp_enabled and False", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "material_flow_temp_graph": { "label": "Flow Temperature Graph", @@ -6853,7 +6833,7 @@ "unit": "[[mm\u00b3,\u00b0C]]", "type": "str", "default_value": "[[3.5, 200],[7.0, 240]]", - "enabled": "False and machine_nozzle_temp_enabled and material_flow_dependent_temperature", + "enabled": "False and machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, diff --git a/resources/definitions/maker_made_300x.def.json b/resources/definitions/maker_made_300x.def.json index 0d9ec79f1b..23cad44278 100644 --- a/resources/definitions/maker_made_300x.def.json +++ b/resources/definitions/maker_made_300x.def.json @@ -53,7 +53,6 @@ "jerk_enabled": { "value": false }, "layer_height": { "value": 0.16 }, "layer_height_0": { "value": 0.32 }, - "limit_support_retractions": { "value": true }, "line_width": { "value": 0.4 }, "machine_depth": { "default_value": 300 }, "machine_end_gcode": { "default_value": "M104 S0\n M140 S0\n ;Retract the filament\n G92 E1\n G1 E-1 F300\n G28 X0 Y0\n G1 Y300 F3000 ;Move bed forward\n M84" }, diff --git a/resources/quality/key3d/key3d_tyro_best.inst.cfg b/resources/quality/key3d/key3d_tyro_best.inst.cfg index ef27b1602c..133cbdfae3 100644 --- a/resources/quality/key3d/key3d_tyro_best.inst.cfg +++ b/resources/quality/key3d/key3d_tyro_best.inst.cfg @@ -41,7 +41,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.08 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 0 material_final_print_temperature = 220 diff --git a/resources/quality/key3d/key3d_tyro_fast.inst.cfg b/resources/quality/key3d/key3d_tyro_fast.inst.cfg index aa1e762076..7b254ab1e9 100644 --- a/resources/quality/key3d/key3d_tyro_fast.inst.cfg +++ b/resources/quality/key3d/key3d_tyro_fast.inst.cfg @@ -41,7 +41,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.24 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 0 material_final_print_temperature = 220 diff --git a/resources/quality/key3d/key3d_tyro_normal.inst.cfg b/resources/quality/key3d/key3d_tyro_normal.inst.cfg index 8901631b75..320d00fc89 100644 --- a/resources/quality/key3d/key3d_tyro_normal.inst.cfg +++ b/resources/quality/key3d/key3d_tyro_normal.inst.cfg @@ -41,7 +41,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.16 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 0 material_final_print_temperature = 220 diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg index 39460a466d..7eafc33950 100644 --- a/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg +++ b/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg @@ -40,7 +40,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.08 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 50 material_final_print_temperature = 220 diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg index 0b361a1718..aa29ce5466 100644 --- a/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg +++ b/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg @@ -38,7 +38,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.28 layer_height_0 = 0.4 -limit_support_retractions = True line_width = 0.6 material_bed_temperature = 50 material_final_print_temperature = 220 diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg index f5ae176bc2..abb37d28a5 100644 --- a/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg +++ b/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg @@ -40,7 +40,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.24 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 50 material_final_print_temperature = 220 diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg index e568857eba..db362607a6 100644 --- a/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg +++ b/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg @@ -40,7 +40,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.16 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 50 material_final_print_temperature = 220 diff --git a/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg b/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg index 606d958306..d00f61341a 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg @@ -40,7 +40,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.08 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 0 material_final_print_temperature = 220 diff --git a/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg b/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg index 5fcfc53622..6b5f89cf17 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg @@ -40,7 +40,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.24 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 0 material_final_print_temperature = 220 diff --git a/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg b/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg index cf700921ad..9a40e626cf 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg @@ -40,7 +40,6 @@ ironing_enabled = False jerk_enabled = False layer_height = 0.16 layer_height_0 = 0.24 -limit_support_retractions = True line_width = 0.4 material_bed_temperature = 0 material_final_print_temperature = 220