CURA-5682
A max recursion error will occur when the user creates a material on the
material management page. Too many signals get directly triggered and
some of them head back again and causes a max recursion error.
We know in these places that there must be a global stack at this point. So to hide the type error we'll cast it here.
Of course, the danger in this is that someone might call this function that doesn't know about this requirement and calls it when there is potentially no global stack yet. Hopefully they'll discover this crash when that happens then.
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.
The type hinting indicated that the property was a dict, but it could also be None.
In cases where it was None, it would cause an exception, which was also fixed (since
unpacking None will break)
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
Contributes to CURA-5682
- Active material is now expanded by default when opening the manager
- Expanded and collapsed sections are saved to preferences
- Sections are now highlighted when collapsed and having a selected material inside
- Bug with losing focus between fields is not yet fixed
Note that this is still not correct. When the value gets evaluated, we
need to evaluate it with that container in the stack(s), but this case,
the stack may have other containers, so the evaluation can give
incorrect values because its context is simply not correct. This change
only prevents it from breaking because it's missing a provider.