diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 657329aad4..859c0282ba 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -5,7 +5,7 @@ import os import urllib.parse import uuid from typing import Any -from typing import Dict, Union +from typing import Dict, Union, Optional from PyQt5.QtCore import QObject, QUrl, QVariant from PyQt5.QtWidgets import QMessageBox @@ -46,13 +46,18 @@ class ContainerManager(QObject): self._quality_manager = self._application.getQualityManager() self._container_name_filters = {} # type: Dict[str, Dict[str, Any]] - @pyqtSlot(str, str, result=str) - def getContainerMetaDataEntry(self, container_id, entry_name): + @pyqtSlot(str, str, str, result=str) + def getContainerMetaDataEntry(self, container_id, entry_name, sub_entry: Optional = None): metadatas = self._container_registry.findContainersMetadata(id = container_id) if not metadatas: Logger.log("w", "Could not get metadata of container %s because it was not found.", container_id) return "" + if sub_entry != "": + sub_data = metadatas[0].get(entry_name, "") + if sub_data: + return str(sub_data.get(sub_entry, "")) + return str(metadatas[0].get(entry_name, "")) ## Set a metadata entry of the specified container. diff --git a/resources/qml/Preferences/MaterialView.qml b/resources/qml/Preferences/MaterialView.qml index ad91f2ee9a..a7017d7f62 100644 --- a/resources/qml/Preferences/MaterialView.qml +++ b/resources/qml/Preferences/MaterialView.qml @@ -529,6 +529,12 @@ TabView { return materialPreferenceValues[material_guid][entry_name]; } + + var material_weight = Cura.ContainerManager.getContainerMetaDataEntry(base.containerId, "properties", "weight"); + if(material_weight != undefined && material_weight != "") + { + return material_weight + } return 0; }