Basic concept of MenuAction is working
Module can register action Window adds this action to its menu Clicking the menu item for the action has the expected result But menu structure still needs work (everything is now put into one dropdown menu)
This commit is contained in:
parent
f130c426a1
commit
dc8a052544
12 changed files with 220 additions and 28 deletions
|
|
@ -1,13 +1,13 @@
|
|||
#ifndef PLUGIN_SUPPORTPLUGINMODULE_H
|
||||
#define PLUGIN_SUPPORTPLUGINMODULE_H
|
||||
|
||||
#include "MenuLocation.h"
|
||||
#include "ToolbarLocation.h"
|
||||
#include "ModuleActionParameters.h"
|
||||
#include "MenuAction.h"
|
||||
#include "PluginRegister.h"
|
||||
#include <QObject>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
class QAction;
|
||||
class IPluginContentWidgetContext;
|
||||
|
|
@ -15,17 +15,23 @@ class IPluginContentWidgetContext;
|
|||
class PluginModule: public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
using MenuActionList = std::vector<MenuAction>;
|
||||
using ModuleAction = std::function<void(IPluginContentWidgetContext*, const ModuleActionParameters &)>;
|
||||
using ModuleActionMap = std::map<QString, ModuleAction>;
|
||||
|
||||
PluginModule(QString name, QString ident);
|
||||
|
||||
virtual void init() {};
|
||||
|
||||
const QString& name() const { return m_name; }
|
||||
const QString& identifier() const { return m_ident; }
|
||||
const QString& displayCategory() const { return m_displayCategory; }
|
||||
|
||||
void setDisplayCategory(QString category);
|
||||
void registerAction(QAction *action, MenuLocation menu_location, ToolbarLocation toolbar_location);
|
||||
|
||||
/// registers an action that should always be accessible from the menu
|
||||
void registerMenuAction(MenuAction action);
|
||||
const MenuActionList& menuActions() const;
|
||||
|
||||
void registerModuleAction(QString module_action, ModuleAction action);
|
||||
|
||||
|
|
@ -39,6 +45,7 @@ private:
|
|||
QString m_ident;
|
||||
QString m_displayCategory;
|
||||
|
||||
MenuActionList m_menuActions;
|
||||
ModuleActionMap m_moduleActions;
|
||||
};
|
||||
|
||||
|
|
@ -47,7 +54,6 @@ template <typename T>
|
|||
std::shared_ptr<PluginModule> createPluginModule(QString name, QString ident)
|
||||
{
|
||||
auto module = std::make_shared<T>(std::move(name), std::move(ident));
|
||||
module->init();
|
||||
|
||||
PluginRegister::getInstance()->registerModule(module);
|
||||
return std::move(module);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue