diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 547daffe41..6efcd029c6 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -225,6 +225,15 @@ class ContainerManager(QObject): return result + @pyqtSlot(str, result = bool) + def isContainerUsed(self, container_id): + UM.Logger.log("d", "Checking if container %s is currently used in the active stacks", container_id) + for stack in cura.Settings.ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): + if container_id in [child.getId() for child in stack.getContainers()]: + UM.Logger.log("d", "The container is in use by %s", stack.getId()) + return True + return False + ## Get a list of string that can be used as name filters for a Qt File Dialog # # This will go through the list of available container types and generate a list of strings diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 4ee8b159ba..0bd2d16fb3 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -104,7 +104,7 @@ UM.ManagementPage { text: catalog.i18nc("@action:button", "Remove"); iconName: "list-remove"; - enabled: base.currentItem != null && !base.currentItem.readOnly + enabled: base.currentItem != null && !base.currentItem.readOnly && !Cura.ContainerManager.isContainerUsed(base.currentItem.id) onClicked: confirmDialog.open() }, Button