|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iWxBase.h"
|
|
|
|
|
|
#include "mAlgDefines.h"
|
|
|
|
|
|
#include "mGuiJob_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
//class iModelDesc;
|
|
|
|
|
|
class iParameter;
|
|
|
|
|
|
class ZxTableView;
|
|
|
|
|
|
class iModelOption;
|
|
|
|
|
|
class iBdyInfo;
|
|
|
|
|
|
class iGridRowItem;
|
|
|
|
|
|
class iGridRowUtils;
|
|
|
|
|
|
class iWxParam;
|
|
|
|
|
|
class tLayerDesc;
|
|
|
|
|
|
class tLayerParaInfo;
|
|
|
|
|
|
class iModelInfoBase;
|
|
|
|
|
|
|
|
|
|
|
|
class M_GUI_JOB_EXPORT iWxModelParameter : public iWxBase
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
explicit iWxModelParameter(QWidget *parent = 0);
|
|
|
|
|
|
~iWxModelParameter();
|
|
|
|
|
|
|
|
|
|
|
|
// 序列化
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
|
|
|
|
|
|
// 根据测试类型更改UI(比如多层、干扰等)
|
|
|
|
|
|
virtual void adjustUiByTestType(PvtTestType ptt);
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
|
virtual void initUI();
|
|
|
|
|
|
void initUI_HelpBox();
|
|
|
|
|
|
|
|
|
|
|
|
// 在pCtrl InitUI之前允许部分调整,如参数跟着模型走的调整
|
|
|
|
|
|
// 包括:
|
|
|
|
|
|
// 1. 把原有的被特殊模型修改过的,重新矫正过来
|
|
|
|
|
|
// 2. 调整特殊模型
|
|
|
|
|
|
virtual void adjustParaInfos(iParameter* pParameter);
|
|
|
|
|
|
virtual void restoreParaInfos(iParameter* pParameter = nullptr); //如果为空,则全部恢复
|
|
|
|
|
|
|
|
|
|
|
|
// 组织结果数据,注:vec不进行clear,由调用方自行clear
|
|
|
|
|
|
virtual bool organizeResults(QVector<iResultInfo>& vec, QString sType);
|
|
|
|
|
|
#ifdef _SCAN_OLD_CODES_
|
|
|
|
|
|
bool sortByShow(QVector<iResultInfo>& vec);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
// 返回所有的跟模型相关的边界参数的类型,封闭或定压
|
|
|
|
|
|
// 封闭:0
|
|
|
|
|
|
// 定压:1
|
|
|
|
|
|
bool getBdyInfos(QMap<QString, int>& map);
|
|
|
|
|
|
|
|
|
|
|
|
// 从各个Wx(m_vecWxDatas)中遍历查找
|
|
|
|
|
|
virtual bool setParaValue(QString sPara, double d);
|
|
|
|
|
|
virtual bool getParaValue(QString sPara, double& d);
|
|
|
|
|
|
// 返回所有参数,Key为英文ID
|
|
|
|
|
|
virtual bool getAllParaValues(QMap<QString, double>& map,
|
|
|
|
|
|
bool bOnlyFitted = false,
|
|
|
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool getAllParaUnits(QMap<QString, QString>& map,
|
|
|
|
|
|
bool bOnlyFitted = false,
|
|
|
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 收集多层相关的一些乱七八糟的信息,包括模型选项、边界类型、每条边的定压还是封闭等等。
|
|
|
|
|
|
/// @param map 收集的结果
|
|
|
|
|
|
/// @param bClearOlds 是否清空
|
|
|
|
|
|
/// @note 对于通用的,直接用标识,对于层内的添加层标识
|
|
|
|
|
|
bool collectFuzzyMLs(QMap<QString, QVariant>& map, \
|
|
|
|
|
|
bool bClearOlds = false);
|
|
|
|
|
|
|
|
|
|
|
|
// 模式设置
|
|
|
|
|
|
void setDnMode(bool b);
|
|
|
|
|
|
|
|
|
|
|
|
// 由ModelOption的触发(常规模式)
|
|
|
|
|
|
void freshByNormalMode(iModelOption* pOption);
|
|
|
|
|
|
// 由ModelOption的触发(多层模式)
|
|
|
|
|
|
void freshByLayersMode(iModelOption* pOption);
|
|
|
|
|
|
|
|
|
|
|
|
void makesureLayerParaInfos(QVector<tLayerDesc*>& vecTds, bool bCrossFlow);
|
|
|
|
|
|
|
|
|
|
|
|
// 刷新
|
|
|
|
|
|
virtual void refreshUIs_Normal(QStringList& listParas);
|
|
|
|
|
|
virtual void refreshUIs_ML(QStringList& listParas); //增加多层模式
|
|
|
|
|
|
virtual void _refreshUIs(QStringList& listParas);
|
|
|
|
|
|
|
|
|
|
|
|
void dealwithSegItem(double d);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent *);
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
//增加信号保证切换的时候,窗口中的参数显示与否的按钮初始化(即恢复到隐藏状态)
|
|
|
|
|
|
void sigWxImageInit();
|
|
|
|
|
|
void sigIsAddBt(bool IsAdd);
|
|
|
|
|
|
void sigGetNqAll(double& d);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 触发消息,获取具体的多层信息
|
|
|
|
|
|
void sigGetMultiLayerOptions(bool&, QVector<tLayerDesc*>*);
|
|
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
|
|
|
|
void slotShowParam(bool bHide);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 当前面窗体参数改变时,本窗体响应
|
|
|
|
|
|
virtual void slotParasObtained(QMap<QString, QVariant>& map);
|
|
|
|
|
|
// 根据多相单相对右侧参数进行调整
|
|
|
|
|
|
void setToMpMode(bool bMultiPhase, PvtFluidType pft);
|
|
|
|
|
|
|
|
|
|
|
|
void freshParasByMap(QMap<QString, QVariant>& mapOldValues);
|
|
|
|
|
|
void freshParasByValue(QString sPara, QVariant o);
|
|
|
|
|
|
|
|
|
|
|
|
// 参数表已经填写处理完毕之后,再次进行一些定制化的处理,比如线性流相关的内容
|
|
|
|
|
|
virtual void finalGridUtilDeals(bool bLinearFlow);
|
|
|
|
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
|
|
|
|
|
|
virtual void slotParasObtainedEx(iModelOption* pOption);
|
|
|
|
|
|
|
|
|
|
|
|
// 响应ParaCtrl数据的改变
|
|
|
|
|
|
virtual void slotParaCtrlValueChanged(QString sPara, QVariant o);
|
|
|
|
|
|
|
|
|
|
|
|
// 外部控制
|
|
|
|
|
|
virtual void slotOuterValidate(QString sPara, QVariant o, bool& bValid, bool& bSet);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 响应属性页子参数列表改变,比如调用水平井段数编辑功能
|
|
|
|
|
|
/// @param sSegName: (in) 基准参数,为英文标识,如流动段数:"Nq"
|
|
|
|
|
|
/// @param vvec: (in & out) 子参数数据,
|
|
|
|
|
|
/// 注意:key为英文,如"NqX","NqL","NqQ"之类,与xml配置文件严格对应
|
|
|
|
|
|
/// @param dWellLen: (in) 水平井长度
|
|
|
|
|
|
/// @param bModified: (out) 是否正确触发且vvec发生改变
|
|
|
|
|
|
virtual void slotSegItemMore(const QString sSegName, \
|
|
|
|
|
|
QVector<QMap<QString, double> >& vvec, \
|
|
|
|
|
|
const double dWellLen, \
|
|
|
|
|
|
bool& bModified);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 响应边界信息改变,比如修改平行边界,由上下改为左右
|
|
|
|
|
|
/// @param pItem: (in) 当前的GroupItem,其实即是本类iGridRowGroupBdy
|
|
|
|
|
|
/// @param vvec: (in & out) 边界信息数据
|
|
|
|
|
|
/// @param bModified: (out) 是否正确触发且vvec发生改变
|
|
|
|
|
|
void slotBdyDetails(iGridRowItem* pItem, \
|
|
|
|
|
|
QVector< iBdyInfo* >& vvec, \
|
|
|
|
|
|
bool& bModified);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 响应 触发按钮,允许外部进行按钮操作,比如弹出对话框之类
|
|
|
|
|
|
/// @param sName: (in) 参数标识,为英文标识
|
|
|
|
|
|
/// @param vCustom: (in & out) 外部弹出后,可以把数据传递回来,并且缓存,以支持序列化
|
|
|
|
|
|
/// @param bModified: (out) 是否正确触发且vCustom发生改变
|
|
|
|
|
|
void slotItemBtnClicked(const QString sName, QVariant& vCustom, bool& bModified);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 触发参数(其它,比如边界,下拉选项)改变,允许外界进行更改
|
|
|
|
|
|
/// @param sName: 参数名称
|
|
|
|
|
|
/// @param o1: 当前选择的数据Index,currentindex在列表o2中的索引
|
|
|
|
|
|
/// @param o2: 辅助数据,如Cbx的下拉填充内容QStringList
|
|
|
|
|
|
/// 比如有的边界,可以下拉包括 无限大,有的不需要
|
|
|
|
|
|
/// @param bSet:是否已经正确设置
|
|
|
|
|
|
/// @note 通常 在 setParameter 函数中触发
|
|
|
|
|
|
void slotItemExPrevChanged(QString sName, \
|
|
|
|
|
|
QVariant& o1, QVariant& o2, \
|
|
|
|
|
|
bool& bSet);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 响应Basic对话框的Changed:当勾选多层或者多层数据修改了,则触发
|
|
|
|
|
|
void slotBasicMultiLayerOptionChanged();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 对GridRowUtils右键菜单进行调整
|
|
|
|
|
|
virtual void slotAdjustGridUtilContextMenu(QMenu*& pMenu, iGridRowItem* pItem);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void slotShowAllItems();
|
|
|
|
|
|
virtual void slotShowMainItems();
|
|
|
|
|
|
|
|
|
|
|
|
virtual void slotShowHelpBox();
|
|
|
|
|
|
virtual void slotHideHelpBox();
|
|
|
|
|
|
|
|
|
|
|
|
// help msg
|
|
|
|
|
|
virtual void slotHelpMsg(QString& s);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
void showItems(bool bMainItems);
|
|
|
|
|
|
void setHelpBoxVisible(bool bVisible);
|
|
|
|
|
|
|
|
|
|
|
|
//virtual void makesureListParas(QStringList& listParas); //对显示名称进行调整
|
|
|
|
|
|
virtual void runParseOldVersion(QStringList& listParas, ZxSerializer* ser);
|
|
|
|
|
|
|
|
|
|
|
|
QStringList checkTypes(); //类别
|
|
|
|
|
|
|
|
|
|
|
|
// 根据当前选中模型处理特殊参数
|
|
|
|
|
|
void findSpecialParas();
|
|
|
|
|
|
|
|
|
|
|
|
//设置参数隐藏
|
|
|
|
|
|
void setSpecialParasHide(bool &IsAdd);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 检查参数选项是否需要外部定制(其它,比如边界,下拉选项)
|
|
|
|
|
|
/// @param sName: 参数名称
|
|
|
|
|
|
/// @param o1: 当前选择的数据Index,currentindex在列表o2中的索引
|
|
|
|
|
|
/// @param o2: 辅助数据,如Cbx的下拉填充内容QStringList
|
|
|
|
|
|
/// 比如有的边界,可以下拉包括 无限大,有的不需要
|
|
|
|
|
|
bool checkSpecialBDY(QString sName, \
|
|
|
|
|
|
QVariant& o1, QVariant& o2);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 布局器
|
|
|
|
|
|
QVBoxLayout* m_pMainLayout;
|
|
|
|
|
|
|
|
|
|
|
|
QStringList m_listParas;
|
|
|
|
|
|
iGridRowUtils* m_pGridItemUtils;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _SCAN_OLD_CODES_
|
|
|
|
|
|
// 临时,不序列化
|
|
|
|
|
|
QStringList m_listParaTags;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
// 临时
|
|
|
|
|
|
QString m_sSerie;
|
|
|
|
|
|
QString m_sWbs;
|
|
|
|
|
|
QString m_sWelTag;
|
|
|
|
|
|
QString m_sResTag;
|
|
|
|
|
|
QString m_sBdy;
|
|
|
|
|
|
|
|
|
|
|
|
// 满足当前模型条件的特殊的Parameter
|
|
|
|
|
|
QVector<iParameter*> m_vecSpecialParas;
|
|
|
|
|
|
|
|
|
|
|
|
// 多层数据
|
|
|
|
|
|
QVector<tLayerParaInfo*> m_vecLayerInfos;
|
|
|
|
|
|
|
|
|
|
|
|
bool m_bDnMode;
|
|
|
|
|
|
|
|
|
|
|
|
bool m_bMultiPhase;
|
|
|
|
|
|
PvtFluidType m_pft; //20260407 Added
|
|
|
|
|
|
|
|
|
|
|
|
iWxParam* m_pWxBk;//不涉及序列化
|
|
|
|
|
|
|
|
|
|
|
|
iModelOption* m_pOption; //不涉及序列化
|
|
|
|
|
|
|
|
|
|
|
|
// Help
|
|
|
|
|
|
QTextEdit * m_pHelpBox;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 参数来源标识,默认情况下,为 s_Sys_Para_Default
|
|
|
|
|
|
// 不涉及序列化
|
|
|
|
|
|
QString m_sParaSrcTag;
|
|
|
|
|
|
|
|
|
|
|
|
// 临时,是否线性流,目前只考虑了 常规,其它如多层等均未考虑
|
|
|
|
|
|
// 该函数,是基于WelID,根据后台ini文件进行判断
|
|
|
|
|
|
// 目的是决定,边界是否特殊定制
|
|
|
|
|
|
// 目前主要用于西安线性流模型
|
|
|
|
|
|
bool m_bLinearFlow; //不涉及序列化
|
|
|
|
|
|
};
|