- Create SingleInstance class to handling single instance stuff.
- Instead of calling getInstance() everywhere, initialize each object
explicitly in order when application starts and getInstance()s do not
create instances any more and they merely return the created
instances.
- Only set initial values in construtor functions __init__(). Move the
initialization of context-aware (i.e. things that depend on other
things) to separate functions.
- Split application creation and initialziation into several steps and
them should be called explicitly in the correct order.
Just about every call of this function (except 2) would break when this returns None. The signature also says it doesn't return None. Let's return an empty list instead.
Contributes to issue CURA-5045.
isinstance also checks for subclasses. In our case, SceneNode was just extended to CuraSceneNode so this test was failing.
Contributes to issue CURA-4766.
CURA-4358
Using the context for override the extruderValues() and resolveOrValue()
functions, for getting the correct values. Also indicate in the context
to skip the first container in the stacks (user container)
CURA-4358
Use evaluation context to override the default extruderValue()
function with getDefaultExtruderValue() so it can get the correct
default values from each extruder.
fixes a problem when Cura starts with a single extruder printer but the
user then choose a multiextruder printer - CURA-4386
Also added a quality definition in UM3E extruder with the ids of the UM3
extruders, so that the profiles for UM3 are also valid for UM3E and viceversa - CURA-4389
All are related issues with profiles and multiextruder printers
CURA-4069
support_bottom_extruder_nr and support_roof_extruder_nr are the support
interface extruder numbers, so checking those two is enough and there is
no need to check the interface extruder number.
CURA-4069
getUsedExtruderStacks() doesn't take into account some new limit to
extruder features, The BuildVolume uses it to determine disallowed
areas, and this makes it give incorrect results.
NB: previously the "approximate_diameter" metadata was stored as a number. This caused some issues passing arguments from QML to Python. Now "approximate_diameter" is stored as a string.