mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 00:07:51 -06:00
Change the implementation of creating a profile from the current settings
The newly created profile now combines the settings of the active quality profile and the current settings CURA-970, CURA-1585
This commit is contained in:
parent
4da69a4d3e
commit
d34d398e96
4 changed files with 11 additions and 31 deletions
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -582,7 +582,7 @@ UM.MainWindow
|
|||
target: Cura.Actions.addProfile
|
||||
onTriggered:
|
||||
{
|
||||
Cura.MachineManager.convertUserContainerToQuality();
|
||||
Cura.MachineManager.newQualityContainerFromQualityAndUser();
|
||||
preferences.setPage(5);
|
||||
preferences.show();
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue