Simplify interface of UMOUpgradeSelection

This commit is contained in:
fieldOfView 2016-08-22 18:44:46 +02:00
parent 3671d241d5
commit 9981cfbf6a
2 changed files with 15 additions and 21 deletions

View file

@ -20,31 +20,25 @@ class UMOUpgradeSelection(MachineAction):
@pyqtProperty(bool, notify = heatedBedChanged) @pyqtProperty(bool, notify = heatedBedChanged)
def hasHeatedBed(self): def hasHeatedBed(self):
global_container_stack = Application.getInstance().getGlobalContainerStack() global_container_stack = Application.getInstance().getGlobalContainerStack()
return global_container_stack.getProperty("machine_heated_bed", "value") if global_container_stack:
return global_container_stack.getProperty("machine_heated_bed", "value")
@pyqtSlot() @pyqtSlot(bool)
def addHeatedBed(self): def setHeatedBed(self, heated_bed = True):
global_container_stack = Application.getInstance().getGlobalContainerStack() global_container_stack = Application.getInstance().getGlobalContainerStack()
if global_container_stack: if global_container_stack:
variant = global_container_stack.findContainer({"type": "variant"}) variant = global_container_stack.findContainer({"type": "variant"})
if variant: if variant:
if variant.getId() == "empty_variant": if variant.getId() == "empty_variant":
variant_index = global_container_stack.getContainerIndex(variant) variant_index = global_container_stack.getContainerIndex(variant)
stack_name = global_container_stack.getName() self._createVariant(global_container_stack, variant_index)
new_variant = UM.Settings.InstanceContainer(stack_name + "_variant") variant.setProperty("machine_heated_bed", "value", heated_bed)
new_variant.addMetaDataEntry("type", "variant") self.heatedBedChanged.emit()
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 _createVariant(self, global_container_stack, variant_index):
def removeHeatedBed(self): # Create and switch to a variant to store the settings in
global_container_stack = Application.getInstance().getGlobalContainerStack() new_variant = UM.Settings.InstanceContainer(global_container_stack.getName() + "_variant")
if global_container_stack: new_variant.addMetaDataEntry("type", "variant")
variant = global_container_stack.findContainer({"type": "variant"}) new_variant.setDefinition(global_container_stack.getBottom())
if variant: UM.Settings.ContainerRegistry.getInstance().addContainer(new_variant)
variant.setProperty("machine_heated_bed", "value", False) global_container_stack.replaceContainer(variant_index, new_variant)
self.heatedBedChanged.emit()

View file

@ -44,7 +44,7 @@ Cura.MachineAction
text: catalog.i18nc("@label", "Heated Build Plate (official kit or self-built)") text: catalog.i18nc("@label", "Heated Build Plate (official kit or self-built)")
checked: manager.hasHeatedBed checked: manager.hasHeatedBed
onClicked: checked ? manager.addHeatedBed() : manager.removeHeatedBed() onClicked: manager.setHeatedBed(checked)
} }
UM.I18nCatalog { id: catalog; name: "cura"; } UM.I18nCatalog { id: catalog; name: "cura"; }