159 lines
4.2 KiB
C++
159 lines
4.2 KiB
C++
/**
|
||
* @file WorkflowWidget.h
|
||
* @brief 用来展现和编辑工作流的控件
|
||
* @date 2011-06-23
|
||
*/
|
||
#ifndef PAI_FRAME_WORKFLOWWIDGET_WORKFLOWWIDGET_H
|
||
#define PAI_FRAME_WORKFLOWWIDGET_WORKFLOWWIDGET_H
|
||
|
||
#include <QWidget>
|
||
#include <QMap>
|
||
#include <QUuid>
|
||
#include "Turtle.h"
|
||
class QPixmap;
|
||
class QGraphicsView;
|
||
class QGraphicsScene;
|
||
|
||
namespace pai
|
||
{
|
||
namespace objectmodel
|
||
{
|
||
class PaiWorkflowDataModel;
|
||
}
|
||
namespace graphics2d
|
||
{
|
||
class GeneralWorkflowScene;
|
||
}
|
||
}
|
||
|
||
namespace pai
|
||
{
|
||
namespace graphics2d
|
||
{
|
||
/**
|
||
* @class WorkflowWidget
|
||
* @brief 用来展现和编辑工作流的控件
|
||
*/
|
||
class PAI_WORKFLOWWIDGET_EXPORT WorkflowWidget: public QWidget
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
/**
|
||
* @brief 构造函数
|
||
* @param[in] pWorkflow 工作流
|
||
* @param[in] pParent 父亲
|
||
* @param[in] jobRelated 是否是job场景工作流
|
||
*/
|
||
WorkflowWidget(pai::objectmodel::PaiWorkflowDataModel *pWorkflow = NULL,
|
||
QWidget *pParent = NULL,
|
||
bool jobRelated = false);
|
||
|
||
/**
|
||
* @brief 析构函数
|
||
*/
|
||
virtual ~WorkflowWidget();
|
||
|
||
/**
|
||
* @brief 得到场景对象
|
||
* @return 场景对象指针
|
||
*/
|
||
pai::graphics2d::GeneralWorkflowScene* GetScene() const;
|
||
|
||
/**
|
||
* @brief 设置工作流场景
|
||
* @param[in] pScene 场景对象指针
|
||
*/
|
||
void SetScene(pai::graphics2d::GeneralWorkflowScene *pScene);
|
||
|
||
/**
|
||
* @brief 得到工作流对象
|
||
* @return 工作流对象
|
||
*/
|
||
pai::objectmodel::PaiWorkflowDataModel* GetWorkflow() const;
|
||
|
||
/**
|
||
* @brief 获取工作流视口
|
||
* @return 视口
|
||
*/
|
||
QGraphicsView* GetGrapicsView () const;
|
||
|
||
/**
|
||
* @brief 存储工作流详细进度信息,以用来刷新
|
||
*/
|
||
void SetJobPrgsInfo();
|
||
|
||
/**
|
||
* @brief 设置场景是否可以交互
|
||
* @param[in] allowed 是否可以交互
|
||
*/
|
||
void SetInteractive(bool allowed);
|
||
|
||
/**
|
||
* @brief 设置某区域当前选中的ExtensionID
|
||
* @param[in] areaName 区域名
|
||
* @param[in] extensionID 当前选中的ExtensionID
|
||
*/
|
||
void SetSelectedExtension(const QString &areaName, const QString extensionID);
|
||
|
||
/**
|
||
* @brief 获取区域名和选中的ExtensionID对应Map
|
||
* @param[out] selectedMap 区域名和选中的ExtensionID
|
||
*/
|
||
void GetSelectedExtensions(QMap<QString, QString> &selectedMap);
|
||
|
||
/**
|
||
* @brief 清空区域名和选中的ExtensionID对应Map
|
||
*/
|
||
void ClearSelectedExtensions();
|
||
|
||
/**
|
||
* @brief 获取工具栏ID
|
||
* @return 工具栏ID
|
||
*/
|
||
QUuid GetID() const;
|
||
|
||
/**
|
||
* @brief 设置视口中item是否可以被多选
|
||
* @param[in] enable 多选b标志
|
||
*/
|
||
void EnableMultiSelect(bool enable);
|
||
|
||
/**
|
||
* @brief 保存新建工作流时,dbid会改变,因此需要更新工作流锁
|
||
* @param[in] dbid 工作流dbid
|
||
*/
|
||
void UpdateWorkflowLock(long long dbid);
|
||
|
||
public slots:
|
||
/**
|
||
* @brief 重置场景中的工作流
|
||
* @param[in] pWorkflow 工作流
|
||
* @param[in] needReload 重新加载标志
|
||
* @param[in] jobRelated 是否是job场景工作流
|
||
*/
|
||
// void SetWorkflow(pai::objectmodel::PaiWorkflowDataModel *pWorkflow = NULL,
|
||
// bool needReload = false,
|
||
// bool jobRelated = false);
|
||
|
||
protected:
|
||
/**
|
||
* @brief 用来弹出一个右键菜单来调用SeisView,目的仅用于示例插件交互的一种方式
|
||
* @param[in] pEvent 鼠标释放事件
|
||
*/
|
||
virtual void mouseReleaseEvent(QMouseEvent *pEvent);
|
||
|
||
private:
|
||
QGraphicsView *m_pGraphicsView; ///< 工作流图形编辑的视图
|
||
pai::objectmodel::PaiWorkflowDataModel *m_pWorkflow; ///< 工作流对象句柄
|
||
pai::graphics2d::GeneralWorkflowScene *m_pSceneManager; ///< 工作流图形编辑的场景
|
||
QMap<QString, QString> m_pSelectedExtension; ///< 保存每个区域选中的ExtensionID
|
||
|
||
QUuid m_ID; ///< 工具栏id
|
||
QUuid m_LockID; ///< 对m_pWorkflow进行加锁的id
|
||
bool m_JobRelated; ///< 是否为JobMananger Tab 页上的工作流
|
||
};
|
||
|
||
}
|
||
}
|
||
#endif ///< PAI_FRAME_WORKFLOWWIDGET_WORKFLOWWIDGET_H
|