#include "plugin_support/PluginModule.h" #include "PluginContentWidget.h" #include #include #include PluginModule::PluginModule(QString name, QString ident) : m_name(std::move(name)) , m_ident(std::move(ident)) { } void PluginModule::setDisplayCategory(QString category) { m_displayCategory = std::move(category); } void PluginModule::registerStaticAction(StaticAction action) { m_menuActions.emplace_back(std::move(action)); } const PluginModule::StaticActionList& PluginModule::staticActions() const { return m_menuActions; } void PluginModule::registerModuleAction(QString module_action, ModuleAction action) { m_moduleActions.emplace( std::move(module_action), std::move(action) ); } const PluginModule::ModuleAction* PluginModule::findModuleAction(const QString &module_action) const { auto res = m_moduleActions.find(module_action); if (res == m_moduleActions.end()) return nullptr; return &res->second; } void PluginModule::registerContextAction(std::shared_ptr action) { auto find_result_iter = m_contextMap.find(action->contextTypeIndex()); if (find_result_iter != m_contextMap.end()) find_result_iter->second.push_back(action); else m_contextMap.emplace(action->contextTypeIndex(), ContextActionContainer({ action })); } const PluginModule::ContextActionContainer &PluginModule::actionsForContext(std::type_index ti) { static const ContextActionContainer empty_result; auto find_result_iter = m_contextMap.find(ti); if (find_result_iter != m_contextMap.end()) return find_result_iter->second; return empty_result; } const PluginModule::ContextActionContainer& PluginModule::actionsForContext(PluginContentWidget *widget) { return actionsForContext(std::type_index(typeid(*widget))); }