diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index e9a07f58f7..6768a357a5 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -269,38 +269,18 @@ class MachineManagerModel(QObject): return containers[0].isReadOnly() @pyqtSlot(result = str) - def convertUserContainerToQuality(self): - if not self._global_container_stack: + def newQualityContainerFromQualityAndUser(self): + new_container_id = self.duplicateContainer(self.activeQualityId) + if new_container_id == "": return + self.setActiveQuality(new_container_id) + self.updateQualityContainerFromUserContainer() - new_quality_container = InstanceContainer("") - name = self._createUniqueName("quality", "", self.activeQualityName, catalog.i18nc("@label", "Custom profile")) - user_settings = self._global_container_stack.getTop() - - ## Copy all values - new_quality_container.deserialize(user_settings.serialize()) - - ## If the currently active machine does not have quality profiles of its own, - # make the new quality profile available for all machines that don't have - # unique quality profiles (including the current machine) - if not self.filterQualityByMachine: - new_quality_container.setDefinition(UM.Settings.ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0]) - - ## Change type / id / name - new_quality_container.setMetaDataEntry("type", "quality") - new_quality_container.setReadOnly(False) - new_quality_container.setName(name) - new_quality_container._id = name - - UM.Settings.ContainerRegistry.getInstance().addContainer(new_quality_container) - self.clearUserSettings() # As all users settings are now transfered to the new quality profile, remove them. - self.setActiveQuality(name) - return name @pyqtSlot(str, result=str) def duplicateContainer(self, container_id): if not self._global_container_stack: - return + return "" containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id=container_id) if containers: new_name = self._createUniqueName("quality", "", containers[0].getName(), catalog.i18nc("@label", "Custom profile")) @@ -348,7 +328,7 @@ class MachineManagerModel(QObject): @pyqtSlot() - def updateUserContainerToQuality(self): + def updateQualityContainerFromUserContainer(self): if not self._global_container_stack: return user_settings = self._global_container_stack.getTop() diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index e09b6b5424..3ef40644d2 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -112,7 +112,7 @@ Item id: updateProfileAction; enabled: Cura.MachineManager.isGlobalStackValid && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId) text: catalog.i18nc("@action:inmenu menubar:profile","&Update Current Profile"); - onTriggered: Cura.MachineManager.updateUserContainerToQuality() + onTriggered: Cura.MachineManager.updateQualityContainerFromUserContainer() } Action diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index a1023d8ef2..547f05d056 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -582,7 +582,7 @@ UM.MainWindow target: Cura.Actions.addProfile onTriggered: { - Cura.MachineManager.convertUserContainerToQuality(); + Cura.MachineManager.newQualityContainerFromQualityAndUser(); preferences.setPage(5); preferences.show(); diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index cd37df3cc5..71afdd98ac 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -65,7 +65,7 @@ UM.ManagementPage onAddObject: { var selectedContainer; if (objectList.currentItem.id == Cura.MachineManager.activeQualityId) { - selectedContainer = Cura.MachineManager.convertUserContainerToQuality(); + selectedContainer = Cura.MachineManager.newQualityContainerFromQualityAndUser(); } else { selectedContainer = Cura.MachineManager.duplicateContainer(base.currentItem.id); } @@ -121,7 +121,7 @@ UM.ManagementPage return catalog.i18nc("@action:button", "Update \"%1\"".arg(profileName)); } enabled: Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId) - onClicked: Cura.MachineManager.updateUserContainerToQuality() + onClicked: Cura.MachineManager.updateQualityContainerFromUserContainer() } Button