mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-22 05:39:37 +08:00
Properly implement ContainerManager::createQualityChanges
Contributes to CURA-2006
This commit is contained in:
parent
b76ebbb850
commit
2ee2bc7348
@ -389,26 +389,51 @@ class ContainerManager(QObject):
|
||||
|
||||
global_stack.getTop().clear()
|
||||
|
||||
@pyqtSlot()
|
||||
@pyqtSlot(result = bool)
|
||||
def createQualityChanges(self):
|
||||
global_stack = UM.Application.getInstance().getGlobalContainerStack()
|
||||
if not global_stack:
|
||||
return False
|
||||
|
||||
user_container = global_stack.getTop()
|
||||
quality_container = global_stack.findContainer(type = "quality")
|
||||
if not quality_container:
|
||||
return
|
||||
UM.Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId())
|
||||
return False
|
||||
|
||||
MachineManager.getInstance().blurSettings.emit()
|
||||
|
||||
unique_name = UM.Settings.ContainerRegistry.getInstance().uniqueName(quality_container.getName())
|
||||
unique_id = unique_name.lower()
|
||||
unique_id.replace(" ", "_")
|
||||
|
||||
quality_changes = user_container.duplicate()
|
||||
quality_changes.setMetaDataEntry("type", "quality_changes")
|
||||
quality_changes.setMetaDataEntry("quality_base", quality_container.getId())
|
||||
stacks = [ s for s in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()) ]
|
||||
stacks.insert(0, global_stack)
|
||||
|
||||
UM.Settings.ContainerRegistry.getInstance().addContainer(quality_changes)
|
||||
for stack in stacks:
|
||||
user_container = stack.getTop()
|
||||
quality_container = stack.findContainer(type = "quality")
|
||||
quality_changes_container = stack.findContainer(type = "quality_changes")
|
||||
if not quality_container or not quality_changes_container:
|
||||
UM.Logger.log("w", "No quality or quality changes container found in stack %s, ignoring it", stack.getId())
|
||||
return False
|
||||
|
||||
new_quality_changes = user_container.duplicate(stack.getId() + "_" + unique_id, unique_name)
|
||||
new_quality_changes.setMetaDataEntry("type", "quality_changes")
|
||||
new_quality_changes.addMetaDataEntry("quality", quality_container.getId())
|
||||
|
||||
if not global_stack.getMetaDataEntry("has_machine_quality"):
|
||||
new_quality_changes.setDefinition(UM.Settings.ContainerRegistry.getInstance().findContainers(id = "fdmprinter")[0])
|
||||
|
||||
if global_stack.getMetaDataEntry("has_materials"):
|
||||
material = stack.findContainer(type = "material")
|
||||
new_quality_changes.addMetaDataEntry("material", material.getId())
|
||||
|
||||
UM.Settings.ContainerRegistry.getInstance().addContainer(new_quality_changes)
|
||||
|
||||
stack.replaceContainer(stack.getContainerIndex(quality_changes_container), new_quality_changes)
|
||||
stack.getTop().clear()
|
||||
|
||||
return True
|
||||
|
||||
# Factory function, used by QML
|
||||
@staticmethod
|
||||
|
Loading…
x
Reference in New Issue
Block a user