Fix a crash in MaterialManager when the brand of the material is None.

Fix other possible cases when the type or the color are also None.
This commit is contained in:
Diego Prado Gesto 2018-06-07 10:54:23 +02:00
parent 971d6306bf
commit 97a1aa1a2b
2 changed files with 11 additions and 7 deletions

View file

@ -518,9 +518,10 @@ class XmlMaterialProfile(InstanceContainer):
meta_data["name"] = label.text meta_data["name"] = label.text
else: else:
meta_data["name"] = self._profile_name(material.text, color.text) meta_data["name"] = self._profile_name(material.text, color.text)
meta_data["brand"] = brand.text
meta_data["material"] = material.text meta_data["brand"] = brand.text if brand.text is not None else "Unknown Brand"
meta_data["color_name"] = color.text meta_data["material"] = material.text if material.text is not None else "Unknown Type"
meta_data["color_name"] = color.text if color.text is not None else "Unknown Color"
continue continue
# setting_version is derived from the "version" tag in the schema earlier, so don't set it here # setting_version is derived from the "version" tag in the schema earlier, so don't set it here
@ -811,9 +812,10 @@ class XmlMaterialProfile(InstanceContainer):
base_metadata["name"] = label.text base_metadata["name"] = label.text
else: else:
base_metadata["name"] = cls._profile_name(material.text, color.text) base_metadata["name"] = cls._profile_name(material.text, color.text)
base_metadata["brand"] = brand.text
base_metadata["material"] = material.text base_metadata["brand"] = brand.text if brand.text is not None else "Unknown Brand"
base_metadata["color_name"] = color.text base_metadata["material"] = material.text if material.text is not None else "Unknown Type"
base_metadata["color_name"] = color.text if color.text is not None else "Unknown Color"
continue continue
#Setting_version is derived from the "version" tag in the schema earlier, so don't set it here. #Setting_version is derived from the "version" tag in the schema earlier, so don't set it here.
@ -976,6 +978,8 @@ class XmlMaterialProfile(InstanceContainer):
@classmethod @classmethod
def _profile_name(cls, material_name, color_name): def _profile_name(cls, material_name, color_name):
if material_name is None:
return "Unknown Material"
if color_name != "Generic": if color_name != "Generic":
return "%s %s" % (color_name, material_name) return "%s %s" % (color_name, material_name)
else: else:

View file

@ -482,7 +482,7 @@ Item
{ {
var currentItem = materialsModel.getItem(materialListView.currentIndex); var currentItem = materialsModel.getItem(materialListView.currentIndex);
materialProperties.name = currentItem.name; materialProperties.name = currentItem.name ? currentItem.name : "Unknown";
materialProperties.guid = currentItem.guid; materialProperties.guid = currentItem.guid;
materialProperties.brand = currentItem.brand ? currentItem.brand : "Unknown"; materialProperties.brand = currentItem.brand ? currentItem.brand : "Unknown";