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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;//备份
};