VersionUpgrade45to46.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # Copyright (c) 2020 Ultimaker B.V.
  2. # Cura is released under the terms of the LGPLv3 or higher.
  3. import configparser
  4. from typing import Tuple, List
  5. import io
  6. from UM.VersionUpgrade import VersionUpgrade
  7. _removed_settings = {
  8. "machine_filament_park_distance"
  9. }
  10. class VersionUpgrade45to46(VersionUpgrade):
  11. def getCfgVersion(self, serialised: str) -> int:
  12. parser = configparser.ConfigParser(interpolation = None)
  13. parser.read_string(serialised)
  14. format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised.
  15. setting_version = int(parser.get("metadata", "setting_version", fallback = "0"))
  16. return format_version * 1000000 + setting_version
  17. ## Upgrades Preferences to have the new version number.
  18. #
  19. # This renames the renamed settings in the list of visible settings.
  20. def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
  21. parser = configparser.ConfigParser(interpolation = None)
  22. parser.read_string(serialized)
  23. # Update version number.
  24. parser["metadata"]["setting_version"] = "12"
  25. # Remove deleted settings from the visible settings list.
  26. visible_settings = set(parser["general"]["visible_settings"].split(";"))
  27. for removed in _removed_settings:
  28. if removed in visible_settings:
  29. visible_settings.remove(removed)
  30. parser["general"]["visible_settings"] = ";".join(visible_settings)
  31. result = io.StringIO()
  32. parser.write(result)
  33. return [filename], [result.getvalue()]
  34. ## Upgrades instance containers to have the new version
  35. # number.
  36. #
  37. # This renames the renamed settings in the containers.
  38. def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
  39. parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
  40. parser.read_string(serialized)
  41. # Update version number.
  42. parser["metadata"]["setting_version"] = "12"
  43. if "values" in parser:
  44. for removed in _removed_settings:
  45. if removed in parser["values"]:
  46. del parser["values"][removed]
  47. result = io.StringIO()
  48. parser.write(result)
  49. return [filename], [result.getvalue()]
  50. ## Upgrades stacks to have the new version number.
  51. def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
  52. parser = configparser.ConfigParser(interpolation = None)
  53. parser.read_string(serialized)
  54. # Update version number.
  55. if "metadata" not in parser:
  56. parser["metadata"] = {}
  57. parser["metadata"]["setting_version"] = "12"
  58. result = io.StringIO()
  59. parser.write(result)
  60. return [filename], [result.getvalue()]