CuraStackBuilder.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # Copyright (c) 2017 Ultimaker B.V.
  2. # Cura is released under the terms of the AGPLv3 or higher.
  3. from UM.Settings.DefinitionContainer import DefinitionContainer
  4. from UM.Settings.InstanceContainer import InstanceContainer
  5. from UM.Settings.ContainerRegistry import ContainerRegistry
  6. from .GlobalStack import GlobalStack
  7. from .ExtruderStack import ExtruderStack
  8. class CuraStackBuilder:
  9. @staticmethod
  10. def createExtruderStack(new_stack_id: str, definition_id: str, **kwargs) -> ExtruderStack:
  11. registry = ContainerRegistry.getInstance()
  12. stack = ExtruderStack(new_stack_id)
  13. user_container = InstanceContainer(new_stack_id + "_user")
  14. user_container.addMetaDataEntry("type", "user")
  15. user_container.addMetaDataEntry("machine", new_stack_id)
  16. stack.setUserChanges(user_container)
  17. if "quality_changes" in kwargs:
  18. stack.setQualityChangesById(kwargs["quality_changes"])
  19. if "quality" in kwargs:
  20. stack.setQualityById(kwargs["quality"])
  21. if "material" in kwargs:
  22. stack.setMaterialById(kwargs["material"])
  23. if "variant" in kwargs:
  24. stack.setVariantById(kwargs["variant"])
  25. if "definition_changes" in kwargs:
  26. stack.setDefinitionChangesById(kwargs["definition_changes"])
  27. if "definition" in kwargs:
  28. stack.setDefinitionById(kwargs["definition"])
  29. if "next_stack" in kwargs:
  30. stack.setNextStack(kwargs["next_stack"])
  31. # Only add the created containers to the registry after we have set all the other
  32. # properties. This makes the create operation more transactional, since any problems
  33. # setting properties will not result in incomplete containers being added.
  34. registry.addContainer(stack)
  35. registry.addContainer(user_container)
  36. return stack
  37. @staticmethod
  38. def createGlobalStack(new_stack_id: str, definition: DefinitionContainer, **kwargs) -> GlobalStack:
  39. registry = ContainerRegistry.getInstance()
  40. stack = GlobalStack(new_stack_id)
  41. stack.setDefinition(definition)
  42. user_container = InstanceContainer(new_stack_id + "_user")
  43. user_container.addMetaDataEntry("type", "user")
  44. user_container.addMetaDataEntry("machine", new_stack_id)
  45. user_container.setDefinition(definition)
  46. stack.setUserChanges(user_container)
  47. if "quality_changes" in kwargs:
  48. stack.setQualityChangesById(kwargs["quality_changes"])
  49. if "quality" in kwargs:
  50. stack.setQualityById(kwargs["quality"])
  51. if "material" in kwargs:
  52. stack.setMaterialById(kwargs["material"])
  53. if "variant" in kwargs:
  54. stack.setVariantById(kwargs["variant"])
  55. if "definition_changes" in kwargs:
  56. stack.setDefinitionChangesById(kwargs["definition_changes"])
  57. registry.addContainer(stack)
  58. registry.addContainer(user_container)
  59. return stack