|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iWxDiffusionBase.h"
|
|
|
|
|
|
#include "mToolDiffusion_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
class iWxToolBar;
|
|
|
|
|
|
class iRibbonXmlCmd;
|
|
|
|
|
|
class iRibbonXmlTab;
|
|
|
|
|
|
class TreeWxConfig;
|
|
|
|
|
|
class iWxDiffusionSub;
|
|
|
|
|
|
class iAlgPseuMethodTriInfo;
|
|
|
|
|
|
class iAlgPseuMethodCompInfo;
|
|
|
|
|
|
class M_TOOL_DIFFUSION_EXPORT iWxDiffusionMain : public iWxDiffusionBase
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
iWxDiffusionMain(QWidget* parent = 0);
|
|
|
|
|
|
~iWxDiffusionMain();
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 设置默认勾选哪些项
|
|
|
|
|
|
/// @param lists哪些项,英文标识
|
|
|
|
|
|
void setDiffusionInfos(QStringList lists);
|
|
|
|
|
|
|
|
|
|
|
|
// 是否向导模式
|
|
|
|
|
|
void setWizardMode(bool b);
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
|
virtual void initUI();
|
|
|
|
|
|
|
|
|
|
|
|
// 文件标识
|
|
|
|
|
|
virtual QString getFileDiffusionTag();
|
|
|
|
|
|
|
|
|
|
|
|
// 新增接口(与一个数据对象体进行绑定式关联)
|
|
|
|
|
|
virtual bool saveAsDataObj(ZxDataObject*& pDataObj);
|
|
|
|
|
|
virtual bool loadFromDataObj(ZxDataObject*& pDataObj);
|
|
|
|
|
|
|
|
|
|
|
|
// 返回名称标识
|
|
|
|
|
|
virtual QString getAwiName();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 类似clone
|
|
|
|
|
|
virtual void copyFrom(ZxUiBase* p);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 获取 Diffusion页面中,某个参数的具体数值
|
|
|
|
|
|
/// @param dso,参数,代表是相渗还是压敏还是吸附
|
|
|
|
|
|
/// @param sPara,参数,英文标识而且大小写敏感
|
|
|
|
|
|
/// @param d,返回的结果
|
|
|
|
|
|
/// @note 主要是左侧属性页上的各项的数据,参照xml定义进行读取
|
|
|
|
|
|
bool getDiffParaOf(DiffusionSubOption dso, QString sPara, double& d);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 获取 Diffusion页面中,所有参数数值
|
|
|
|
|
|
/// @param dso,参数,代表是相渗还是压敏还是吸附
|
|
|
|
|
|
/// @param map,返回的结果。
|
|
|
|
|
|
/// @param bOnlyFitted,是否只考虑拟合类参数,本处不涉及
|
|
|
|
|
|
/// @param bClearMap,是否清空。
|
|
|
|
|
|
/// @note 主要是左侧属性页上的各项的数据,参照xml定义进行读取
|
|
|
|
|
|
bool getDiffAllParaValues(DiffusionSubOption dso, \
|
|
|
|
|
|
QMap<QString, double>& map, \
|
|
|
|
|
|
bool bOnlyFitted = false, \
|
|
|
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 获取 Diffusion页面中,计算结果,基本上就是右侧对应表格的数据
|
|
|
|
|
|
/// @param dso,参数,代表是相渗还是压敏还是吸附
|
|
|
|
|
|
/// @param vvec,返回数据,即计算结果,与右侧表格对应
|
|
|
|
|
|
bool getDiffRstOf(DiffusionSubOption dso, VVecDouble& vvec);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 单独增加一个对相渗的处理(针对CO2,比较特殊,此处相渗是气水两相,具体咨询wangzg)
|
|
|
|
|
|
/// @param dSg 气饱和度(范围0-100)
|
|
|
|
|
|
/// @param dKrg (out) 气
|
|
|
|
|
|
/// @param dKrw (out) 水
|
|
|
|
|
|
bool calKrRstOf(double dSg, double& dKrg, double& dKrw);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
void init();
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
|
void initUI_MainLayout();
|
|
|
|
|
|
void initUI_Tops();
|
|
|
|
|
|
void initUI_StackedWx();
|
|
|
|
|
|
void initUI_Bottoms();
|
|
|
|
|
|
|
|
|
|
|
|
// 具体的内容填充
|
|
|
|
|
|
void initStatckedWxs();
|
|
|
|
|
|
void makesureSubWxOf(QString sName);
|
|
|
|
|
|
iWxDiffusionBase* createSubHeader(); //Header
|
|
|
|
|
|
iWxDiffusionBase* createDiffusionSub(QString sName); //油气水
|
|
|
|
|
|
|
|
|
|
|
|
// 该Action是否必须执行
|
|
|
|
|
|
bool isActionMust(QString sAction, bool bApplyMode);
|
|
|
|
|
|
|
|
|
|
|
|
// 刷新
|
|
|
|
|
|
void refresh();
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
void runAction(QString sAction);
|
|
|
|
|
|
bool importOrExport(QString sAction);
|
|
|
|
|
|
bool saveDiffusion();
|
|
|
|
|
|
bool loadDiffusion();
|
|
|
|
|
|
|
|
|
|
|
|
void refreshActionStates();
|
|
|
|
|
|
|
|
|
|
|
|
// 是否包含相态
|
|
|
|
|
|
bool isPhaseIncluded(QString sPhase);
|
|
|
|
|
|
|
|
|
|
|
|
// 根据类型获取窗体
|
|
|
|
|
|
iWxDiffusionSub* getSubWxBy(DiffusionSubOption dso);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent*);
|
|
|
|
|
|
virtual void resizeEvent(QResizeEvent*);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 在导航模式下,点击下一步时,先判断本步是否正确
|
|
|
|
|
|
//virtual bool verifyCurInfos(QString& sLog);
|
|
|
|
|
|
|
|
|
|
|
|
// 在导航模式下,点击下一步时,先判断本步是否正确
|
|
|
|
|
|
virtual bool checkCurWxInputs();
|
|
|
|
|
|
|
|
|
|
|
|
// 在每次设定时,从上一步获取数值,并且刷新至本窗体
|
|
|
|
|
|
virtual bool getAndFreshByPrevWx();
|
|
|
|
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
|
|
|
|
|
|
// 与sigPrevWxValueOf对应
|
|
|
|
|
|
virtual void slotValueToNextWx(QStringList& listParas, QMap<QString, QVariant>& map);
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
void sigDiffusionResultsChanged(QMap<QString, double>& map);
|
|
|
|
|
|
void sigPseudoResults(VVecDouble& vvec);
|
|
|
|
|
|
void sigPseudoResults3(const VVecDouble&, const QMap<QString, iAlgPseuMethodTriInfo*>&, const QMap<QString, double>&);
|
|
|
|
|
|
void sigPseudoResultsC(const VVecDouble&, const QMap<QString, iAlgPseuMethodCompInfo*>&, const QMap<QString, double>&);
|
|
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
|
|
|
|
void slotBtnTriggered();
|
|
|
|
|
|
void slotBtnHelp();
|
|
|
|
|
|
void slotBtnApply();
|
|
|
|
|
|
void slotBtnOK();
|
|
|
|
|
|
void slotBtnCancel();
|
|
|
|
|
|
|
|
|
|
|
|
// 某项参数计算结果数据更改
|
|
|
|
|
|
//void slotParaRstDataChanged(QString sPara);
|
|
|
|
|
|
|
|
|
|
|
|
void slotActionByRibbon(QWidget* pCtrl,
|
|
|
|
|
|
iRibbonXmlCmd* pInfo,
|
|
|
|
|
|
QVariant o);
|
|
|
|
|
|
void slotRibbonTabActivated(iRibbonXmlTab* pTab);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 响应:当Heade中选项发生改变时
|
|
|
|
|
|
void slotHeaderOptionChanged(QStringList& list);
|
|
|
|
|
|
|
|
|
|
|
|
// 当前面窗体参数改变时,本窗体响应
|
|
|
|
|
|
virtual void slotParasObtained(QMap<QString, QVariant>& map);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 返回当前的相态(主+次,其中次为组合,需要解析)
|
|
|
|
|
|
virtual void slotGetCurPhaseOptions(QMap<QString, QVariant>& map);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
// 当前勾选项
|
|
|
|
|
|
QStringList m_listDiffusions;
|
|
|
|
|
|
|
|
|
|
|
|
// Ribbon
|
|
|
|
|
|
iWxToolBar* m_pWxToolBar;
|
|
|
|
|
|
|
|
|
|
|
|
// 子窗体,与Cmd的ID一一对应
|
|
|
|
|
|
QMap<QString, iWxDiffusionBase*> m_mapSubWxs;
|
|
|
|
|
|
|
|
|
|
|
|
// 布局相关
|
|
|
|
|
|
QVBoxLayout* m_pMainLayout;
|
|
|
|
|
|
QStackedWidget* m_pStackedWx;
|
|
|
|
|
|
|
|
|
|
|
|
// 是否向导模式
|
|
|
|
|
|
bool m_bWizardMode;
|
|
|
|
|
|
|
|
|
|
|
|
// 相态选择(从前面传递过来)
|
|
|
|
|
|
// map["MainOption"] = (int)opMain;
|
|
|
|
|
|
// map["SubOption"] = (int)fluidType;
|
|
|
|
|
|
QMap<QString, QVariant> m_mapPhaseInfos;
|
|
|
|
|
|
};
|