1
0
mirror of synced 2024-12-12 07:51:05 +01:00
ImHex/plugins/libimhex/include/hex/helpers/shared_data.hpp

84 lines
2.7 KiB
C++
Raw Normal View History

#pragma once
#include <any>
#include <functional>
2021-01-20 20:16:24 +01:00
#include <list>
2021-01-11 21:11:03 +01:00
#include <map>
2021-01-20 20:16:24 +01:00
#include <vector>
#include <hex/api/content_registry.hpp>
2021-01-20 20:16:24 +01:00
#include <hex/api/imhex_api.hpp>
#include <hex/api/event.hpp>
#include <imgui.h>
2021-01-27 00:44:10 +01:00
#include <ImGuiFileBrowser.h>
#include <nlohmann/json.hpp>
namespace hex { class SharedData; }
namespace hex::plugin::internal {
void initializePlugin(SharedData &sharedData);
}
namespace hex {
namespace prv { class Provider; }
namespace dp { class Node; }
class View;
class SharedData {
SharedData() = default;
public:
SharedData(const SharedData&) = delete;
SharedData(SharedData&&) = delete;
friend class Window;
template<typename T>
static T& getVariable(std::string variableName) {
return std::any_cast<T&>(SharedData::sharedVariables[variableName]);
}
template<typename T>
static void setVariable(std::string variableName, T value) {
SharedData::sharedVariables[variableName] = value;
}
public:
static std::vector<EventHandler> eventHandlers;
static std::vector<std::function<void()>> deferredCalls;
static prv::Provider *currentProvider;
static std::map<std::string, std::vector<ContentRegistry::Settings::Entry>> settingsEntries;
static nlohmann::json settingsJson;
static std::map<std::string, Events> customEvents;
static u32 customEventsLastId;
static std::vector<ContentRegistry::CommandPaletteCommands::Entry> commandPaletteCommands;
static std::map<std::string, ContentRegistry::PatternLanguageFunctions::Function> patternLanguageFunctions;
static std::vector<View*> views;
static std::vector<ContentRegistry::Tools::Entry> toolsEntries;
static std::vector<ContentRegistry::DataInspector::Entry> dataInspectorEntries;
static u32 patternPaletteOffset;
static std::string errorPopupMessage;
2021-01-20 20:16:24 +01:00
static std::list<ImHexApi::Bookmarks::Entry> bookmarkEntries;
2021-01-27 00:44:10 +01:00
static imgui_addons::ImGuiFileBrowser fileBrowser;
static imgui_addons::ImGuiFileBrowser::DialogMode fileBrowserDialogMode;
static std::string fileBrowserTitle;
static std::string fileBrowserValidExtensions;
static std::function<void(std::string)> fileBrowserCallback;
static std::vector<ContentRegistry::DataProcessorNode::Entry> dataProcessorNodes;
static u32 dataProcessorNodeIdCounter;
static int mainArgc;
static char **mainArgv;
static ImVec2 windowPos;
static ImVec2 windowSize;
private:
static std::map<std::string, std::any> sharedVariables;
};
}