diff --git a/plugins/UltimakerMachineActions/UMOUpgradeSelection.py b/plugins/UltimakerMachineActions/UMOUpgradeSelection.py index 56540b591e..2e13ec50d5 100644 --- a/plugins/UltimakerMachineActions/UMOUpgradeSelection.py +++ b/plugins/UltimakerMachineActions/UMOUpgradeSelection.py @@ -1,10 +1,47 @@ 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" \ No newline at end of file + self._qml_url = "UMOUpgradeSelectionMachineAction.qml" + + heatedBedChanged = pyqtSignal() + + @pyqtProperty(bool, notify = heatedBedChanged) + def hasHeatedBed(self): + global_container_stack = Application.getInstance().getGlobalContainerStack() + return global_container_stack.getProperty("machine_heated_bed", "value") + + @pyqtSlot() + def addHeatedBed(self): + 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) + stack_name = global_container_stack.getName() + new_variant = UM.Settings.InstanceContainer(stack_name + "_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) + variant = new_variant + variant.setProperty("machine_heated_bed", "value", True) + self.heatedBedChanged.emit() + + @pyqtSlot() + def removeHeatedBed(self): + global_container_stack = Application.getInstance().getGlobalContainerStack() + if global_container_stack: + variant = global_container_stack.findContainer({"type": "variant"}) + if variant: + variant.setProperty("machine_heated_bed", "value", False) + self.heatedBedChanged.emit() \ No newline at end of file diff --git a/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml b/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml index bc0f1fe3b4..53a7e47a6b 100644 --- a/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml +++ b/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml @@ -19,5 +19,21 @@ Cura.MachineAction anchors.fill: parent; UM.I18nCatalog { id: catalog; name: "cura"; } + Column + { + anchors.fill: parent; + Label + { + width: parent.width + wrapMode: Text.WordWrap + text: catalog.i18nc("@label","Please select any upgrades made to this ultimaker original"); + } + CheckBox + { + text: catalog.i18nc("@label", "Self-built heated bed") + checked: manager.hasHeatedBed + onClicked: manager.hasHeatedBed ? manager.removeHeatedBed() : manager.addHeatedBed() + } + } } } \ No newline at end of file diff --git a/plugins/UltimakerMachineActions/__init__.py b/plugins/UltimakerMachineActions/__init__.py index 39734d00e3..fb0b2b1f64 100644 --- a/plugins/UltimakerMachineActions/__init__.py +++ b/plugins/UltimakerMachineActions/__init__.py @@ -4,6 +4,7 @@ from . import BedLevelMachineAction from . import UpgradeFirmwareMachineAction from . import UMOCheckupMachineAction +from . import UMOUpgradeSelection from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -20,4 +21,4 @@ def getMetaData(): } def register(app): - return { "machine_action": [BedLevelMachineAction.BedLevelMachineAction(), UpgradeFirmwareMachineAction.UpgradeFirmwareMachineAction(), UMOCheckupMachineAction.UMOCheckupMachineAction()]} + return { "machine_action": [BedLevelMachineAction.BedLevelMachineAction(), UpgradeFirmwareMachineAction.UpgradeFirmwareMachineAction(), UMOCheckupMachineAction.UMOCheckupMachineAction(), UMOUpgradeSelection.UMOUpgradeSelection()]} diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index e95431c99e..60eb8dcd00 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -14,7 +14,7 @@ "has_materials": true, "preferred_material": "*pla*", "preferred_quality": "*normal*", - "supported_actions":["UMOCheckup", "UpgradeFirmware", "BedLevel"] + "supported_actions":["UMOCheckup", "UpgradeFirmware", "BedLevel", "UMOUpgradeSelection"] }, "overrides": {