diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index de5d46ba96..2ca321e4cc 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -859,6 +859,7 @@ class CuraApplication(QtApplication): def getVariantManager(self, *args): return self._variant_manager + @pyqtSlot(result = QObject) def getMaterialManager(self, *args): return self._material_manager diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py index faaabb01e5..a318e67a0f 100644 --- a/cura/Machines/MaterialManager.py +++ b/cura/Machines/MaterialManager.py @@ -4,7 +4,7 @@ from collections import defaultdict, OrderedDict from typing import Optional -from PyQt5.Qt import QTimer, QObject, pyqtSignal +from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot from UM.Logger import Logger from UM.Settings import ContainerRegistry @@ -339,3 +339,20 @@ class MaterialManager(QObject): return self.getRootMaterialIDWithoutDiameter(fallback_material["id"]) else: return None + + # + # Methods for GUI + # + + # + # Sets the new name for the given material. + # + @pyqtSlot("QVariant", str) + def setMaterialName(self, material_node: "MaterialNode", name: str): + root_material_id = material_node.metadata["base_file"] + if self._container_registry.isReadOnly(root_material_id): + Logger.log("w", "Cannot set name of read-only container %s.", root_material_id) + return + + material_group = self.getMaterialGroup(root_material_id) + material_group.root_material_node.getContainer().setName(name) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 96fff61b0b..c0451b4b5e 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -160,17 +160,6 @@ class ContainerManager(QObject): return container.getProperty(setting_key, property_name) - ## Set the name of the specified material. - @pyqtSlot("QVariant", str) - def setMaterialName(self, material_node, new_name): - root_material_id = material_node.metadata["base_file"] - if self._container_registry.isReadOnly(root_material_id): - Logger.log("w", "Cannot set name of read-only container %s.", root_material_id) - return - - material_group = self._material_manager.getMaterialGroup(root_material_id) - material_group.root_material_node.getContainer().setName(new_name) - @pyqtSlot(str, result = str) def makeUniqueName(self, original_name): return self._container_registry.uniqueName(original_name) diff --git a/resources/qml/Preferences/MaterialView.qml b/resources/qml/Preferences/MaterialView.qml index 021fcc02e1..7e0efd56de 100644 --- a/resources/qml/Preferences/MaterialView.qml +++ b/resources/qml/Preferences/MaterialView.qml @@ -12,6 +12,8 @@ TabView { id: base + property QtObject materialManager: CuraApplication.getMaterialManager() + property QtObject properties property var currentMaterialNode: null @@ -497,7 +499,7 @@ TabView } // update the values - Cura.ContainerManager.setMaterialName(base.currentMaterialNode, new_name) + base.materialManager.setMaterialName(base.currentMaterialNode, new_name) materialProperties.name = new_name }