logplus/Workflow/WFEngine/Component/WorkflowWidget/include/WorkflowWidget.h
2026-01-16 17:18:41 +08:00

159 lines
4.2 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 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