diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 10934e7275..fc9253ef1e 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -518,7 +518,7 @@ class ContainerManager(QObject): ## Create a new material by cloning Generic PLA for the current material diameter and setting the GUID to something unqiue # # \return \type{str} the id of the newly created container. - @pyqtSlot() + @pyqtSlot(result = str) def createMaterial(self): # Ensure all settings are saved. Application.getInstance().saveSettings() @@ -539,6 +539,7 @@ class ContainerManager(QObject): self.duplicateMaterial(material_group.root_material_node, new_base_id = new_id, new_metadata = new_metadata) + return new_id ## Get a list of materials that have the same GUID as the reference material # diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index e4856a2d4b..0e40785ca3 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -77,7 +77,7 @@ Item iconName: "list-add" onClicked: { forceActiveFocus(); - Cura.ContainerManager.createMaterial(); + base.newRootMaterialIdToSwitchTo = Cura.ContainerManager.createMaterial(); } } @@ -88,6 +88,7 @@ Item enabled: base.hasCurrentItem onClicked: { forceActiveFocus(); + base.newRootMaterialIdToSwitchTo = base.currentItem.root_material_id; Cura.ContainerManager.duplicateMaterial(base.currentItem.container_node); } } @@ -126,6 +127,31 @@ Item } } + property string newRootMaterialIdToSwitchTo: "" + + // This connection makes sure that we will switch to the new + Connections + { + target: materialsModel + onItemsChanged: { + var currentItemName = base.currentItem == null ? "" : base.currentItem.name; + var position = Cura.ExtruderManager.activeExtruderIndex; + + if (base.newRootMaterialIdToSwitchTo != "") { + for (var idx = 0; idx < materialsModel.rowCount(); ++idx) { + var item = materialsModel.getItem(idx); + if (item.root_material_id == base.newRootMaterialIdToSwitchTo) { + // Switch to the newly created profile if needed + materialListView.currentIndex = idx; + Cura.MachineManager.setMaterial(position, item.container_node); + base.newRootMaterialIdToSwitchTo = ""; + break; + } + } + } + } + } + MessageDialog { id: confirmRemoveMaterialDialog