78 lines
1.6 KiB
C++
78 lines
1.6 KiB
C++
#ifndef PLUGINMANAGER_H_
|
|
#define PLUGINMANAGER_H_
|
|
|
|
#include "PluginManagerAPI.h"
|
|
#include "DataProperty/DataBase.h"
|
|
#include "pluginBase.h"
|
|
#include <QList>
|
|
|
|
namespace GUI
|
|
{
|
|
class MainWindow;
|
|
}
|
|
|
|
namespace Plugins
|
|
{
|
|
class PluginBase;
|
|
|
|
class PLUGINMANAGERAPI PluginManager : public DataProperty::DataBase
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
static PluginManager* getInstance();
|
|
|
|
//获取加载的插件个数
|
|
int getPluginsCount();
|
|
//加载插件
|
|
void loadPlugs(GUI::MainWindow* m);
|
|
//加载单个插件
|
|
bool loadPlugin(QString name);
|
|
//卸载插件
|
|
bool releasePlugin(QString name);
|
|
//卸载插件
|
|
void releasePlugs();
|
|
//翻译
|
|
void reTranslate(QString lang);
|
|
//获取插件
|
|
PluginBase* getPluginByDescribe(QString des);
|
|
//根据类型获取插件
|
|
QList<PluginBase*> getPluginsByType(PluginType t);
|
|
//写出工程文件
|
|
QDomElement& writeToProjectFile(QDomDocument* doc, QDomElement* parent) override;
|
|
//从工程文件读入
|
|
void readDataFromProjectFile(QDomElement* e) override;
|
|
//是否有数据需要保存到工程文件
|
|
bool hasInfoToSave();
|
|
/**
|
|
* @brief 文件是否已经被加载
|
|
*
|
|
* @param fileName 要判断的文件名称 XXXX.dll 或者 XXXX.so
|
|
* @return true 文件已经被加载
|
|
* @return false 文件未被加载
|
|
*/
|
|
bool isFileLoaded(const QString fileName);
|
|
|
|
signals:
|
|
void updateActionStates();
|
|
|
|
public slots:
|
|
void manage();
|
|
|
|
private:
|
|
PluginManager() = default;
|
|
~PluginManager() = default;
|
|
|
|
private:
|
|
static PluginManager* _instance;
|
|
GUI::MainWindow* _mainWindow{};
|
|
|
|
QList<PluginBase*> _pluginList{};
|
|
|
|
};
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|