Having a separate class for the AbstractMachine complicated things; it's behaviour was extremely similar to the GlobalStack so adding one more stack container type in addition to the many similar setting container types we already have adds complexity to the system. Having these different classes for machines and abstract machines also add complexity to the update script as the abstract machines were stored in a separate folder from the machine types.
Because of these reasons we decided to replace the AbstractMachine by a GlobalStack where the is_abstract_machine property metadata property is set to True.
CURA-9514, CURA-9277
Co-authored-by: joeydelarago <joeydelarago@gmail.com>
Add machineCount for displaying the number of machines of a type.
MachineSelectorButton is in use in other places, swapped it out for a new Component MachineListButton.
CURA-9514
Made typing more generic to work with an ContainerStack to compensate.
Made AbstractMachine getMachines a classmethod so it can be called with ContainerStacks.
CURA-9514
We are now selecting intents first and then quality, however the container hierarchy quality -> intents. This is the reason for the new functions inside machine manager.
CURA-8849
Previously we would only accept intents that had a translation. If we
could not find one, we would use "unknown" as the intent category. However,
we didn't really do this consistently. In some places it would show unkown
and in others we'd show the intent type.
This should make the behavior the same across the board. It will try to get a
translation for the intent category and show that. If it's unable to find that
it will use the category instead. Note that it will use the python title function
to ensure it has nice capitalisation
CURA-9297
Conflicts:
cura/PlatformPhysics.py -> Removed shapely on master, while QTimer import got updated to Qt6.
plugins/Toolbox -> Entire folder is deleted in master, but it was updated to Qt6 here. This can all be removed.
In most languages this doesn't properly fit in the space we have for these buttons.
The same text in the window title and header was not changed. There we do have space for it. The button in the material manager was also not adjusted since it's different and already about as short as can be (but needs to refer to printers instead of materials due to the context of already being in the material manager).
Contributes to issue CURA-8753.
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.