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

196 lines
6.4 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 SaveHelper.h
* @brief 辅助Save和Save As, 用来弹出保存对话框。
* @date 2012-10-17
*/
#ifndef PAI_FRAME_WORKFLOWWIDGET_SAVEHELPER_H
#define PAI_FRAME_WORKFLOWWIDGET_SAVEHELPER_H
#include <QUuid>
#include <QString>
// #include "ErrorCode.h"
namespace pai
{
namespace objectmodel
{
class PaiObject;
class PaiProject;
class PaiSurvey;
class PaiWorkflowDataModel;
}
namespace graphics2d
{
class WorkflowWidget;
}
namespace gui
{
class PaiTextEdit;
}
}
/**
* @enum SaveType
* @brief 保存类型
*/
enum SaveType
{
SaveType_DoCancel = 0x00000000, ///< 取消,不保存
SaveType_DoOpenDialog = 0x00000001, ///< 不覆盖,继续打开保存对话框 一般是点击了不覆盖后设置的
SaveType_IsJobOpen = 0x00000010, ///< 从作业打开的
SaveType_IsWorkOpen = 0x00000100, ///< 从工作流节点打开的
SaveType_ExistSameName = 0x00001000, ///< 存在同名工作流
SaveType_IsCurrentWorkflow = 0x00010000, ///< 同名工作流是当前要保存的工作流
SaveType_IsNewWorkflow = 0x00100000, ///< 当前工作流是新创建未保存过的工作流
SaveType_IsJobSave = 0x01000000 ///< 当前工作流是从作业管理界面直接保存的
};
namespace pai
{
/**
* @class SaveHelper
* @brief 辅助Save和Save As, 用来弹出保存对话框。
*/
class PAI_WORKFLOWWIDGET_EXPORT SaveHelper
{
public:
/**
* @brief 构造函数
*/
SaveHelper();
/**
* @brief 析构函数
*/
virtual ~SaveHelper();
/**
* @brief 设置当前正在编辑的工作流页面视图
* @param[in] pWorkflowWidget 正在编辑的工作流页面视图
*/
static void SetActiveWorkflowView(pai::graphics2d::WorkflowWidget* pWorkflowWidget);
/**
* @brief 得到当前激活的正在编辑的工作流页面视图
* @return 正在编辑的工作流页面视图
*/
static pai::graphics2d::WorkflowWidget* GetActiveWorkflowView();
/**
* @brief 只是保存当前工作流先后操作工作流模型保存json和数据库部分。
* @param[in] pWorkflow 要保存的工作流模型
* @param[in] isTemplate 要保存的工作流是否是模板
* @return 保存结果
*/
static bool SaveWorkflow(pai::objectmodel::PaiWorkflowDataModel *pWorkflow, bool isTemplate = false);
/**
* @brief 保存当前编辑的工作流为指定名称文件
* @param[in] pWorkflow 要保存的工作流模型
* @param[in] jsonFilePath 保存文件名
* @return 保存结果
*/
static bool SaveWorkflowJson(pai::objectmodel::PaiWorkflowDataModel *pWorkflow, const QString& jsonFilePath);
/**
* @brief 获得属性编辑框
* @return 属性编辑框
*/
static pai::gui::PaiTextEdit* GetPropertiesTextEdit();
/**
* @brief 打开工作流保存对话框
* @param[in,out] workflowName 工作流名称
* @param[in] ppSurvey 工区指针
* @param[in] pActiveWorkflow 当前工作流
* @return 保存结果
*/
static int OpenSaveDialog(QString &workflowName,
pai::objectmodel::PaiSurvey** ppSurvey,
pai::objectmodel::PaiWorkflowDataModel*pActiveWorkflow);
/**
* @brief 打开工作流另存为对话框
* @param[in,out] workflowName 工作流名称
* @param[in] ppSurvey 工区指针
* @param[in] pActiveWorkflow 当前工作流
* @return 另存为结果
*/
static int OpenSaveAsDialog(QString &workflowName,
pai::objectmodel::PaiSurvey** ppSurvey ,
pai::objectmodel::PaiWorkflowDataModel*pActiveWorkflow);
/**
* @brief 得到当前修改过的打开的工作流对象集合
* @param[in] viewID 工作流插件ID
* @return 当前修改过的打开的工作流对象集合
*/
static QList< pai::objectmodel::PaiWorkflowDataModel* > GetModifiedWorkflows(QUuid viewID);
/**
* @brief 设置保存失败时的异常信息
* @param[in] what 异常信息
* @param[in] which 错误类型
*/
// static void SetSaveException(const QString & what, const int which = pai::error::ERR_SUCCESS);
/**
* @brief 获取保存失败时的异常信息e.what()
* @return 异常信息
*/
static QString GetSaveExceptionWhat();
/**
* @brief 获取保存失败时的异常信息e.which()
* @return 错误类型
*/
static int GetSaveExceptionWhich();
/**
* @brief 获取当前工作流所对应的工区
* @param[in] 当前工作流的DBID
* @return pSurvey 工区指针
*/
static pai::objectmodel::PaiSurvey* GetSurveyByWfDBID(long long workflowDBID);
private:
/**
* @brief 弹出信息提示对话框,在单元测试的场景下后台输出该语句
* @param[in] title 错误标题
* @param[in] message 错误内容
*/
static void ShowMessage(const QString& title, const QString& message);
/**
* @brief 打开工作流保存对话框
* @param[in] save true Save操作, false save as操作
* @param[in,out] workflowName 工作流名称,也是返回数据
* @param[in] ppSurvey 要返回的工区双指针
* @return 保存类型见SaveType
*/
static int OpenSaveDialog(bool save, QString &workflowName, pai::objectmodel::PaiSurvey **ppSurvey, pai::objectmodel::PaiWorkflowDataModel *pActiveWorkflow);
/**
* @brief 验证保存工作流的名字
* @param[in] save true Save操作, false save as操作
* @param[in] strWorkflowName 工作流的名字
* @param[in] pSurvey 指定工区指针
* @return 见SaveType
*/
static int ValidateSaveWorkflowName(bool save,
const QString& workflowName,
pai::objectmodel::PaiWorkflowDataModel *pActiveWorkflow,
pai::objectmodel::PaiSurvey *pSurvey = NULL);
private:
static pai::graphics2d::WorkflowWidget *m_pActiveWorkflowWidget; ///< 当前正在编辑的工作流页面视图
static QString m_ExceptionWhat; ///< 对应捕获异常时的e.what()信息
static int m_ExceptionWhich; ///< 对应捕获异常时的e.whicht()信息
};
}
#endif ///< PAI_FRAME_WORKFLOWWIDGET_SAVEHELPER_H