CURA-12752
The previous method was not efficient enough in case of large models, where a single painting stroke can easily cover almost the whole texture (in bounding box). Reverted to the version where the whole texture is counted, but cached in the SliceableObjectDecorator and updated on timer so that it is not done during painting.
(Not sure I'm happy with this, but) now we can use this _both_ in the slicing itself _and_ the bounds. The big downsides are a) I had to connect the scene changed signal to the on-stack-changed method, that seems ugly and potentially slow b) I'm not sure this method belongs in the ExtruderManager -- otoh, where else is it going to live (unless we want to make a new type of plugin-object?).
CURA-12752
Since the bed-temp (for example) might be unfluenced by unused but (probably accidentally) enabled extruders, we want to be able to warn the user of such.
part of CURA-12622
This could cause slicing to hang forever until settings where changed. So stop too-early slicing, but keep a memo of wether we've already been requested to slice in the initialization interval, so auto-slice doesn't fail either.
CURA-11815
- Add UI to set `machine_start_gcode_first` so that no gcode is adding infront of the start_gcode.
- Add float input box to set `machine_extruder_change_duration` which added proper extruder change times to the estimated print time.
- Add textbox to set `machine_extruder_prestart_code` to add gcodes that will run pre extruder change, things like heat up so we are at change before with pick up the next extruder.
The engine processes the plugins based on the order they were given in. By ordering them beforehand, we ensure that they will always be processed with the same logic.
CURA-10914
When the printer settings say they should be disabled, they could previously be enabled if the start GCode didn't contain temperature commands. Now we can only enable them if initially enabled.
CURA-11967
Following the removal of the get/setMessage methods in the Job class, the StartSliceJob has not been updated and still used them. We now use a specific variable for storing the disabled extruders and properly display them.
CURA-11904
User tracking has been added to the 'slice_message' method in the 'StartSliceJob.py' file. A unique, anonymous UUID is generated for each user, stripping away identifiable data with a bitmask operation. The user's Cura version is also included in the message. This facilitates more robust analysis of crash reports and user behaviors.
Contributes to CURA-11482