CURA-5334
- In project file writer, it says the mime type is "application/x-curaproject+xml",
and we decided to use this as THE mime type.
- Pass preferred_mimetype to save project file dialog so it
automatically adds the file extension upon open.
several instances need to be created.
- In the ThreeMFWorkspaceReader we need to create some temporal
instances of Preferences that makes it not singleton anymore.
- The current preferences are kept in the Application class and so all
the calls to the preferences are changed to get the preferences from
Application.
- The method getInstance in Preferences is kept as deprecated since some
external plugins.
CURA-5229
- Move @call_on_qt_thread to a separate module
- Make sure that project writer runs on Qt thread because itself and the
calls it makes can create new QObjects such as InstanceContainers, and
this must happen on the Qt thread.
That was the whole point of this change. Instead degrade gracefully. It won't load the material file but give an error message saying that the material is corrupt. Then it won't be able to load the stack as well because the material doesn't exist, and give an error about the stack as well.
Contributes to issue CURA-5045.
CURA-5045
- If a container cannot be deserialized in project loading, it should fail
right on the spot because even if it continues, it still won't work.
- In other places, at least log deserialization errors if any of them show
up.
Only the deserialize() functions themselves may pass the ContainerFormatError on, because their callers will have to handle those errors anyway.
Contributes to issue CURA-5045.
And in the rest of the locations we must then check if it's None and handle that gracefully.
Here we assume that the getContainer message shows a message to the user if necessary. For now we'll just log it.
Contributes to issue CURA-5045.
It has no semantic meaning to specify that here. The behaviour of this commit should be the same since 'None' is the default value for that parameter.
Contributes to issue CURA-4966.