diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 7d0d8ba861..146da4a47c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -458,15 +458,16 @@ class CuraApplication(QtApplication): self._version_upgrade_manager.setCurrentVersions( { - ("quality", 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"), - ("intent", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.IntentInstanceContainer, "application/x-uranium-instancecontainer"), - ("machine_stack", GlobalStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), - ("extruder_train", ExtruderStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), - ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), - ("user", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer"), - ("definition_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.DefinitionChangesContainer, "application/x-uranium-instancecontainer"), - ("variant", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.VariantInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality", 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"), + ("intent", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.IntentInstanceContainer, "application/x-uranium-instancecontainer"), + ("machine_stack", GlobalStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), + ("extruder_train", ExtruderStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), + ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), + ("user", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer"), + ("definition_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.DefinitionChangesContainer, "application/x-uranium-instancecontainer"), + ("variant", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.VariantInstanceContainer, "application/x-uranium-instancecontainer"), + ("setting_visibility", SettingVisibilityPresetsModel.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.SettingVisibilityPreset, "application/x-uranium-preferences"), } ) diff --git a/cura/Machines/Models/SettingVisibilityPresetsModel.py b/cura/Machines/Models/SettingVisibilityPresetsModel.py index 6b5766c127..d268774850 100644 --- a/cura/Machines/Models/SettingVisibilityPresetsModel.py +++ b/cura/Machines/Models/SettingVisibilityPresetsModel.py @@ -19,6 +19,8 @@ class SettingVisibilityPresetsModel(QObject): onItemsChanged = pyqtSignal() activePresetChanged = pyqtSignal() + Version = 2 + def __init__(self, preferences: Preferences, parent = None) -> None: super().__init__(parent) diff --git a/plugins/VersionUpgrade/VersionUpgrade48to49/VersionUpgrade48to49.py b/plugins/VersionUpgrade/VersionUpgrade48to49/VersionUpgrade48to49.py index a6fdd224c3..ea004952cf 100644 --- a/plugins/VersionUpgrade/VersionUpgrade48to49/VersionUpgrade48to49.py +++ b/plugins/VersionUpgrade/VersionUpgrade48to49/VersionUpgrade48to49.py @@ -92,3 +92,35 @@ class VersionUpgrade48to49(VersionUpgrade): result = io.StringIO() parser.write(result) return [filename], [result.getvalue()] + + def upgradeSettingVisibility(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades setting visibility to have a version number and move moved settings to a different category + + This updates the post-processing scripts with new parameters. + :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, allow_no_value=True) + parser.read_string(serialized) + + moved_settings = ["top_bottom_extruder_nr", "top_bottom_thickness", "top_thickness", "top_layers", + "bottom_thickness", "bottom_layers", "ironing_enabled"] + + # add version number for the first time + parser["general"]["version"] = "2" + + if "top_bottom" not in parser: + parser["top_bottom"] = {} + + if "shell" in parser: + for setting in parser["shell"]: + if setting in moved_settings: + parser["top_bottom"][setting] = None + del parser["shell"][setting] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade48to49/__init__.py b/plugins/VersionUpgrade/VersionUpgrade48to49/__init__.py index 10bc84197f..347df8a163 100644 --- a/plugins/VersionUpgrade/VersionUpgrade48to49/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade48to49/__init__.py @@ -20,6 +20,7 @@ def getMetaData() -> Dict[str, Any]: ("definition_changes", 4000016): ("definition_changes", 4000017, upgrade.upgradeInstanceContainer), ("quality_changes", 4000016): ("quality_changes", 4000017, upgrade.upgradeInstanceContainer), ("quality", 4000016): ("quality", 4000017, upgrade.upgradeInstanceContainer), + ("setting_visibility", 1000000): ("setting_visibility", 2000017, upgrade.upgradeSettingVisibility), ("user", 4000016): ("user", 4000017, upgrade.upgradeInstanceContainer), }, "sources": { @@ -47,6 +48,10 @@ def getMetaData() -> Dict[str, Any]: "get_version": upgrade.getCfgVersion, "location": {"./quality"} }, + "setting_visibility": { + "get_version": upgrade.getCfgVersion, + "location": {"./setting_visibility"} + }, "user": { "get_version": upgrade.getCfgVersion, "location": {"./user"}