I hope that the machine node doesn't become a collection of functions that don't fit anywhere else, but this isn't contributing to that hope. However I still think that this is particular to a certain printer, so it's within the object-oriented programming paradigm. And it's also within the scope of the class, which is getting the available profiles. So it still sort of fits.
Contributes to issue CURA-6600.
Look how greatly this is now simplified.
The fallbacks for which material nodes to check is not yet implemented. Will do that next.
Contributes to issue CURA-6600.
Slightly more complex than the original pseudocode was indicating: It needs to filter on the available quality types first in order to only show the quality types that can be printed with all extruders, but still show the union of all intents for those quality types.
Contributes to issue CURA-6091.
This ensures that if a (duplicated) material does not have a generic variant, that
the material it was copied from will be added to the fallback list.
CURA-5898
CURA-5694
For a machine, if it has extruder-specific qualities, when we look up
extruder qualities, we should NOT fall back to use the global qualities.
CURA-5694
For a machine, if it has extruder-specific qualities, when we look up
extruder qualities, we should NOT fall back to use the global qualities.
CURA-5694
- Add convenience functions into GlobalStack
- Use "has_variants" and "has_materials" instead of
"has_variant_materials"
- Remove "has_variant_materials"
- For extruder qualities, skip global qualities if the machine has
variants or materials
CURA-5668
The last fallback is the global qualities, either machine-specific or
generic, but not using both. Because if a machine defines its own global
qualities, it is intended to override the existing ones, so do not
fallback again in this case.
...with the actual number of extruders. These could misalign with Custom FDM Printer or when any of the extruders was deleted because of a configuration format error.
Contributes to issue #3570.
And in the rest of the locations we must then check if it's None and handle that gracefully.
Here we assume that the getContainer message shows a message to the user if necessary. For now we'll just log it.
Contributes to issue CURA-5045.