#pragma once #include #include #include #include class QMenu; namespace Xybrid::Data { class Node; class Graph; } namespace Xybrid::Config { class PluginInfo { public: std::string id; std::vector oldIds; std::string displayName; std::string category; std::function()> createInstance; bool hidden = false; PluginInfo() = default; virtual ~PluginInfo() = default; }; namespace PluginRegistry { bool enqueueRegistration(std::function); void registerPlugin(std::shared_ptr); void init(); std::shared_ptr createInstance(const std::string& id); void populatePluginMenu(QMenu*, std::function)>, Data::Graph* = nullptr); } }