123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from cura.MachineAction import MachineAction
- from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty
- from UM.i18n import i18nCatalog
- from UM.Application import Application
- catalog = i18nCatalog("cura")
- import UM.Settings.InstanceContainer
- class UMOUpgradeSelection(MachineAction):
- def __init__(self):
- super().__init__("UMOUpgradeSelection", catalog.i18nc("@action", "Select upgrades"))
- self._qml_url = "UMOUpgradeSelectionMachineAction.qml"
- def _reset(self):
- self.heatedBedChanged.emit()
- heatedBedChanged = pyqtSignal()
- @pyqtProperty(bool, notify = heatedBedChanged)
- def hasHeatedBed(self):
- global_container_stack = Application.getInstance().getGlobalContainerStack()
- if global_container_stack:
- return global_container_stack.getProperty("machine_heated_bed", "value")
- @pyqtSlot(bool)
- def setHeatedBed(self, heated_bed = True):
- global_container_stack = Application.getInstance().getGlobalContainerStack()
- if global_container_stack:
- variant = global_container_stack.findContainer({"type": "variant"})
- if variant:
- if variant.getId() == "empty_variant":
- variant_index = global_container_stack.getContainerIndex(variant)
- variant = self._createVariant(global_container_stack, variant_index)
- variant.setProperty("machine_heated_bed", "value", heated_bed)
- self.heatedBedChanged.emit()
- def _createVariant(self, global_container_stack, variant_index):
- # Create and switch to a variant to store the settings in
- new_variant = UM.Settings.InstanceContainer(global_container_stack.getName() + "_variant")
- new_variant.addMetaDataEntry("type", "variant")
- new_variant.setDefinition(global_container_stack.getBottom())
- UM.Settings.ContainerRegistry.getInstance().addContainer(new_variant)
- global_container_stack.replaceContainer(variant_index, new_variant)
- return new_variant
|