You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/iData/iXmlManager/Models/iParameter.h

143 lines
4.6 KiB
C

#pragma once
#include "iModelInfoBase.h"
/// @brief 参数所属类型区分默认为2(double)
enum ParaInfoType
{
PIT_Str = 0, //0:字符串(文本) Text属性
PIT_Int, //1:整形
PIT_Double, //2:Double数值
PIT_Img, //3:图像 Text属性 存放路径
PIT_Ba, //4:二进制 TODO
PIT_DateTime, //5:时间类型 "Text"存放时间
PIT_Cbx, //6:下拉Cmb 具有"ItemOptions"属性
PIT_SubSeg, //7:Seg流动段模式 具有"SubItems"属性,具有累积长度、产量等内容
PIT_SubSegEx, //8:Seg流动段模式扩展模式 具有"SubItems"属性,
// 并且以More按钮形式弹出可视化窗口
PIT_CbxClasp, //9:双下拉(扣型+公母),派生自 PIT_Cbx
// 具有"ItemOptions"+"ItemOptionExs"属性
PIT_SubNormal, //10:具有"SubItems"属性,普通的模式,比如 层数据CO2新增20250717
PIT_CbxEx, //11:[废弃,暂未启用]11:下拉Cmb针对模型选项的进一步扩展需要动态填充的 "ItemOptions"属性可有可无
// 放在外部进行处理,不依赖底层
PIT_BtnTable, //12:按钮,比如弹出表格,由外部进行控制
PIT_UNKNOWN
};
/// @brief 增加新的边界类型
enum BdyInfoType
{
BDY_Normal = 0, //0:常规边界参数,包括数值、以及类型(封闭、定压、无限大)
BDY_PureType, //1:单纯的类型,底水、等,无数字
BDY_Not, //2:并非边界
BDY_UNKNOWN
};
/// @brief 在多层模型情形下的显示与隐藏逻辑20260105新增
enum LayerAboutMode
{
LAM_Default = 0, //0:默认,显示在层内
// 参数示例:渗透率、表皮、模型选项(井型/储层类型)
LAM_Common, //1:显示在层外,作为 通用参数类
// 参数示例:井储系数、初始压力等
LAM_Swap, //2:交替显示,窜流模式下,显示在层外[每层内不显示]
// 非窜流模式下,显示在层内[每层内均显示]
// 参数示例:如边界类型、边界距离
LAM_UNKNOWN //其它,待扩展
};
/// @brief 参数描述
class I_XMLMANAGER_EXPORT iParameter : public iModelInfoBase
{
public:
iParameter();
~iParameter();
// 把List分配到成员变量
// 输入开始的m_listValues中index并且返回下一个index
virtual int allocateInfo(int nIndex);
// 写入xml
virtual void writeInfo(QDomElement& e, QDomDocument &doc);
// 判断是否sPara
// sPara 参数名称,可以是 英文也可以是中文,软件会自动判断
virtual bool isParaOf(QString sPara);
// 备份恢复
virtual bool saveBk();
virtual bool restoreBk();
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
// 默认值显示
virtual QString getDefaultShow();
// 根据参数模式,决定是否需要创建
virtual bool isProperOne(bool bDnMode);
protected:
virtual void initXmlTags();
public:
// xml解析的数据项
QString m_sName; //英文名称(简称)
QString m_sDesc; //英文描述
QString m_sUnit; //单位
QString m_sUnitRaw; //因为m_sUnit是解析并进行上标处理之后的结果
//所以通过这个变量来记录原始
double m_dDefault; //默认值
double m_dMax; //最大值
double m_dMin; //最小值
int m_nDigit; //小数位数如果为0则为整数
bool m_bScientific;//是否科学计数法标识
// 参数所属类型区分,默认为(double)
ParaInfoType m_oParaType;
// 增加新的边界类型,默认为(BDY_Not)
BdyInfoType m_oBdyType;
// 增加多层显示模式类型,默认为(LAM_Default)
LayerAboutMode m_oLayerAboutMode;
// 非xml解析
QString m_sAliasP; //父一级类别(别称),从外界传入
double m_dValue; //当前值,在对话框中调用时应用
// 只读20180409
bool m_bReadonly;
};
typedef QVector<iParameter*> vecParametersPtr;
/// @brief 参数描述,特殊的扩展,此处仅仅是为了在构造时初始化成员变量
class I_XMLMANAGER_EXPORT iParameterSp : public iParameter
{
public:
iParameterSp();
~iParameterSp();
virtual void parseInfo(const QDomElement& e);
void adjustPara(iParameter* p);
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
private:
QString m_sSubItems;
QString m_sSubItemsBk;//备份
};