Merge branch 'feature_CURA-3540_upgrade_for_project' of github.com:Ultimaker/Cura

This commit is contained in:
Jaime van Kessel 2017-04-18 15:33:53 +02:00
commit c20542b7b8

View file

@ -3,6 +3,7 @@
import copy import copy
import io import io
from typing import Optional
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
from UM.Resources import Resources from UM.Resources import Resources
@ -11,7 +12,7 @@ from UM.Util import parseBool
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
import UM.Dictionary import UM.Dictionary
from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.InstanceContainer import InstanceContainer, InvalidInstanceError
from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerRegistry import ContainerRegistry
## Handles serializing and deserializing material containers from an XML file ## Handles serializing and deserializing material containers from an XML file
@ -370,8 +371,30 @@ class XmlMaterialProfile(InstanceContainer):
self._dirty = False self._dirty = False
self._path = "" self._path = ""
def getConfigurationTypeFromSerialized(self, serialized: str) -> Optional[str]:
return "material"
def getVersionFromSerialized(self, serialized: str) -> Optional[int]:
version = None
data = ET.fromstring(serialized)
metadata = data.iterfind("./um:metadata/*", self.__namespaces)
for entry in metadata:
tag_name = _tag_without_namespace(entry)
if tag_name == "version":
try:
version = int(entry.text)
except Exception as e:
raise InvalidInstanceError("Invalid version string '%s': %s" % (entry.text, e))
break
if version is None:
raise InvalidInstanceError("Missing version in metadata")
return version
## Overridden from InstanceContainer ## Overridden from InstanceContainer
def deserialize(self, serialized): def deserialize(self, serialized):
# update the serialized data first
from UM.Settings.Interfaces import ContainerInterface
serialized = ContainerInterface.deserialize(self, serialized)
data = ET.fromstring(serialized) data = ET.fromstring(serialized)
# Reset previous metadata # Reset previous metadata
@ -406,10 +429,10 @@ class XmlMaterialProfile(InstanceContainer):
continue continue
meta_data[tag_name] = entry.text meta_data[tag_name] = entry.text
if not "description" in meta_data: if "description" not in meta_data:
meta_data["description"] = "" meta_data["description"] = ""
if not "adhesion_info" in meta_data: if "adhesion_info" not in meta_data:
meta_data["adhesion_info"] = "" meta_data["adhesion_info"] = ""
property_values = {} property_values = {}