CURA-4092
- Keep the error check finished signal.
- Restore the old way of triggering an auto-slicing which depends on a
setting value change singal.
- Add a mechanism to make sure that if there is an error check, the
auto-slicing will only be triggered after the check finishes.
CURA-4084
When MachineManager gets created, it will find and set the current
active machine. This requires the ContainerRegistry to be initialized
first.
CURA-4084
Stack error checks are scheduled with a delay, and when a container is
changed (e.g. Quality), the auto-slice may get triggered before the
error check is done. Because the error check result is cached, the
auto-slicing will use the previous result instead of new. So, the
auto-slicing should be triggered when a stack validation is finished
instead of when a stack/setting gets changed.
CURA-4053
An old project file doesn't have the definition_changes container in the
stacks. When this is the case, Cura should also check if the definition
changes container in an existing stack is empty or not for project file
loading conflict detection.
CURA-4053
- In Cura 2.5, there is no definition_changes in the stack. This is now
taken into account when doing conflicts detection.
- In Cura 2.5, we have empty containers named as "empty_variant" and
such. Those are now properly handled in conflict detection.
CURA-4053
If the global stack is not found, we assume the machine is not there and
default to create a new one. If the machine is found and there is not
conflicts, then we check the extruders associated for conflicts.
CURA-4053
- Fix that if the resolve strategy is new for machine, Cura should
always create new global and extruder stacks
- Fix possible duplicated IDs when "Create New" machine is selected
CURA-4053
When loading a project file:
- Only check if the global stack exists to detect conflicts instead
of checking the global stack and the extruder stacks. It can happen
that the global stack exists while the extruder stacks not or the
other way around.
- Always assign a resolve strategy to container(s). There can be
"None" strategies and those were not handled correctly.
The overriding doesn't make any sense. The original commit mentions that it should fix something, but it doesn't acutally fix it. It seems
the original issue was fixed in the proper place, leaving this code to mess everything up.
CURA-3756
If a PrinterOutputDevice is able to connect quickly to a machine, then
by the time the MachineManager is created and connects to the signal,
it will be too late, and it might miss that there is already connected
devices.
# Conflicts:
# plugins/USBPrinting/USBPrinterOutputDeviceManager.py
global_container_stack.definitionChanges always returns a container, global_container_stack.findContainer({"type": "definition_changes"}) does not (because an empty container does not have the type "definition_changes".