nodeeditor
nodeeditor copied to clipboard
Keep registration order as order for context menu
Implements #147
I kept _categories
and _registeredModelsCategory
as-is. Someone could've called those functions and stored the variables, and removing them, but especially replacing it with a new data-type, would break their code (replacing could silently break in some cases). My ideal would've been to just change the categories()
function to return the std::vector
and to change the registeredModelsCategoryAssociation
to return a separate map type that preserves insertion order (similar to LinkedHashMap in Java; I would've just combined std::vector
and std::unordered_map
).
If removing / changing _categories
or _registeredModelsCategory
is desired, I'll make the change and update this PR.
Note: if we do remove categories()
, such that _categories
becomes inaccessible through any external functions, it'd be best to change its type from std::set
to std::unordered_set
examples/calculator
This is the registration code (edited to make this comment smaller):
auto ret = std::make_shared<DataModelRegistry>();
ret->registerModel<NumberSourceDataModel>("Sources");
ret->registerModel<NumberDisplayDataModel>("Displays");
ret->registerModel<AdditionModel>("Operators");
ret->registerModel<SubtractionModel>("Operators");
ret->registerModel<MultiplicationModel>("Operators");
ret->registerModel<DivisionModel>("Operators");
ret->registerModel<ModuloModel>("Operators");
Before this PR:
After this PR:
The categories can still be sorted after this PR by calling ret->sortCategories()
Just found that version 2.1.3 still not support manually context menu settings.