Previously, after pressing the "Restore" button of a backup, there was no indication about it being restored. This commit changes that by making the "Restore" button of that backup display the busy rotating wheel.
CURA-8313
Also, don't add it twice for the Repetier flavour.
This way the code is separated better into if-else cases to make it easier to read, even though it has this line in there 3 times.
Fixes issue CURA-8331.
Before calling the illuminate, we need to make sure that the previous cached Preferences have been overridden by the newly restored preferences from the backup. Otherwise, the `illuminate()` function will bring back the cached preferences and the new ones from the backup will be lost.
CURA-8313
The cloud printers get added asynchronously, which could lead to a crash because the dict gets modified while we're iterating over it.
Fixes Sentry issue CURA-2EN.
We want to keep it this way so people can still make plugins work for older versions of Cura, like 3.6, where the 'api' field with just a single major version, instead of the 'supported_sdk_versions', which can be either a version-string like '7.6.0' or a list of version strings.
There were two pre-checks here, where the main body of the function was indented two deep. Instead, just early-out if the checks fail. This is easier to read and understand.
Found during investigation of CURA-8128.
MacOS has some trouble with the QtQuick.Controls 1 system-styled drop-downs since Qt 5.15. We've removed the other ones, but forgot about this one.
Contributes to issue CURA-8128.
To catch the exception of duplicate file types, catch only the exception that triggers at this, OPCError. To catch generic file writing errors, catch all of EnvironmentError, not just OSError.
The max value was being calculated as the product of the max line width, max layer thickness
and max feedrate but it should be calculated as the maximum of the products of the width,
thickness and feedrate for each individual line. i.e. calculate the flow for each line
and use the min and max values of the flows.
We encountered a case where the version upgrade changed the quality profile to a new one which was specific to the printer rather than a global profile. As the upgraded stack was being read from the project file, it would go look for the new quality profile in the workspace. That ID wouldn't be present in there, and so it would crash and pretend the project file is plain 3MF.
This change makes it fallback to the built-in profiles, for precisely such cases as when a version upgrade changes the stack.
Contributes to issue CURA-8212.