Because it should never show up in the normal global/extruder settings tab, people might forget about this setting. It's one of the reasons per-object settings is awesome ^^.
Two big things had to happen for this: The resource types of quality and machine stack have to be defined before the initialisation of the version upgrade manager, since the version upgrade manager needs to know those storage locations at initialisation. But the storage location is still prefaced with '.config/UM' at this point, so instead we pass on the resource type (but the resource type still has to be defined before the init).
The other big change is that we now have to name the configuration type 'quality' and 'machine_stack' instead of 'instance_container' and 'container_stack' to coincide with the resource type. This allows us to be more consistent in later plug-ins when we also have to upgrade other instance container types.
Contributes to issue CURA-844.
This requires some trickery of initialising the extruder manager before the machine manager is initialised, so that it properly listens to global container stack changes.
Contributes to issues CURA-340 and CURA-1278.
There were two singletons of this manager: One created by QML and managed by QML, and one created by us and managed by our own singleton pattern. That won't work! So we now manage just our own singleton type, and make it a context item for QML so it can use the manager too.
Contributes to issues CURA-340 and CURA-1278.
For example, if the community distributes Cura in a different way, they
can set CURA_BUILDTYPE via 'cmake -DCURA_BUILDTYPE=' and whenever Cura
is launched " (PPA)" will be appended. Of course, this could be done by
appending " (PPA)" to CURA_VERSION, but in case of my Ubuntu/Debian
packaging it will only need one modification in debian/changelog to
change the version. During build (debian/rules) this version will be
read from debian/changelog.
Changing the version number across different files, is a waste of time.
Finally, we can use that field in the future to indicate debug or other
other special builds.
This is a new data type. It behaves and saves just like an integer, but it's actually just an index of the extruder to use.
Contributes to issues CURA-1278 and CURA-351.
This way we don't need to load it in CuraApplication but we can just load it whenever it is first needed. ExtruderManager should be robust against initialising it at any point in Cura's runtime.
Contributes to issues CURA-1278 and CURA-351.
This will consequently also load all extruder stacks of the current machine whenever the current machine changes.
Contributes to issues CURA-1278 and CURA-351.