diff options
-rwxr-xr-x | cura/CuraApplication.py | 24 | ||||
-rw-r--r-- | cura/Settings/CuraContainerRegistry.py | 2 | ||||
-rw-r--r-- | plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py | 43 | ||||
-rw-r--r-- | plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py | 35 | ||||
-rw-r--r-- | plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json | 8 |
5 files changed, 101 insertions, 11 deletions
diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 67a57bd0cb..42f169ad0c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -132,19 +132,21 @@ class CuraApplication(QtApplication): QmlFiles = Resources.UserType + 1 Firmware = Resources.UserType + 2 QualityInstanceContainer = Resources.UserType + 3 - MaterialInstanceContainer = Resources.UserType + 4 - VariantInstanceContainer = Resources.UserType + 5 - UserInstanceContainer = Resources.UserType + 6 - MachineStack = Resources.UserType + 7 - ExtruderStack = Resources.UserType + 8 - DefinitionChangesContainer = Resources.UserType + 9 - SettingVisibilityPreset = Resources.UserType + 10 + QualityChangesInstanceContainer = Resources.UserType + 4 + MaterialInstanceContainer = Resources.UserType + 5 + VariantInstanceContainer = Resources.UserType + 6 + UserInstanceContainer = Resources.UserType + 7 + MachineStack = Resources.UserType + 8 + ExtruderStack = Resources.UserType + 9 + DefinitionChangesContainer = Resources.UserType + 10 + SettingVisibilityPreset = Resources.UserType + 11 + CuraPackages = Resources.UserType + 12 Q_ENUMS(ResourceTypes) def __init__(self, **kwargs): # this list of dir names will be used by UM to detect an old cura directory - for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]: + for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "quality_changes", "user", "variants"]: Resources.addExpectedDirNameInData(dir_name) Resources.addSearchPath(os.path.join(QtApplication.getInstallPrefix(), "share", "cura", "resources")) @@ -180,6 +182,7 @@ class CuraApplication(QtApplication): ## Add the 4 types of profiles to storage. Resources.addStorageType(self.ResourceTypes.QualityInstanceContainer, "quality") + Resources.addStorageType(self.ResourceTypes.QualityChangesInstanceContainer, "quality_changes") Resources.addStorageType(self.ResourceTypes.VariantInstanceContainer, "variants") Resources.addStorageType(self.ResourceTypes.MaterialInstanceContainer, "materials") Resources.addStorageType(self.ResourceTypes.UserInstanceContainer, "user") @@ -187,9 +190,10 @@ class CuraApplication(QtApplication): Resources.addStorageType(self.ResourceTypes.MachineStack, "machine_instances") Resources.addStorageType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") Resources.addStorageType(self.ResourceTypes.SettingVisibilityPreset, "setting_visibility") + Resources.addStorageType(self.ResourceTypes.CuraPackages, "cura_packages") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality") - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality_changes") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityChangesInstanceContainer, "quality_changes") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.VariantInstanceContainer, "variant") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.MaterialInstanceContainer, "material") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.UserInstanceContainer, "user") @@ -203,7 +207,7 @@ class CuraApplication(QtApplication): UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions( { - ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityChangesInstanceContainer, "application/x-uranium-instancecontainer"), ("machine_stack", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), ("extruder_train", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 8d4f711155..dbbbdc0718 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -676,7 +676,7 @@ class CuraContainerRegistry(ContainerRegistry): return extruder_stack
def _findQualityChangesContainerInCuraFolder(self, name):
- quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer)
+ quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityChangesInstanceContainer)
instance_container = None
diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py b/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py new file mode 100644 index 0000000000..4e7b09564a --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py @@ -0,0 +1,43 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser #To parse preference files. +import io #To serialise the preference files afterwards. + +from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. + + +## Upgrades configurations from the state they were in at version 3.2 to the +# state they should be in at version 3.3. +class VersionUpgrade33to34(VersionUpgrade): + + ## Gets the version number from a CFG file in Uranium's 3.2 format. + # + # Since the format may change, this is implemented for the 3.2 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + return format_version * 1000000 + setting_version + + ## Upgrades instance containers to have the new version + # number. + def upgradeInstanceContainer(self, serialized, filename): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["general"]["version"] = "4" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py b/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py new file mode 100644 index 0000000000..c36247353f --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py @@ -0,0 +1,35 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import VersionUpgrade33to34 + +upgrade = VersionUpgrade33to34.VersionUpgrade33to34() + + +def getMetaData(): + return { + "version_upgrade": { + # From To Upgrade function + ("definition_changes", 3000004): ("definition_changes", 4000004, upgrade.upgradeInstanceContainer), + ("quality_changes", 3000004): ("quality_changes", 4000004, upgrade.upgradeInstanceContainer), + ("user", 3000004): ("user", 4000004, upgrade.upgradeInstanceContainer), + }, + "sources": { + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app): + return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json new file mode 100644 index 0000000000..164b79d504 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json @@ -0,0 +1,8 @@ + { + "name": "Version Upgrade 3.3 to 3.4", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", + "api": 4, + "i18n-catalog": "cura" +} |