@@ -38,6 +38,7 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
38
38
using RegisteredModelsCategoryMap = std::unordered_map<QString, QString>;
39
39
using RegisteredModelsOrder = std::vector<QString>;
40
40
using CategoriesSet = std::set<QString>;
41
+ using CategoriesOrder = std::vector<QString>;
41
42
42
43
using RegisteredTypeConvertersMap = std::map<TypeConverterId, TypeConverter>;
43
44
@@ -89,6 +90,10 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
89
90
90
91
CategoriesSet const &categories () const ;
91
92
93
+ CategoriesOrder const &categoriesOrder () const ;
94
+
95
+ void sortCategories ();
96
+
92
97
TypeConverter getTypeConverter (NodeDataType const & d1,
93
98
NodeDataType const & d2) const ;
94
99
@@ -100,6 +105,8 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
100
105
101
106
RegisteredModelCreatorsMap _registeredItemCreators;
102
107
108
+ CategoriesOrder _categoriesOrder;
109
+
103
110
RegisteredModelsOrder _registeredModelsOrder;
104
111
105
112
RegisteredTypeConvertersMap _registeredTypeConverters;
@@ -130,12 +137,16 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
130
137
registerModelImpl (RegistryItemCreator creator, QString const &category )
131
138
{
132
139
const QString name = ModelType::Name ();
133
- if (_registeredItemCreators.count (name) == 0 )
140
+ if (! _registeredItemCreators.count (name))
134
141
{
135
142
_registeredItemCreators[name] = std::move (creator);
136
- _categories.insert (category);
137
143
_registeredModelsOrder.push_back (name);
138
144
_registeredModelsCategory[name] = category;
145
+
146
+ if (!_categories.count (category)) {
147
+ _categories.insert (category);
148
+ _categoriesOrder.push_back (category);
149
+ }
139
150
}
140
151
}
141
152
@@ -144,12 +155,16 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
144
155
registerModelImpl (RegistryItemCreator creator, QString const &category )
145
156
{
146
157
const QString name = creator ()->name ();
147
- if (_registeredItemCreators.count (name) == 0 )
158
+ if (! _registeredItemCreators.count (name))
148
159
{
149
160
_registeredItemCreators[name] = std::move (creator);
150
- _categories.insert (category);
151
161
_registeredModelsOrder.push_back (name);
152
162
_registeredModelsCategory[name] = category;
163
+
164
+ if (!_categories.count (category)) {
165
+ _categories.insert (category);
166
+ _categoriesOrder.push_back (category);
167
+ }
153
168
}
154
169
}
155
170
0 commit comments