logplus/ModuleConsole/include/WorkflowPlugin-.h
2026-01-16 17:18:41 +08:00

211 lines
5.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @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