211 lines
5.1 KiB
C++
211 lines
5.1 KiB
C++
/**
|
||
* @file WorkflowPlugin.h
|
||
* @brief 工作流编辑界面插件的入口类
|
||
* @date 2011-6-27
|
||
*/
|
||
#ifndef PAI_FRAME_WORKFLOWVIEW_WORKFLOWPLUGIN_H
|
||
#define PAI_FRAME_WORKFLOWVIEW_WORKFLOWPLUGIN_H
|
||
|
||
#include <QObject>
|
||
#include <QPointer>
|
||
#include <QModelIndex>
|
||
#include "IPlugin.h"
|
||
#include "IObjectTypeSupport.h"
|
||
#include "IContextMenuExtension.h"
|
||
#include "WorkflowPluginControl.h"
|
||
|
||
class QAction;
|
||
class QGraphicsItem;
|
||
class QWebPage;
|
||
class QTreeWidgetItem;
|
||
|
||
namespace pai
|
||
{
|
||
namespace objectmodel
|
||
{
|
||
class PaiObject;
|
||
class PaiWorkflowDataModel;
|
||
}
|
||
namespace graphics2d
|
||
{
|
||
class CParameterEditor;
|
||
}
|
||
namespace gui
|
||
{
|
||
class PaiAction;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
namespace pai
|
||
{
|
||
/**
|
||
* @class CPaiWorkflowPlugin
|
||
* @brief 工作流编辑界面插件的入口类
|
||
*/
|
||
class PAI_WORKFLOWVIEW_EXPORT CPaiWorkflowPlugin: public QObject,
|
||
public pai::IPlugin,
|
||
public pai::IObjectTypeSupport,
|
||
public pai::IContextMenuExtension
|
||
{
|
||
Q_OBJECT
|
||
|
||
Q_INTERFACES(pai::IPlugin pai::IObjectTypeSupport pai::IContextMenuExtension)
|
||
public:
|
||
CPaiWorkflowPlugin();
|
||
virtual ~CPaiWorkflowPlugin();
|
||
|
||
/**
|
||
* @brief插件集成到主控台
|
||
*/
|
||
virtual void Integrate();
|
||
|
||
/**
|
||
* Remove the seismic view from main console.
|
||
*/
|
||
virtual void Dispose();
|
||
|
||
/**
|
||
* Get the unique ID for the plugin.
|
||
*/
|
||
virtual QUuid GetID() const
|
||
{
|
||
return QUuid(QString("1e511b0b-02a6-4eec-af57-613f489d4b49"));
|
||
}
|
||
|
||
/**
|
||
* @brief 得到插件的描述信息
|
||
* @return 插件的描述信息
|
||
*/
|
||
virtual PluginInformation GetInformation();
|
||
|
||
/**
|
||
* @brief 打开并显示视图的界面,通常用来将GUI插件的界面嵌入到主控台或其他GUI插件。注意事项是必须有且只有一个界面使用IPlugin的ID进行界面的注册。
|
||
*/
|
||
bool OpenView();
|
||
|
||
/**
|
||
* @brief 展现数据,用来显示指定数据对象到视图界面上。
|
||
* @param[in] pObject 数据对象模型
|
||
*/
|
||
virtual bool Show(pai::objectmodel::PaiObject * pObj);
|
||
|
||
/**
|
||
* @brief 激活数据,用来激活指定数据对象对应的视图界面。
|
||
* @param[in] pObject 数据对象模型
|
||
*/
|
||
virtual bool Active(pai::objectmodel::PaiObject* pObject);
|
||
|
||
/**
|
||
* @brief 得到支持的所有类型
|
||
* @return 所有支持类型的标识符集合
|
||
*/
|
||
virtual QList<QUuid> GetSupportedTypeIDs() const;
|
||
|
||
/**
|
||
* @brief 处理上下文菜单的统一接口,通常用来向指定的上下文菜单添加该插件所特有的菜单项。
|
||
* @param[in] contextObjs 相关对象
|
||
* @param[out] actions Action列表
|
||
* @return 成功返回true, 失败返回false
|
||
*/
|
||
virtual bool Handle(QList<pai::objectmodel::PaiObject*> & contextObjs, QList<pai::gui::PaiAction*> & actions);
|
||
|
||
/**
|
||
* @brief 重载该纯虚函数得到字符串格式的ID
|
||
*/
|
||
virtual std::string GetStringID() const
|
||
{
|
||
return GetID().toString().toStdString();
|
||
}
|
||
|
||
/**
|
||
* @brief 获得控制器指针
|
||
*/
|
||
WorkflowPluginControl * GetWorkflowPluginCtr()
|
||
{
|
||
return &m_control;
|
||
}
|
||
|
||
public slots:
|
||
/**
|
||
* @brief活动tab改变时,切换tab
|
||
*/
|
||
void slotOnActiveTabPage(const QString &);
|
||
|
||
/**
|
||
* @brief 工作流参数预审,redo
|
||
*/
|
||
void slotBrowseWorkflow();
|
||
|
||
/**
|
||
* @brief 响应点击区域页签
|
||
*/
|
||
void slotActiveAreaTabPage(const QString& strAreaName,const std::string& activedViewID);
|
||
|
||
private slots:
|
||
/**
|
||
* @brief param点击后显示param的description,临时方案
|
||
*/
|
||
void slotShowDescription(const QModelIndex & index);
|
||
|
||
/**
|
||
* @brief 模块点击后显示模块的帮助文档
|
||
*/
|
||
void slotShowHelpDoc(QTreeWidgetItem * item, int column);
|
||
|
||
/**
|
||
* @brief 选中模块后显示模块的帮助文档
|
||
*/
|
||
void slotShowHelpDocForSceneSelect(pai::workflow::CModuleInformation* pModuleInformation);
|
||
|
||
/**
|
||
*@brief 显示工作流模板
|
||
*@param objectList 要显示的工作流模板对象
|
||
*/
|
||
void slotShowTemplate(QList<pai::objectmodel::PaiObject*> objectList);
|
||
|
||
/**
|
||
*@brief 删除工作流模板
|
||
*@param objectList 要显示的工作流模板对象
|
||
*/
|
||
void slotDeleteTemplate(QList<pai::objectmodel::PaiObject*> objectList);
|
||
|
||
/**
|
||
* @brief 打开工作流帮助文档
|
||
*/
|
||
void OpenWorkflowHelp();
|
||
|
||
private:
|
||
/**
|
||
* @brief 显示指定的工作流对象
|
||
* @param pWorkflowObject 指定的工作流对象
|
||
*/
|
||
bool _ShowWorkflow(pai::objectmodel::PaiWorkflowDataModel* pWorkflowObject);
|
||
|
||
/**
|
||
* @brief 显示模块的帮助文档
|
||
*/
|
||
void ShowHelpDoc(std::string strHelp);
|
||
|
||
/**
|
||
* @brief 取得模块的帮助文档的Page
|
||
*/
|
||
QWebPage* GetWebHelpInfo();
|
||
|
||
protected:
|
||
/**
|
||
*@brief 获取当前活动的工作流
|
||
*@return PaiWorkflowDataModel* 活动工作流对象指针
|
||
*/
|
||
pai::objectmodel::PaiWorkflowDataModel* GetActiveWorkflow();
|
||
|
||
|
||
QPointer<pai::graphics2d::CParameterEditor> m_pParameterEditor;
|
||
WorkflowPluginControl m_control; // 插件的控制器
|
||
};
|
||
|
||
}
|
||
|
||
#endif
|