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.
And an example of such usage: In the material sync via cloud we only want to sync with printers that can receive those materials.
We might want to add a message for the user to also make sure the firmware is up to date. Because if the firmware is not up to date now it will show no printers and instruct the user how to connect the printer to the cloud.
Contributes to issue CURA-8671.
Conflicts:
cura/Machines/Models/MaterialManagementModel.py -> On Master we had temporarily reverted the action of this button because it became apparent that the sync wasn't going to be in 4.12. That revert is no longer necessary if this is merged.
I have a feeling this will be abused later. But fine. We currently need it for the list of printers that we can sync materials to via the cloud.
Contributes to issue CURA-8609.
It now creates a similar dialogue of what the old button did. The dialogue is no longer necessary in the materials page, so I've moved it to here specifically.
Contributes to issue CURA-8609.
Conflicts:
cura/Machines/Models/MaterialManagementModel.py -> Both master and my branch added an __init__ function. I merged the two __init__s to do both things that need to be done.
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
Instead of updating the storage path every time you add or remove a removable drive, we now update the storage path every time you press the button to sync. That way this detail has no impact on performance of other parts of Cura if they don't use this button. It also makes the code a bit simpler.
The only downside is that this FileDialog then contains state, instead of automatically syncing with the MaterialManagement property for its folder property. I see that as a lesser of two evils.
Contributes to issue CURA-8055.
Now, when the size of the Cura window changes and the configurationSelector gets resized, instead of eliding the material text it will now change as follows:
* If it fits, display "Brand, Color, and Type" of material (e.g. Ultimaker Black PLA)
* If "Brand, Color, and Type" doesn't fit, change it to "Color and Type" of material (e.g. Black PLA)
* If "Color Type" doesn't fit either, display only the type (e.g. PLA)
* If "Type" doesn't fit, elide it
CURA-8013