diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index e946c18790..a798895fc0 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -504,16 +504,6 @@ class MachineManager(QObject): return result - @pyqtProperty("QVariantList", notify = activeVariantChanged) - def activeMaterialIds(self): - result = [] - if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None: - for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): - if stack.variant and stack.variant != self._empty_variant_container: - result.append(stack.variant.getId()) - - return result - @pyqtProperty("QVariantList", notify = activeMaterialChanged) def activeMaterialNames(self): result = [] diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 9127276f3d..e167e65855 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -39,17 +39,20 @@ Menu visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].materialNames.length > extruderIndex onTriggered: { - var material_id = Cura.MachineManager.printerOutputDevices[0].materialIds[extruderIndex]; + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); + var materialId = Cura.MachineManager.printerOutputDevices[0].materialIds[extruderIndex]; var items = materialsModel.items; // materialsModel.find cannot be used because we need to look inside the metadata property of items for(var i in items) { - if (items[i]["metadata"]["GUID"] == material_id) + if (items[i]["metadata"]["GUID"] == materialId) { Cura.MachineManager.setActiveMaterial(items[i].id); break; } } + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } @@ -64,12 +67,15 @@ Menu MenuItem { text: model.name - checkable: true; - checked: model.id == Cura.MachineManager.activeMaterialId; - exclusiveGroup: group; + checkable: true + checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]] + exclusiveGroup: group onTriggered: { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); Cura.MachineManager.setActiveMaterial(model.id); + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } onObjectAdded: menu.insertItem(index, object) @@ -102,12 +108,15 @@ Menu MenuItem { text: model.name - checkable: true; - checked: model.id == Cura.MachineManager.activeMaterialId; - exclusiveGroup: group; + checkable: true + checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]] + exclusiveGroup: group onTriggered: { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); Cura.MachineManager.setActiveMaterial(model.id); + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } onObjectAdded: brandMaterialsMenu.insertItem(index, object) diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index a9fffc84ab..ee7ddacf98 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -30,12 +30,15 @@ Menu visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex onTriggered: { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex]; var itemIndex = nozzleInstantiator.model.find("name", hotendId); if(itemIndex > -1) { - Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id) + Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id); } + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } @@ -56,11 +59,17 @@ Menu } } MenuItem { - text: model.name; - checkable: true; - checked: model.id == Cura.MachineManager.activeVariantId; + text: model.name + checkable: true + checked: model.id == Cura.MachineManager.allActiveVariantIds[ExtruderManager.extruderIds[extruderIndex]] exclusiveGroup: group - onTriggered: Cura.MachineManager.setActiveVariant(model.id) + onTriggered: + { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); + Cura.MachineManager.setActiveVariant(model.id); + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + } } onObjectAdded: menu.insertItem(index, object) onObjectRemoved: menu.removeItem(object)