Make merged settings extensible

This way it's:
- documented at the top of the file to make it easier to find all the changes, and
- easier to extend the list of merged settings.

Contributes to issue CURA-7077.
This commit is contained in:
Ghostkeeper 2019-12-23 16:01:43 +01:00
parent 824dd59e76
commit dbda415bba
No known key found for this signature in database
GPG key ID: 37E2020986774393

View file

@ -3,6 +3,12 @@ from typing import Tuple, List
import io import io
from UM.VersionUpgrade import VersionUpgrade from UM.VersionUpgrade import VersionUpgrade
# Settings that were merged into one. Each one is a pair of settings. If both
# are overwritten, the key wins. If only the key or the value is overwritten,
# that value is used in the key.
_merged_settings = {
"machine_head_with_fans_polygon": "machine_head_polygon"
}
class VersionUpgrade44to45(VersionUpgrade): class VersionUpgrade44to45(VersionUpgrade):
def getCfgVersion(self, serialised: str) -> int: def getCfgVersion(self, serialised: str) -> int:
@ -37,17 +43,16 @@ class VersionUpgrade44to45(VersionUpgrade):
# Update version number. # Update version number.
parser["metadata"]["setting_version"] = "11" parser["metadata"]["setting_version"] = "11"
# Merged preferences: machine_head_polygon and machine_head_with_fans_polygon -> machine_head_with_fans_polygon
# When both are present, machine_head_polygon will be removed
# When only one of the two is present, it's value will be used
if "values" in parser: if "values" in parser:
# merge machine_head_with_fans_polygon (preferred) and machine_head_polygon # Merged settings: When two settings are merged, one is preferred.
if "machine_head_with_fans_polygon" in parser["values"]: # If the preferred one is available, that value is taken regardless
if "machine_head_polygon" in parser["values"]: # of the other one. If only the non-preferred one is available, that
del parser["values"]["machine_head_polygon"] # value is moved to the preferred setting value.
elif "machine_head_polygon" in parser["values"]: for preferred, removed in _merged_settings.items():
parser["values"]["machine_head_with_fans_polygon"] = parser["values"]["machine_head_polygon"] if removed in parser["values"]:
del parser["values"]["machine_head_polygon"] if preferred not in parser["values"]:
parser["values"][preferred] = parser["values"][removed]
del parser["values"][removed]
result = io.StringIO() result = io.StringIO()
parser.write(result) parser.write(result)