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
|