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/mTool/mToolPseu/iWxPseuMain.h

213 lines
5.5 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 "mAlgDefines.h"
#include "iWxPseuBase.h"
#include "mToolPseu_global.h"
class iWxToolBar;
class iRibbonXmlCmd;
class iRibbonXmlTab;
class TreeWxConfig;
class iPseu3Wrapper;
class iPseuCWrapper;
class iAlgPseuMethodTriInfo;
class iAlgPseuMethodCompInfo;
class iWxPseuBase;
class iWxPseuHeader;
class iWxPseuSub;
class M_TOOL_PSEU_EXPORT iWxPseuMain : public iWxPseuBase
{
Q_OBJECT
public:
iWxPseuMain(QWidget* parent = 0);
~iWxPseuMain();
// 是否向导模式
void setWizardMode(bool b);
// 初始化
virtual void initUI();
// 文件标识
virtual QString getFilePseuTag();
// 新增接口(与一个数据对象体进行绑定式关联)
virtual bool saveAsDataObj(ZxDataObject*& pDataObj);
virtual bool loadFromDataObj(ZxDataObject*& pDataObj);
/// @brief 获取 拟压力页面中,拟压力结果表
/// @param vvec,返回数据长度为4分别为压力P/拟压力Ps/偏差因子Zg/黏度Miug
/// 压力,单位 Mpa
/// 拟压力,单位 Pa/sec
/// 偏差因子,单位 Pa/sec
/// 黏度,单位 Pa/sec
bool getPseuRstOf(VVecDouble& vvec);
// 拟压力模式
VVecDouble getPseuData();
iPseu3Wrapper* getPseuData3(); //三区
iPseuCWrapper* getPseuDataC();
// 返回名称标识
virtual QString getAwiName();
public:
// 类似clone
virtual void copyFrom(ZxUiBase* p);
private:
//
//void init();
//
// 初始化
void initUI_MainLayout();
void initUI_Tops();
void initUI_StackedWx();
void initUI_Bottoms();
// 具体的内容填充
void initStatckedWxs();
void makesureSubWxOf(QString sName);
iWxPseuHeader *createSubHeader(); //Header
iWxPseuSub* createPseuSub(QString sName);//三种拟压力
// 该Action是否必须执行
bool isActionMust(QString sAction, bool bApplyMode);
// 刷新
//void refresh();
//
void runAction(QString sAction);
bool importOrExport(QString sAction);
bool savePseu();
bool loadPseu();
void refreshActionStates();
// 是否包含相态
bool isPhaseIncluded(QString sPhase);
// 判断当前用的是哪一种拟压力
// 注意:有些常规、然后三区、然后组分
// 只有当结果数据有了,才是正确的
iWxPseuSub* getActionedPseuSub();
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);
public:
void cachePseudoResults(VVecDouble& vvec);
void cachePseudoResults3(const VVecDouble&, \
const QMap<QString, iAlgPseuMethodTriInfo*>&, \
const QMap<QString, double>&);
void cachePseudoResultsC(const VVecDouble&, \
const QMap<QString, iAlgPseuMethodCompInfo*>&, \
const QMap<QString, double>&);
signals:
void sigPseuResultsChanged(VVecVariant& vvec);
// 获取某个参数的PVT数据比如Zg
// vvec为两列
// vvec[0]: p1 Zg1
// vvec[1]: p2 Zg2
// vvec[2]: p3 Zg3
void sigGetPvtDataOf(QString sPara, VVecVariant& vvec);
private slots:
void slotBtnTriggered();
void slotBtnHelp();
void slotBtnApply();
void slotBtnOK();
void slotBtnCancel();
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);
// 返回某个参数的PVT数据比如Zg
// vvec为两列
// vvec[0]: p1 Zg1
// vvec[1]: p2 Zg2
// vvec[2]: p3 Zg3virtual
void slotGetPvtDataOf(QString sPara,VVecVariant& vvec);
private:
// 当前勾选项
QStringList m_listPseus;
// Ribbon
iWxToolBar* m_pWxToolBar;
// 子窗体与Cmd的ID一一对应
QMap<QString, iWxPseuBase*> m_mapSubWxs;
// 布局相关
QVBoxLayout* m_pMainLayout;
QStackedWidget* m_pStackedWx;
// 是否向导模式
bool m_bWizardMode;
// 流体
PvtFluidType m_oPft;
// 相态选择(从前面传递过来)
// map["MainOption"] = (int)opMain;
// map["SubOption"] = (int)fluidType;
QMap<QString, QVariant> m_mapPhaseInfos;
// //Pseudo结果四列
// VecDouble vecP = vvec[0]
// VecDouble vecPs = vvec[1]
// VecDouble vecZg = vvec[2]
// VecDouble vecMug = vvec[3]
VVecDouble m_vvecPseuData;//原先VecPointF
iPseu3Wrapper* m_pPseu3Wrapper; //对于三区,采用数据体
iPseuCWrapper* m_pPseuCWrapper;
};