This pulls the checkStackHaveErrors code out of the critical path when
editing settings, instead moving it to be handled later. This greatly
reduces the delay that happens when editing settings.
Fixes CURA-3653
Contributes to #1631
This may trigger a few extra updates, but allows us to use signal
compression in the postponesignals context manager, which greatly
improves performance.
It's not even necessary to check otherwise. Requesting an extruder stack would give None anyway, which would give errors.
Contributes to issue CURA-3291.
We need to listen for changes on all extruder stacks because the values might change and therefore the validation states might change. The value of a different extruder stack could change if you change a global value that has impact on a per-extruder value via inheritance, or in this case if a limit-to-extruder property specifies that the setting should be changed on a different stack. It could change on the stack that is not active in either case.
This might have some performance impact, but it is very small. Other than layer_height there aren't many global settings that have impact on multiple extruders via inheritance. And via limit-to-extruder there will typically only be one changed value which you want to update for. Changing layer height will be a bit slower though.
Contributes to issue CURA-3291.
The default value for the limit_to_extruder property is -1. So no need to check if the property exists. Just check if it is positive.
Contributes to issue CURA-3291.
The order of operations was a bit weird. This made the code unclear and also required an extra check in an if-statement. This is simpler and theoretically even a bit faster.
Contributes sorta to issue CURA-3291.
This then causes the text 'Not supported' to appear to the user, indicating that for his foreign material we have no known quality profiles.
Contributes to issue CURA-3144.
* 2.3:
Expand logic for showing the inherit button in SettingItem
Add a method to get overrides for a specified (extruder)stack
Add global profiles for UM3 so this can be tested without dependencies
Account for empty material when switching quality changes
Set the global variant and material to empty for multi-extrusion machines
Also properly set global profile when changing quality_changes profiles
Add support for global quality profiles