UMOUpgradeSelection.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. variant = global_container_stack.findContainer({"type": "variant"})
  24. if variant:
  25. if variant.getId() == "empty_variant":
  26. variant_index = global_container_stack.getContainerIndex(variant)
  27. variant = self._createVariant(global_container_stack, variant_index)
  28. variant.setProperty("machine_heated_bed", "value", heated_bed)
  29. self.heatedBedChanged.emit()
  30. def _createVariant(self, global_container_stack, variant_index):
  31. # Create and switch to a variant to store the settings in
  32. new_variant = UM.Settings.InstanceContainer(global_container_stack.getName() + "_variant")
  33. new_variant.addMetaDataEntry("type", "variant")
  34. new_variant.setDefinition(global_container_stack.getBottom())
  35. UM.Settings.ContainerRegistry.getInstance().addContainer(new_variant)
  36. global_container_stack.replaceContainer(variant_index, new_variant)
  37. return new_variant