logplus/Workflow/WFEngine/Component/WorkflowWidget/include/SaveHelper.h

196 lines
6.4 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/**
* @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