Keep registration order as order for context menu #163
Conversation
| @@ -57,11 +60,16 @@ class NODE_EDITOR_PUBLIC DataModelRegistry | |||
|
|
|||
| QString const name = uniqueModel->name(); | |||
|
|
|||
| if (_registeredModels.count(name) == 0) | |||
| if (!_registeredModels.count(name)) | |||
Quincunx271
Apr 30, 2018
•
Author
Contributor
You might find this less readable, but I've seen people treating the count method on std::map or std::set as "contains", which is why I wrote is as !_registeredModels.count(name) here. It might not be desirable, if so, it's easy enough to change this back
|
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 |
3edf358
to
15a270d
15a270d
to
a6e4ba4
…y useless in this case

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.



Implements #147
I kept
_categoriesand_registeredModelsCategoryas-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 thecategories()function to return thestd::vectorand to change theregisteredModelsCategoryAssociationto return a separate map type that preserves insertion order (similar to LinkedHashMap in Java; I would've just combinedstd::vectorandstd::unordered_map).If removing / changing
_categoriesor_registeredModelsCategoryis desired, I'll make the change and update this PR.Note: if we do remove
categories(), such that_categoriesbecomes inaccessible through any external functions, it'd be best to change its type fromstd::settostd::unordered_set