Properly catch exceptions when serializing containers and check for dirty state

This commit is contained in:
Arjen Hiemstra 2016-05-23 18:10:35 +02:00
parent 6116f592b3
commit eb8b3e01e3

View file

@ -193,7 +193,17 @@ class CuraApplication(QtApplication):
## Cura has multiple locations where instance containers need to be saved, so we need to handle this differently.
def _onExit(self):
for instance in ContainerRegistry.getInstance().findInstanceContainers():
data = instance.serialize()
if not instance.isDirty():
continue
try:
data = instance.serialize()
except NotImplementedError:
continue
except Exception:
Logger.logException("e", "An exception occurred when serializing container %s", instance.getId())
continue
file_name = urllib.parse.quote_plus(instance.getId()) + ".inst.cfg"
instance_type = instance.getMetaDataEntry("type")
path = None
@ -211,7 +221,17 @@ class CuraApplication(QtApplication):
f.write(data)
for stack in ContainerRegistry.getInstance().findContainerStacks():
data = stack.serialize()
if not stack.isDirty():
continue
try:
data = stack.serialize()
except NotImplementedError:
continue
except Exception:
Logger.logException("e", "An exception occurred when serializing container %s", instance.getId())
continue
file_name = urllib.parse.quote_plus(stack.getId()) + ".stack.cfg"
path = Resources.getStoragePath(self.ResourceTypes.MachineStack, file_name)
with SaveFile(path, "wt", -1, "utf-8") as f: