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.
If a render is triggered before this decorator is set it would crash. The rest of the code is robust against this being None, but here it would give a TypeError.
CURA-5202
Plugin metadata that comes from the plugin server is also saved into
PluginRegistry's metadata collection, so it's all mixed. Plugins that
are just installed cannot be loaded immediately, and this causes an
error in checkCanUpgrade().
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.
The problem was that Python's ConfigParser doesn't preserve case. Everything becomes lowercase. Some post-processing scripts have uppercase characters in their setting keys and these weren't preserved.
This fix configures the ConfigParser to pass the setting keys untransformed. The transformation function becomes the str() function which just passes the input through untransformed.
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.
finishing installing or uninstalling plugins, otherwise the temporary
data is not stored in the config file.
This caused some problems with the lazy uninstall plugins since the list
was never stored.
This is the easy fix. When a plugin is downloading, the other plugins' download buttons are not possible to be clicked. This avoids having to write any new logic. It does detract a bit from the user experience though.
The complicated version requires re-writing a big part of the plugin browser code to enable the queueing of downloads and stuff. That's sort of how it "should" be but is a lot more work.