From cf7a6730d134a23d4715a7838806789341c90df2 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 14 Sep 2016 17:39:49 +0200 Subject: [PATCH] Add a menuitem to load the nozzle/material loaded on the printer CURA-2276 --- resources/qml/Cura.qml | 4 ++-- resources/qml/Menus/MaterialMenu.qml | 25 +++++++++++++++++++++++-- resources/qml/Menus/NozzleMenu.qml | 21 +++++++++++++++++++-- resources/qml/SidebarHeader.qml | 4 ++-- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index a3dda4d7c2..eba803ef28 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -145,8 +145,8 @@ UM.MainWindow title: model.name visible: machineExtruderCount.properties.value > 1 - NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants } - MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials } + NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants; extruderIndex: index } + MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials; extruderIndex: index } ProfileMenu { title: catalog.i18nc("@title:menu", "&Profile"); } MenuSeparator { } diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 03c951debd..d2e6bc03ce 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -12,11 +12,32 @@ Menu id: menu title: "Material" + property int extruderIndex: 0 + property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + MenuItem { id: automaticMaterial - text: catalog.i18nc("@title:menuitem %1 is the value from the printer", "Automatic: %1").arg("[material_name]") - visible: false + text: + { + var materialName = Cura.MachineManager.printerOutputDevices[0].materialNames[extruderIndex]; + return catalog.i18nc("@title:menuitem %1 is the value from the printer", "Automatic: %1").arg(materialName); + } + visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].materialNames.length > extruderIndex + onTriggered: + { + var material_id = 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) + { + Cura.MachineManager.setActiveMaterial(items[i].id); + break; + } + } + } } MenuSeparator diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index fa83c22af1..7f1c652c4a 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -12,11 +12,27 @@ Menu id: menu title: "Nozzle" + property int extruderIndex: 0 + property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + MenuItem { id: automaticNozzle - text: catalog.i18nc("@title:menuitem %1 is the value from the printer", "Automatic: %1").arg("[nozzle_name]") - visible: false + text: + { + var nozzleName = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex]; + return catalog.i18nc("@title:menuitem %1 is the value from the printer", "Automatic: %1").arg(nozzleName); + } + visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex + onTriggered: + { + 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) + } + } } MenuSeparator @@ -26,6 +42,7 @@ Menu Instantiator { + id: nozzleInstantiator model: UM.InstanceContainersModel { filter: diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 47c0fea9e3..9ed30477d8 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -223,7 +223,7 @@ Column anchors.left: parent.left style: UM.Theme.styles.sidebar_header_button - menu: NozzleMenu { } + menu: NozzleMenu { extruderIndex: base.currentExtruderIndex } } ToolButton { @@ -251,7 +251,7 @@ Column anchors.right: parent.right style: UM.Theme.styles.sidebar_header_button - menu: MaterialMenu { } + menu: MaterialMenu { extruderIndex: base.currentExtruderIndex } } } }