No need for a ScrollView in Controls 2. And specialise the scroll bar.
Be sure to also align the right side of the contents with the scroll bar though.
Contributes to issue CURA-8686.
I can't update the buttons (not part of this ticket) so I kept those Controls1.
The ScrollView is no longer necessary, just a ListView now with customised scroll bar.
Contributes to issue CURA-8686.
Conflicts:
plugins/SimulationView/SimulationPass.py -> Reverted layer view optimisation in Master while some whitespace changed in Arachne.
resources/definitions -> Bunch of conflicts with profile updates.
resources/quality -> Bunch of conflicts with profile updates.
resources/texts/change_log.txt -> Removed the Arachne change log (as they are internal versions). It'll have to be re-added when we release this version as stable.
Adds type checking here and there to catch such errors in the future.
This makes it handle the optional fields of this model better.
Contributes to issue CURA-8730.
This makes a few things easier. You could see None as being a signalling value to indicate that we don't know capabilities, but this signalling would get lost anyway in the serialising to the metadata. So just an empty list is fine for now.
Contributes to issue CURA-8671.
Previously it was encoded as a stringified Python list of strings, which is much harder to parse.
This would go wrong if any of these capabilities have a comma in them, but I think that would be bad practice for keywords like this anyway.
Contributes to issue CURA-8671.
This is normally not possible from the interface. However on MacOS, the application menu gets carried to the top bar of the operating system. It is not blocked there, and the user could write a project file before they even add a printer. This prevents Cura from crashing when they do that.
Fixes Sentry issue CURA-2ZR.
If two requests to the API occur at the same time, they will both see at the same time that they need an access token, and if it is expired they will both see that it needs refreshing. The server then sees two refreshes, both with the same refresh token. This is not allowed. The second one then gets a failure to refresh the token, which causes the user to log out.
Instead, we'll stop one of the refresh requests. They were fire-and-forget anyway, so it's not needed to actually continue the request.
Contributes to issue CURA-8539.
The `printJob` now also contains a status for detecting aborted prints
that were awaiting cleanup, preventing the need for the additional
checks in the `await_cleanup` status.