diff options
author | Ghostkeeper <rubend@tutanota.com> | 2022-03-29 11:34:21 +0300 |
---|---|---|
committer | Ghostkeeper <rubend@tutanota.com> | 2022-03-29 11:34:21 +0300 |
commit | 8a546bb6ef45f124188363227e11e5e9e291a866 (patch) | |
tree | f8d81a279fb22c8d3f0952619c07f49a44ea6eda /plugins/VersionUpgrade/VersionUpgrade413to50 | |
parent | cba956be193de02121159127a32095da27cb40b7 (diff) |
Rename VersionUpgrade49to50 to VersionUpgrade413to50
It's going to upgrade from 4.13 to 5.0. We will not support an upgrade path from the alpha/preview-betas to the stable release.
Contributes to issue CURA-8466.
Diffstat (limited to 'plugins/VersionUpgrade/VersionUpgrade413to50')
3 files changed, 187 insertions, 0 deletions
diff --git a/plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py b/plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py new file mode 100644 index 0000000000..3278f6813f --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py @@ -0,0 +1,118 @@ +# Copyright (c) 2022 Ultimaker B.V. +# 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 = { + "travel_compensate_overlapping_walls_enabled", + "travel_compensate_overlapping_walls_0_enabled", + "travel_compensate_overlapping_walls_x_enabled", + "fill_perimeter_gaps", + "wall_min_flow", + "wall_min_flow_retract", + "speed_equalize_flow_enabled", + "speed_equalize_flow_min" +} + + +class VersionUpgrade413to50(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"] = "18" + + # 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) + + # Replace Outer Before Inner Walls with equivalent. + if "outer_inset_first" in visible_settings: + visible_settings.remove("outer_inset_first") + visible_settings.add("inset_direction") + + 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"] = "18" + + 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] + + # Replace Outer Before Inner Walls with equivalent setting. + if "outer_inset_first" in parser["values"]: + old_value = parser["values"]["outer_inset_first"] + if old_value.startswith("="): # Was already a formula. + old_value = old_value[1:] + parser["values"]["inset_direction"] = f"='outside_in' if ({old_value}) else 'inside_out'" # Makes it work both with plain setting values and formulas. + + # Disable Fuzzy Skin as it doesn't work with with the libArachne walls + if "magic_fuzzy_skin_enabled" in parser["values"]: + parser["values"]["magic_fuzzy_skin_enabled"] = "False" + + 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["general"]["version"] = "5" + parser["metadata"]["setting_version"] = "18" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py b/plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py new file mode 100644 index 0000000000..cf58afd26a --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py @@ -0,0 +1,61 @@ +# Copyright (c) 2022 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade413to50 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade413to50.VersionUpgrade413to50() + +def getMetaData() -> Dict[str, Any]: + return { # Since there is no VersionUpgrade from 48 to 49 yet, upgrade the 48 profiles to 50. + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000016): ("preferences", 6000018, upgrade.upgradePreferences), + ("machine_stack", 5000016): ("machine_stack", 5000018, upgrade.upgradeStack), + ("extruder_train", 5000016): ("extruder_train", 5000018, upgrade.upgradeStack), + ("machine_stack", 4000018): ("machine_stack", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1 + ("extruder_train", 4000018): ("extruder_train", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1 + ("definition_changes", 4000016): ("definition_changes", 4000018, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000016): ("quality_changes", 4000018, upgrade.upgradeInstanceContainer), + ("quality", 4000016): ("quality", 4000018, upgrade.upgradeInstanceContainer), + ("user", 4000016): ("user", 4000018, 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/VersionUpgrade413to50/plugin.json b/plugins/VersionUpgrade/VersionUpgrade413to50/plugin.json new file mode 100644 index 0000000000..df3c53b5df --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade413to50/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.13 to 5.0", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.13 to Cura 5.0.", + "api": "7.9.0", + "i18n-catalog": "cura" +} |