UMOUpgradeSelection.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from cura.MachineAction import MachineAction
  2. from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty
  3. from UM.i18n import i18nCatalog
  4. from UM.Application import Application
  5. catalog = i18nCatalog("cura")
  6. import UM.Settings.InstanceContainer
  7. class UMOUpgradeSelection(MachineAction):
  8. def __init__(self):
  9. super().__init__("UMOUpgradeSelection", catalog.i18nc("@action", "Select upgrades"))
  10. self._qml_url = "UMOUpgradeSelectionMachineAction.qml"
  11. def _reset(self):
  12. self.heatedBedChanged.emit()
  13. heatedBedChanged = pyqtSignal()
  14. @pyqtProperty(bool, notify = heatedBedChanged)
  15. def hasHeatedBed(self):
  16. global_container_stack = Application.getInstance().getGlobalContainerStack()
  17. if global_container_stack:
  18. return global_container_stack.getProperty("machine_heated_bed", "value")
  19. @pyqtSlot(bool)
  20. def setHeatedBed(self, heated_bed = True):
  21. global_container_stack = Application.getInstance().getGlobalContainerStack()
  22. if global_container_stack:
  23. # Make sure there is a definition_changes container to store the machine settings
  24. definition_changes_container = global_container_stack.findContainer({"type": "definition_changes"})
  25. if not definition_changes_container:
  26. definition_changes_container = self._createDefinitionChangesContainer(global_container_stack)
  27. definition_changes_container.setProperty("machine_heated_bed", "value", heated_bed)
  28. self.heatedBedChanged.emit()
  29. def _createDefinitionChangesContainer(self, global_container_stack):
  30. # Create a definition_changes container to store the settings in and add it to the stack
  31. definition_changes_container = UM.Settings.InstanceContainer(global_container_stack.getName() + "_settings")
  32. definition = global_container_stack.getBottom()
  33. definition_changes_container.setDefinition(definition)
  34. definition_changes_container.addMetaDataEntry("type", "definition_changes")
  35. UM.Settings.ContainerRegistry.getInstance().addContainer(definition_changes_container)
  36. # Insert definition_changes between the definition and the variant
  37. global_container_stack.insertContainer(-1, definition_changes_container)
  38. return definition_changes_container