impr: Better sorting of hex cell visualizers

This commit is contained in:
WerWolv
2023-06-21 17:48:51 +02:00
parent 98395afe9d
commit da11c47693
5 changed files with 28 additions and 19 deletions

View File

@@ -723,9 +723,9 @@ namespace hex {
namespace impl {
void addDataVisualizer(const std::string &unlocalizedName, DataVisualizer *visualizer);
void addDataVisualizer(std::shared_ptr<DataVisualizer> &&visualizer);
std::map<std::string, DataVisualizer*> &getVisualizers();
std::vector<std::shared_ptr<DataVisualizer>> &getVisualizers();
}
@@ -737,10 +737,16 @@ namespace hex {
*/
template<std::derived_from<DataVisualizer> T, typename... Args>
void addDataVisualizer(Args &&...args) {
auto visualizer = new T(std::forward<Args>(args)...);
return impl::addDataVisualizer(visualizer->getUnlocalizedName(), visualizer);
return impl::addDataVisualizer(std::make_shared<T>(std::forward<Args>(args)...));
}
/**
* @brief Gets a data visualizer by its unlocalized nameb
* @param unlocalizedName Unlocalized name of the data visualizer
* @return The data visualizer, or nullptr if it doesn't exist
*/
std::shared_ptr<DataVisualizer> getVisualizerByName(const std::string &unlocalizedName);
}
/* Hash Registry. Allows adding new hashes to the Hash view */

View File

@@ -754,19 +754,28 @@ namespace hex {
namespace impl {
void addDataVisualizer(const std::string &unlocalizedName, DataVisualizer *visualizer) {
getVisualizers().insert({ unlocalizedName, visualizer });
void addDataVisualizer(std::shared_ptr<DataVisualizer> &&visualizer) {
getVisualizers().emplace_back(std::move(visualizer));
}
std::map<std::string, DataVisualizer*> &getVisualizers() {
static std::map<std::string, DataVisualizer*> visualizers;
std::vector<std::shared_ptr<DataVisualizer>> &getVisualizers() {
static std::vector<std::shared_ptr<DataVisualizer>> visualizers;
return visualizers;
}
}
std::shared_ptr<DataVisualizer> getVisualizerByName(const std::string &unlocalizedName) {
for (const auto &visualizer : impl::getVisualizers()) {
if (visualizer->getUnlocalizedName() == unlocalizedName)
return visualizer;
}
return nullptr;
}
}