Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds a streamlined and well-tested config structure with clear default classes and a tested config hierarchy settings management.
We have the following
hierarchy objects
:Profile settings
: What the user sets underprofile_name
in the profiles list.Global profile defaults
: What the user sets underprofile_defaults
.System profile defaults
: Settings that are hardcoded and special for a specific profile. E.g. Wheelchair has a different snapping radius defined.System global profile defaults
: Settings that are hardcoded defaults for theprofile_default
section.The hierarchy is implemented as followed:
profile settings
always have the highest precedence and overwrite:User global profile defaults
,System profile defaults
,System global profile defaults
.Global profile defaults
have the next precedence and overwrite:System profile defaults
,System global profile defaults
.If something is not set by the user at all, the internal logic is as followed:
System profile defaults
are very rare and overwriteSystem global profile defaults
.System global profile defaults
have the least precedence and set only what has not been set either by the user or as aSystem profile default
.