|
|
#pragma once
|
|
|
|
|
|
#include "qglobal.h"
|
|
|
#if (QT_VERSION >= 0x050000)
|
|
|
#include <QtWebEngineWidgets/QtWebEngineWidgets>
|
|
|
#define QWebView QWebEngineView
|
|
|
#else
|
|
|
#include <QtWebKit/QWebView>
|
|
|
#endif
|
|
|
|
|
|
#include "mAlgDefines.h"
|
|
|
#include "iWxDiffusionBase.h"
|
|
|
#include "mToolDiffusion_global.h"
|
|
|
|
|
|
class ZxTableView;
|
|
|
class ZxTableModel;
|
|
|
|
|
|
class iGridRowUtils;
|
|
|
|
|
|
class ZxPtyDock;
|
|
|
class IxPtySource;
|
|
|
|
|
|
class ZxRenderItem;
|
|
|
class ZxObjCurve;
|
|
|
class iCurveDesc;
|
|
|
class iGuiPlot;
|
|
|
|
|
|
class iWxDiffusionHeader;
|
|
|
|
|
|
class iAlgDiffusionBase;
|
|
|
|
|
|
class M_TOOL_DIFFUSION_EXPORT iWxDiffusionSub : public iWxDiffusionBase
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit iWxDiffusionSub(QString sDiffusion, \
|
|
|
QWidget* parent /*= 0*/);
|
|
|
~iWxDiffusionSub();
|
|
|
|
|
|
// 设置关联
|
|
|
void setBindInfos(iWxDiffusionHeader* pSubHeader);
|
|
|
|
|
|
// 初始化
|
|
|
virtual void initUI();
|
|
|
|
|
|
// 导出导入
|
|
|
virtual bool importOrExport(bool bImport);
|
|
|
|
|
|
// 当主窗体相态发生改变时的处理(主+次,其中次为组合,需要解析)
|
|
|
virtual void freshOnPhaseChanged(QMap<QString, QVariant>& map);
|
|
|
void makesurePft();
|
|
|
|
|
|
/// @brief 获取 Diffusion页面中,某个参数的具体数值
|
|
|
/// @param sPara,参数,英文标识而且大小写敏感
|
|
|
/// @param d,返回的结果
|
|
|
/// @note 主要是左侧属性页上的各项的数据,参照xml定义进行读取
|
|
|
virtual bool getDiffParaOf(QString sPara, double& d);
|
|
|
|
|
|
/// @brief 获取 Diffusion页面中,计算结果,基本上就是右侧对应表格的数据
|
|
|
/// @param vvec,返回数据,即计算结果,与右侧表格对应
|
|
|
virtual bool getDiffRstOf(VVecDouble& vvec);
|
|
|
|
|
|
/// @brief 获取 Diffusion页面中,所有参数数值
|
|
|
/// @param dso,参数,代表是相渗还是压敏还是吸附
|
|
|
/// @param map,返回的结果。
|
|
|
/// @param bOnlyFitted,是否只考虑拟合类参数,本处不涉及
|
|
|
/// @param bClearMap,是否清空。
|
|
|
/// @note 主要是左侧属性页上的各项的数据,参照xml定义进行读取
|
|
|
virtual bool getDiffAllParaValues(QMap<QString, double>& map, \
|
|
|
bool bOnlyFitted = false, \
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
|
|
|
iAlgDiffusionBase* getAlg(bool bCreateIfNotExists = false);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 标识
|
|
|
virtual void configLabels();
|
|
|
virtual QStringList getTableTitles();
|
|
|
|
|
|
// 布局
|
|
|
virtual void initUI_Inputs();
|
|
|
virtual QWidget* initUI_Inputs_Up();
|
|
|
virtual void initUI_Inputs_Up_GridPty(QVBoxLayout*& pLayoutV);
|
|
|
virtual void initUI_Inputs_Up_Fuzzies(QVBoxLayout*& pLayoutV);
|
|
|
virtual QWidget* initUI_Inputs_Down();
|
|
|
virtual void initUI_Inputs_Down_TableView(QVBoxLayout*& pLayoutV);
|
|
|
|
|
|
virtual void initUI_Chart();
|
|
|
virtual void initUI_Chart_One(iGuiPlot* pWxPlot);
|
|
|
|
|
|
virtual void initUI_DockPty();
|
|
|
virtual void initUI_Outputs_TableView();
|
|
|
|
|
|
virtual void initUI_Others();
|
|
|
|
|
|
// 默认值
|
|
|
virtual void initDefault();
|
|
|
void fillTableViewWithDefault(ZxTableView* pTableView);
|
|
|
|
|
|
// 返回指定的绘图对象体
|
|
|
virtual iGuiPlot* getWxPlotOf(int n = 0);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void bindDockPty(IxPtySource* pPtyObj);
|
|
|
|
|
|
// 组织初始x数值
|
|
|
virtual VecDouble defaultInputs();
|
|
|
virtual double defaultScaleMax();
|
|
|
virtual double defaultScaleMin();
|
|
|
virtual int defaultInputCount();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 算法相关
|
|
|
virtual void resetGridPty();
|
|
|
|
|
|
virtual bool makesureAlg();
|
|
|
virtual bool configAlg();
|
|
|
|
|
|
// 输入表格
|
|
|
virtual void freshChartByTableInputsChange();
|
|
|
virtual bool makesureTableInputs(VVecDouble& vvec);
|
|
|
virtual void refreshTableAbouts(VVecDouble& vvec);
|
|
|
|
|
|
// 算法算法
|
|
|
virtual void freshChartByGridPtyChange();
|
|
|
|
|
|
// 结果图+表
|
|
|
virtual void refreshRstAbouts(VVecDouble& vvec);
|
|
|
virtual void refreshRstCharts(VVecDouble& vvec);
|
|
|
virtual void refreshRstTables(VVecDouble& vvec);
|
|
|
virtual void clearChart(iGuiPlot* pWxPlot, bool bClearAll = true); //false时,只清空曲线不清空点
|
|
|
|
|
|
// 调用算法
|
|
|
virtual bool calRstByGridPty(VVecDouble& vvec);
|
|
|
|
|
|
// 是否用户输入时更改相关界面布局
|
|
|
virtual void freshUiByTableInputs(bool bCustom);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent*);
|
|
|
virtual void resizeEvent(QResizeEvent*);
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 类似clone
|
|
|
virtual void copyFrom(ZxUiBase* p);
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
// 响应左侧GridPty数据的改变,注意:该函数为父类继承过来的函数,不能进行名称更改
|
|
|
virtual void slotParaCtrlValueChanged(QString sPara, QVariant o);
|
|
|
|
|
|
// 表格
|
|
|
void slotTableDataChanged(const QModelIndex&, const QModelIndex&);
|
|
|
void slotTableRowChanged(QModelIndexList listOlds, QModelIndexList listNews, QModelIndex index);
|
|
|
|
|
|
// 窗体构建及图窗口构建过程中涉及的信号
|
|
|
virtual void slotToolbarBuilt(QToolBar* pToolBar);
|
|
|
|
|
|
virtual void slotGraphItemPoliciesInstalled(ZxRenderItem*);
|
|
|
|
|
|
virtual void slotCustomInputClicked();
|
|
|
|
|
|
virtual void slotPtCountChanged();
|
|
|
|
|
|
// 图上选中了某一条曲线
|
|
|
// virtual void slotCurveSelected(ZxObjCurve* pCurve, bool bSelected);
|
|
|
|
|
|
signals:
|
|
|
|
|
|
// 从主窗体获取当前的相态(主+次,其中次为组合,需要解析)
|
|
|
void sigGetCurPhaseOptions(QMap<QString, QVariant>&);
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 从当前所有的信息中获取参数的值
|
|
|
virtual bool getParaValue(QString sPara,
|
|
|
double &dValue,
|
|
|
QString sUnitDest = "");
|
|
|
|
|
|
// 返回所有参数,Key为英文ID
|
|
|
virtual bool getAllParaValues(QMap<QString, double>& map,
|
|
|
bool bOnlyFitted = false,
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
// 获取结果
|
|
|
virtual bool getAllResults(QMap<QString, double>& mapResults);
|
|
|
|
|
|
// 获取类似Zg、Cg的页面的原始数据
|
|
|
virtual bool getRawDataOf(QString sPara, VecDouble& x, VecDouble& y);
|
|
|
virtual bool getRawDataOf(QString sPara, VVecVariant& vvec);
|
|
|
|
|
|
virtual bool saveDiffusion();
|
|
|
|
|
|
// 文件标识
|
|
|
virtual QString getFileDiffusionTag();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// FluidType,这是主类型
|
|
|
QString m_sDiffusion;
|
|
|
|
|
|
// SubHeader
|
|
|
iWxDiffusionHeader* m_pSubHeader;
|
|
|
|
|
|
// 布局(左侧)
|
|
|
QGroupBox* m_pWxInputs;
|
|
|
iGridRowUtils* m_pGridItemUtils;
|
|
|
ZxTableView* m_pTableViewInputs;
|
|
|
ZxTableModel* m_pTableModelInputs;
|
|
|
|
|
|
// 布局(中间)
|
|
|
iGuiPlot* m_pWxPlot;
|
|
|
|
|
|
// 布局(油藏)
|
|
|
ZxTableView* m_pTableViewOutputs;
|
|
|
ZxTableModel* m_pTableModelOutputs;
|
|
|
QTabWidget* m_pTabWx; //右侧显示区(多个)
|
|
|
|
|
|
QGroupBox* m_pGbxTop;
|
|
|
QGroupBox* m_pGbxBottom;
|
|
|
QSplitter* m_pSplitter;
|
|
|
QCheckBox* m_pCbxTableInputMode;
|
|
|
QLineEdit* m_pTbxPtCount;
|
|
|
|
|
|
// 左侧输入
|
|
|
QStringList m_listParas; //哪些参数,对应英文标识
|
|
|
|
|
|
// 属性框
|
|
|
ZxPtyDock* m_pDockPty;
|
|
|
QList<IxPtySource*> m_listProps;
|
|
|
|
|
|
// 坐标轴相关
|
|
|
QStringList m_listNames;
|
|
|
QStringList m_listUnits;
|
|
|
QString m_sTitle;
|
|
|
|
|
|
// 相态选择(从前面传递过来)
|
|
|
// map["MainOption"] = (int)opMain;
|
|
|
// map["SubOption"] = (int)fluidType;
|
|
|
QMap<QString, QVariant> m_mapPhaseInfos;
|
|
|
|
|
|
// 临时变量不涉及序列化
|
|
|
PvtFluidType m_oPft; //可以是单相,也可以是多相组合
|
|
|
|
|
|
// 调用的算法
|
|
|
iAlgDiffusionBase* m_pAlg;
|
|
|
|
|
|
// 参数列表(左侧)
|
|
|
QMap<QString, QVariant> m_mapParas;
|
|
|
};
|