When the user previously opened the dialog and advanced through the pages, but closes the window, then they'll probably have to restart when they want to try it again.
Contributes to issue CURA-8609.
Rather than from the QML.
This allows creating this dialogue from a message button without needing to put it in the base application.
Contributes to issue CURA-8609.
When the MaterialManagementModel is initialized, it will check whether during this startup new materials were installed. If that's the case, then it will show the prompt message to sync those materials with the printers, which should initiate the sync materials flow.
CURA-8254
The file may not exist. In fact, that may be the whole reason why people want to restore a back-up. Try it, and give an error if it fails.
Fixes Sentry issue CURA-2QT.
Since the setting version 18 is used in the arachne beta build, we decided to make the the setting version to 19 in the normal releases, so that we make sure that projects made in arachne beta won't use any version upgrade scripts if a user attempts to open them in 4.12.
CURA-8510
There was an inconsistent behavior between saving a project file to disk (where the printer short name was readded after saving) and saving to the DigitalLibrary (where the printer short was NOT added again).
This commit fixes that by making sure that whatever the user put as the name of the file, will be the name of the project within Cura.
CURA-8566
We now have version 18, where Flsun Super Racer has customised profiles.
Nothing changes in the built-in profiles. It only needs a change in the machine instances.
Contributes to issue CURA-8510.
The table name is used as the container type in the resulting metadata, so we need to use the container type string as table name correctly, or none of the profiles can be found.
Contributes to issue CURA-6096.
This mistake caused all of the container types to end up as either None or the actual instance itself, which was causing crashes.
Contributes to issue CURA-6096.
Needed to add a Filter possibility to facilitate that
Created a Simple UserString class which can be used as:
```py
sql_filter = SQLFilter(f"SELECT {{}} FROM table_name WHERE id = ?")
cursor.execute(sql_filter) # Will execute: SELECT * FROM table_name WHERE id = ?
cursor.execute(sql_filter["id", "name"]) # Will execute: SELECT id, name FROM table_name WHERE id = ?
```
Contributes to CURA-6096