|
|
#pragma once
|
|
|
|
|
|
#include "nmSubWxs_global.h"
|
|
|
#include "nmDefines.h"
|
|
|
|
|
|
#include <QList>
|
|
|
#include <QString>
|
|
|
|
|
|
class nmAttrRegistry;
|
|
|
struct nmReservoirPropertiesSnapshot;
|
|
|
|
|
|
/** @brief 储层参数编辑页面分类。 */
|
|
|
enum nmReservoirPropertiesCategory
|
|
|
{
|
|
|
NM_RESERVOIR_PAGE_RESERVOIR = 0, ///< 储层。
|
|
|
NM_RESERVOIR_PAGE_WELL, ///< 井。
|
|
|
NM_RESERVOIR_PAGE_FAULT, ///< 断层。
|
|
|
NM_RESERVOIR_PAGE_FRACTURE, ///< 裂缝。
|
|
|
NM_RESERVOIR_PAGE_COMPOSITE_REGION, ///< 复合区。
|
|
|
NM_RESERVOIR_PAGE_REGION_MARK, ///< 区域标记。
|
|
|
NM_RESERVOIR_PAGE_COUNT ///< 分类数量。
|
|
|
};
|
|
|
|
|
|
/** @brief 参数对象的具体类型。 */
|
|
|
enum nmReservoirPropertiesObjectType
|
|
|
{
|
|
|
NM_RESERVOIR_OBJECT_RESERVOIR = 0, ///< 储层对象。
|
|
|
NM_RESERVOIR_OBJECT_VERTICAL_WELL, ///< 直井对象。
|
|
|
NM_RESERVOIR_OBJECT_VERTICAL_FRAC_WELL, ///< 垂直压裂井对象。
|
|
|
NM_RESERVOIR_OBJECT_HORIZONTAL_FRAC_WELL,///< 水平压裂井对象。
|
|
|
NM_RESERVOIR_OBJECT_REGION_MARK, ///< 区域标记对象。
|
|
|
NM_RESERVOIR_OBJECT_FAULT, ///< 断层对象。
|
|
|
NM_RESERVOIR_OBJECT_FRACTURE, ///< 裂缝对象。
|
|
|
NM_RESERVOIR_OBJECT_REGION ///< 复合区对象。
|
|
|
};
|
|
|
|
|
|
/** @brief 参数字段的编辑器类型。 */
|
|
|
enum nmReservoirParameterEditorType
|
|
|
{
|
|
|
NM_RESERVOIR_EDITOR_NUMBER = 0, ///< 浮点数输入框。
|
|
|
NM_RESERVOIR_EDITOR_INTEGER, ///< 整数输入框。
|
|
|
NM_RESERVOIR_EDITOR_ENUM ///< 稳定code枚举下拉框。
|
|
|
};
|
|
|
|
|
|
/** @brief 枚举下拉框选项。 */
|
|
|
struct NM_SUB_WXS_EXPORT nmReservoirEnumOption
|
|
|
{
|
|
|
QString m_sCode; ///< 不随语言变化的业务代码。
|
|
|
QString m_sText; ///< 当前语言下的显示文本。
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @brief 单个参数字段的界面描述。
|
|
|
* @note 稳定参数ID用于会话读写,基础参数ID用于读取XML单位和范围。
|
|
|
*/
|
|
|
struct NM_SUB_WXS_EXPORT nmReservoirParameterFieldInfo
|
|
|
{
|
|
|
QString m_sParameterId; ///< 编辑会话中的稳定参数ID。
|
|
|
QString m_sBaseParameterId; ///< 中英文参数XML中的基础参数ID。
|
|
|
QString m_sLabel; ///< 枚举字段的显示名称;数值字段留空时读取XML别名。
|
|
|
nmReservoirParameterEditorType m_eEditorType; ///< 字段编辑器类型。
|
|
|
bool m_bUnitEnabled; ///< 是否为该字段创建单位下拉框。
|
|
|
QList<nmReservoirEnumOption> m_listOptions; ///< 枚举字段的稳定选项。
|
|
|
};
|
|
|
|
|
|
/** @brief 参数分组的界面描述。 */
|
|
|
struct NM_SUB_WXS_EXPORT nmReservoirParameterGroupInfo
|
|
|
{
|
|
|
QString m_sTitle; ///< 分组标题。
|
|
|
int m_nRow; ///< 分组在页面网格中的行。
|
|
|
int m_nColumn; ///< 分组在页面网格中的列。
|
|
|
int m_nRowSpan; ///< 分组纵向跨越的行数。
|
|
|
int m_nColumnSpan; ///< 分组横跨的列数。
|
|
|
bool m_bValueRightAligned; ///< 数值输入是否右对齐。
|
|
|
bool m_bFieldsCentered; ///< 分组内字段是否水平居中并随宽度伸展。
|
|
|
QList<nmReservoirParameterFieldInfo> m_listFields; ///< 分组内按显示顺序排列的字段。
|
|
|
};
|
|
|
|
|
|
/** @brief 单个可编辑对象的完整界面描述。 */
|
|
|
struct NM_SUB_WXS_EXPORT nmReservoirPropertyObjectInfo
|
|
|
{
|
|
|
nmReservoirPropertiesCategory m_eCategory; ///< 对象所属页面分类。
|
|
|
nmReservoirPropertiesObjectType m_eObjectType; ///< 对象具体类型。
|
|
|
int m_nSourceIndex; ///< 对象在工作副本容器中的索引。
|
|
|
QString m_sObjectCode; ///< 编辑会话内稳定的对象编码。
|
|
|
QString m_sDisplayName; ///< 对象显示名称。
|
|
|
QList<nmReservoirParameterGroupInfo> m_listGroups; ///< 原型式分组和字段描述。
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @brief 储层参数规范目录。
|
|
|
* @note 对象映射、稳定ID、页面分组和联动所需的基础ID全部在此集中维护。
|
|
|
*/
|
|
|
class NM_SUB_WXS_EXPORT nmReservoirParameterCatalog
|
|
|
{
|
|
|
public:
|
|
|
/**
|
|
|
* @brief 将工作副本中的属性注册到独立注册表。
|
|
|
* @param pRegistry 编辑会话独占的属性注册表。
|
|
|
* @param oSnapshot 可写工作副本。
|
|
|
*/
|
|
|
static void registerSnapshot(nmAttrRegistry* pRegistry,
|
|
|
nmReservoirPropertiesSnapshot& oSnapshot);
|
|
|
|
|
|
/**
|
|
|
* @brief 构建指定分类的对象和原型式分组描述。
|
|
|
* @param eCategory 页面分类。
|
|
|
* @param oSnapshot 当前工作副本。
|
|
|
* @return 按界面显示顺序排列的对象描述。
|
|
|
*/
|
|
|
static QList<nmReservoirPropertyObjectInfo> createObjectInfos(
|
|
|
nmReservoirPropertiesCategory eCategory,
|
|
|
nmReservoirPropertiesSnapshot& oSnapshot);
|
|
|
|
|
|
/**
|
|
|
* @brief 将数据类中的存储文本转换为稳定枚举code。
|
|
|
* @param sParameterId 枚举参数ID。
|
|
|
* @param sStoredValue 数据类中的存储文本。
|
|
|
* @return 稳定业务code。
|
|
|
*/
|
|
|
static QString enumCodeFromStoredValue(const QString& sParameterId,
|
|
|
const QString& sStoredValue);
|
|
|
|
|
|
/**
|
|
|
* @brief 将稳定枚举code转换为数据类的存储文本。
|
|
|
* @param sParameterId 枚举参数ID。
|
|
|
* @param sCode 稳定业务code。
|
|
|
* @return 数据类使用的存储文本。
|
|
|
*/
|
|
|
static QString storedValueFromEnumCode(const QString& sParameterId,
|
|
|
const QString& sCode);
|
|
|
|
|
|
/** @brief 读取工作副本中的枚举code。 */
|
|
|
static QString enumCode(const nmReservoirPropertiesSnapshot& oSnapshot,
|
|
|
const QString& sParameterId);
|
|
|
|
|
|
/** @brief 修改工作副本中的枚举code。 */
|
|
|
static bool setEnumCode(nmReservoirPropertiesSnapshot& oSnapshot,
|
|
|
const QString& sParameterId,
|
|
|
const QString& sCode);
|
|
|
|
|
|
private:
|
|
|
nmReservoirParameterCatalog();
|
|
|
};
|