We can reuse our duplicateMaterial function again but in a simpler way. Also finding the preferred material is simpler with our container tree.
However there seems to be a problem with finding the preferred material; it's not finding generic_pla for UM3 and AA0.4 anyway, and then falls back on a random material. This needs to be fixed in the variant node class.
Contributes to issue CURA-6600.
Just like MaterialManager used to be. There can be only one instance of the page then.
This prevents a crash when Qt deletes the QObject because it's no longer used in the page when you close the preferences screen. But when you open it again it doesn't construct a new one. Now there is always one instance so that's not a problem any more. Also it allows other pages to access this item.
Contributes to issue CURA-6600.
Just like the QualityManagementModel, this class is intended to be used as proxy for the material management page in the preferences. I'm intending to move all relevant pyqtSlots from the material manager into this one. The advantage of this switch is that the material manager had no well-bounded scope and so tended to become a big mess of all sorts of functions. This one has a clear scope: serve as a proxy for the buttons you can press in the preferences screen for materials.
Contributes to issue CURA-6600.
Conflicts:
resources/bundled_packages/cura.json -> 4.1 to 4.2 upgrade package added simultaneously
tests/TestMachineManager.py -> Due to changes in conftest.py
tests/conftest.py -> Simultaneously expanding the magic mocks to have some correct properties
This is a work around for a rather fundamental issue with the current setting system;
The relationships are only created based on the definitions. So if a definition doesn't
have a formula, but a profile does, it doesn't get updated in the interface.
CURA-6708
It's policy to default to the old behaviour as much as possible for new features. We can maybe default to true (for these values) if we ask the materials team later. Instead opted to warn the user if the infill isn't in the list of those patterns.
part of CURA-6463
It didn't work out well with our theming and the colours of objects on the build plate, and was inconsistent with how other printers' build plates look.
Contributes to issue CURA-6701.