/** * @file WorkflowWidget.h * @brief 用来展现和编辑工作流的控件 * @date 2011-06-23 */ #ifndef PAI_FRAME_WORKFLOWWIDGET_WORKFLOWWIDGET_H #define PAI_FRAME_WORKFLOWWIDGET_WORKFLOWWIDGET_H #include #include #include #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 &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 m_pSelectedExtension; ///< 保存每个区域选中的ExtensionID QUuid m_ID; ///< 工具栏id QUuid m_LockID; ///< 对m_pWorkflow进行加锁的id bool m_JobRelated; ///< 是否为JobMananger Tab 页上的工作流 }; } } #endif ///< PAI_FRAME_WORKFLOWWIDGET_WORKFLOWWIDGET_H