Add support for per-object retraction settings.
This change adds support for per-object retraction settings to CuraEngine. The main mechanism is through changing the code to track a pointer to the SliceMeshStorage instead of just storing the mesh name as a string.
Additionally, the code is changed to group together all retraction and wipe settings into a single object which allows for more easily switching between the object-specified and the extruder-specified settings, depending on the context.
Retraction settings will be applied based on the most recent mesh that was extruded. As @Ghostkeeper noted, this may cause imperfections on the next mesh (albeit in a way that the user has control over). However, in one-at-a-time print ordering, this will not be an issue.
For some retractions, occuring as part of setup or teardown, it does not make sense to apply options from a specific mesh, so settings from the mesh group or extruder are used instead.
This PR is related to https://github.com/Ultimaker/Cura/issues/3193
Didn't realize there were some tests I wasn't building. Fixed the tests to be compatible with this change.
Ping @nallath can you run the CI workflow?
Sorry! Once you have your first contribution in it will automatically do it. It's an automatic setting from GH to prevent people from running crypto miners and the like.
Sweet! What is the review process like? If there's any feedback on changes needed to this PR I'm happy to make them.
Sorry! We're in total crunch mode for the Cura 5.0 release. Reviewing / testing PR's is a bit on the backburner now. My apologies!
Hi! We'd like to apologize to take this long to finally process this PR.
Thanks for your contribution! If this passes QA, it will be in 5.3
Since this PR was old, rather than asking you to update it, I merged the main branch in myself, and made a frontend PR to expose the fact that a lot of retraction settings can now also be accessed on a per-model basis.
(Devs, see jira ticket CURA-9876)