|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "iWxPvtBase.h"
|
|
|
|
|
#include "mToolPvt_global.h"
|
|
|
|
|
|
|
|
|
|
class iWxRibbon;
|
|
|
|
|
class iRibbonXmlCmd;
|
|
|
|
|
class TreeWxConfig;
|
|
|
|
|
class iPseudo3Info;
|
|
|
|
|
class iPseudoCInfo;
|
|
|
|
|
class iWxPvtUtilItemPseudo;
|
|
|
|
|
class iWxPvtUtilItemPseudo3;
|
|
|
|
|
class iWxPvtUtilItemPseudoC;
|
|
|
|
|
class M_TOOL_PVT_EXPORT iWxPvtMain : public iWxPvtBase
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
iWxPvtMain(QWidget* parent = 0);
|
|
|
|
|
~iWxPvtMain();
|
|
|
|
|
|
|
|
|
|
/// @brief 设置PVT流体相态
|
|
|
|
|
/// @param listPhases所有相,英文标识
|
|
|
|
|
/// @param sBasePhase基准相/主相,英文标识
|
|
|
|
|
/// @note:规定:如果传入sBasePhase基准相/主相,则默认为解析,否则认为是数值
|
|
|
|
|
void setPhaseInfos(QStringList listPhases, \
|
|
|
|
|
QString sBasePhase = QString());
|
|
|
|
|
// 是否向导模式
|
|
|
|
|
void setWizardMode(bool b);
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
virtual void initUI();
|
|
|
|
|
|
|
|
|
|
virtual bool savePvt();
|
|
|
|
|
virtual bool loadPvt();
|
|
|
|
|
|
|
|
|
|
// 文件标识
|
|
|
|
|
virtual QString getFilePvtTag();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
void init();
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
void initUI_MainLayout();
|
|
|
|
|
void initUI_Tops();
|
|
|
|
|
void initUI_StackedWx();
|
|
|
|
|
void initUI_Bottoms();
|
|
|
|
|
|
|
|
|
|
// 具体的内容填充
|
|
|
|
|
void initStatckedWxs();
|
|
|
|
|
void createAndAppendSubWxByName(QString sName);
|
|
|
|
|
void calAndFreshPseu(bool bCreateIfFirst = true);
|
|
|
|
|
void calAndFreshPseu3(bool bCreateIfFirst = true);
|
|
|
|
|
void calAndFreshPseuC(bool bCreateIfFirst = true);
|
|
|
|
|
|
|
|
|
|
// 该Action是否必须执行
|
|
|
|
|
bool isActionMust(QString sAction, bool bApplyMode);
|
|
|
|
|
|
|
|
|
|
// 刷新
|
|
|
|
|
void refresh();
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
void runAction(QString sAction);
|
|
|
|
|
void refreshActionStates();
|
|
|
|
|
|
|
|
|
|
// 是否解析模式
|
|
|
|
|
bool isAnalMode();
|
|
|
|
|
// 是否包含相态
|
|
|
|
|
bool isPhaseIncluded(QString sPhase);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent*);
|
|
|
|
|
virtual void resizeEvent(QResizeEvent*);
|
|
|
|
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
void sigPvtResultsChanged(QMap<QString, double>& map);
|
|
|
|
|
void sigPseudoResults(VVecDouble& vvec);
|
|
|
|
|
void sigPseudoResults3(const VVecDouble&, const QMap<QString, iPseudo3Info*>&, const QMap<QString, double>&);
|
|
|
|
|
void sigPseudoResultsC(const VVecDouble&, const QMap<QString, iPseudoCInfo*>&, 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);
|
|
|
|
|
|
|
|
|
|
/// @brief 响应:当Heade中流体选项发生改变时
|
|
|
|
|
/// @param nMain 大类,常规/特殊/状态方程
|
|
|
|
|
/// @param vecSubs 子类,油/气/水/凝析
|
|
|
|
|
void slotHeaderOptionFluidChanged(int nMain, VecInt& vecSubs);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
// 规定:如果m_sBasePhase非空,则默认为解析,否则认为是数值
|
|
|
|
|
// 对于解析:区分是否主相
|
|
|
|
|
QString m_sBasePhase;
|
|
|
|
|
|
|
|
|
|
// 对于解析:包括哪些相
|
|
|
|
|
// 对于数值:包括哪些相
|
|
|
|
|
QStringList m_listPhases;
|
|
|
|
|
|
|
|
|
|
// Ribbon
|
|
|
|
|
iWxRibbon* m_pRibbon;
|
|
|
|
|
|
|
|
|
|
// 子窗体,与Cmd的ID一一对应
|
|
|
|
|
QMap<QString, iWxPvtBase*> m_mapSubWxs;
|
|
|
|
|
|
|
|
|
|
// 布局相关
|
|
|
|
|
QVBoxLayout* m_pMainLayout;
|
|
|
|
|
QStackedWidget* m_pStackedWx;
|
|
|
|
|
|
|
|
|
|
// 是否向导模式
|
|
|
|
|
bool m_bWizardMode;
|
|
|
|
|
};
|