logplus/Workflow/WFEngine/Module/include/TableParameterItemDelegate.h

171 lines
8.9 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/**
* @file TableParameterItemDelegate.h
* @brief
* @author sinopec
* @date 2012-3-22
*/
#ifndef PAI_FRAME_MODULEAPI_TABLEPARAMETERITEMDELEGATE_H_
#define PAI_FRAME_MODULEAPI_TABLEPARAMETERITEMDELEGATE_H_
#include "ParameterItem.h"
#include "Turtle.h"
namespace pai
{
namespace module
{
const char CommonSplitChar = ';'; ///< 通常用来区分参数项同一属性值的不同部分
const char ColumnSplitChar = '|'; ///< 通常用来区分各列之间的同类数据
const char ItemSplitChar = '/'; ///< 通常用来区分各列之间的数据的细分项
/**
* @brief InputMetaData中的组成部分
*/
enum
{
iColumnNameSection =0, ///< 列名在代表一个表格的参数项的InputMetaData中处于第一部分
iColumnTypeSection =1, ///< 列类型在代表一个表格的参数项的InputMetaData中处于第二部分
iColumnWidgetSection =2, ///< 列控件类型在代表一个表格的参数项的InputMetaData中处于第三部分
iColumnWidgetMetaDataSection =3, ///< 列控件的元数据在代表一个表格的参数项的InputMetaData中处于第四部分
iColumnControlDataSection = 4, ///< 列控件的控制数据在代表一个表格的参数项的InputMetaData中处于第五部分
iColumnDefaultTextSection = 5 ///< 列控件的缺省值在代表一个表格的参数项的InputMetaData中处于第六部分
};
/**
* @brief
*/
struct SColumnMetaData
{
std::string strColumnName; ///< 该列的名字这个名字也同时是指定行在该列对应参数项的Id)
std::string strColumnType; ///< 该列的类型请参考ParameterItem.h中的ParameterType
std::string strColumnWidget; ///< 该列的控件类型请参考ParameterItem.h中的ParameterInputType)
std::string strColumnWidgetMetaData; ///< 该列的控件的元数据
std::string strColumnWidgetState; ///< 该列的控件的状态
std::string strColumnDefaultValue; ///< 该列缺省值
SColumnMetaData() : strColumnName(""), strColumnType(""), strColumnWidget(""),
strColumnWidgetMetaData(""), strColumnWidgetState(""), strColumnDefaultValue(""){}
};
/**
* @class CTableParameterItemDelegate
* @brief
*/
class PAI_MODULE_EXPORT CTableParameterItemDelegate
{
private:
CTableParameterItemDelegate(const CTableParameterItemDelegate& tableParameterItemDelegate );
CTableParameterItemDelegate operator=(const CTableParameterItemDelegate& tableParameterItemDelegate );
public:
/**
* @brief
* @param[in] pTableParameterItem
*/
CTableParameterItemDelegate(CParameterItem* pTableParameterItem);
/**
* @brief
*/
virtual ~CTableParameterItemDelegate();
/**
* @brief
* @return
*/
CCompositeParameterItem* AddRow();
/**
* @brief
* @param[in] iRow 001
* @return truefalse
*/
bool DeleteRow(int iRow);
/**
* @brief
* @param[in] iRow 001
* @param[in] iColumn 001
* @return
*/
CParameterItem* GetCellParameterItem(int iRow,int iColumn) const;
/**
* @brief
* @param[in] iRow 001
* @param[in] strColumnName
* @return
*/
CParameterItem* GetCellParameterItem(int iRow,const std::string& strColumnName) const;
/**
* @brief ID
* @param[in] iRow 001
* @param[in] iColumn 001
* @return Id
*/
std::string GetCellID(int iRow,int iColumn) const;
/**
* @brief
* @return
*/
int GetRowCount() const;
/**
* @brief
* @return
*/
int GetColumnCount() const;
/**
* @brief
* @param[in] iColumn 001
* @return
*/
std::string GetColumnName(int iColumn) const;
/**
* @brief
* @param[in] iColumn 001
* @return
*/
pai::module::ParameterType GetColumnType(int iColumn) const;
/**
* @brief
* @param[in] iColumn 001
* @return
*/
ParameterInputType GetColumnInputType(int iColumn) const;
/**
* @brief
* <p>"Disable;","Invisible;","Editable"
*
* @param[in] iColumn 001
* @return
*/
std::string GetColumnWidgetControlData(int iColumn) const;
/**
* @brief ComboBox,
* ComboBox中的所有选择项/)
* @param[in] iColumn 001
* @return
*/
std::string GetColumnWidgetMetaData(int iColumn) const;
/**
* @brief ComboBox,
* ComboBox中的所有选择项/
* @param[in] iColumn 001
* @return
*/
std::string GetColumnWidgetMetaData(const std::string& strColumnName) const;
/**
* @brief
* @param[in] iColumn 001
* @return
*/
std::string GetColumnWidgetDefaultText(int iColumn) const;
private:
/**
* @brief
* @param strColumnName
*/
int GetColumnIndexByColumnName(const std::string& strColumnName) const;
/**
* @brief
*/
void RetreiveTableMetaData();
private:
CCompositeParameterItem* m_pRootItem;//代表表格的根参数项
std::vector<SColumnMetaData> m_vecColumnMetaData;//所有列的元数据
};
}
}
#endif /* PAI_FRAME_MODULEAPI_TABLEPARAMETERITEMDELEGATE_H_ */