|
|
#pragma once
|
|
|
|
|
|
#include "mModuleDefines.h"
|
|
|
#include "iDlgBase.h"
|
|
|
#include "iResultInfo.h"
|
|
|
#include "mToolPvt_global.h"
|
|
|
|
|
|
class iParaItemCtrl;
|
|
|
class ZxDataWell;
|
|
|
class ZxDataObject;
|
|
|
class M_TOOL_PVT_EXPORT iWxBase : public iDlgBase
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
explicit iWxBase(QWidget *parent = 0);
|
|
|
~iWxBase();
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 根据测试类型更改UI(比如多层、干扰等)
|
|
|
virtual void adjustUiByTestType(PvtTestType ptt);
|
|
|
|
|
|
// 初始化
|
|
|
virtual void initUI();
|
|
|
virtual void setDataWell(ZxDataWell* p);
|
|
|
|
|
|
virtual QVector<iParaItemCtrl*>* getVecParaCtrls();
|
|
|
|
|
|
// 组织结果数据,注:vec不进行clear,由调用方自行clear
|
|
|
virtual bool organizeResults(QVector<iResultInfo>& vec, QString sType);
|
|
|
virtual bool organizeResultsEx(QStringList& listTags,
|
|
|
QStringList& listValues,
|
|
|
QString sType,
|
|
|
bool bClear = false);
|
|
|
// 与序列化关联
|
|
|
virtual bool saveAsByteArr(QByteArray& v);
|
|
|
virtual bool loadFromByteArr(QByteArray& v);
|
|
|
|
|
|
// 新增接口(与一个数据对象体进行绑定式关联)
|
|
|
virtual bool saveAsDataObj(ZxDataObject*& pDataObj);
|
|
|
virtual bool loadFromDataObj(ZxDataObject*& pDataObj);
|
|
|
|
|
|
int getAwi() { return m_nAwi; }
|
|
|
virtual QString getAwiName() { return ""; }
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
// 建立某参数的Layout,考虑单位控件
|
|
|
virtual iParaItemCtrl* createParaCtrl(QString sPara,
|
|
|
bool bUnitEditable = true,
|
|
|
bool bShowScale = false,
|
|
|
bool bStrench = true,
|
|
|
VecInt* pVecStrenchRatios = nullptr,
|
|
|
int nSpacing = 4,
|
|
|
int nMarginL = 20,
|
|
|
int nMarginR = 20);
|
|
|
|
|
|
// 在pCtrl InitUI之前允许部分调整,如参数跟着模型走的调整
|
|
|
//virtual void adjustParaInfos(iParameter* pParameter);
|
|
|
|
|
|
// 从各个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 getAllParaValuesUnit(QMap<QString, QString>& map,
|
|
|
bool bOnlyFitted = false,
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
// 在导航模式下,点击下一步时,先判断本步是否正确
|
|
|
//virtual bool verifyCurInfos(QString& sLog) { return true; }
|
|
|
|
|
|
// 在导航模式下,点击下一步时,先判断本步是否正确
|
|
|
virtual bool checkCurWxInputs() { return true; }
|
|
|
|
|
|
// 在每次设定时,从上一步获取数值,并且刷新至本窗体
|
|
|
virtual bool getAndFreshByPrevWx() { return true; }
|
|
|
|
|
|
signals:
|
|
|
|
|
|
// 当参数改变时触发,通知后续窗体
|
|
|
void sigParasChanged(QMap<QString, QVariant>& map);
|
|
|
|
|
|
// 返回Anal标识
|
|
|
void sigGetAnalTag(QString& s);
|
|
|
|
|
|
// 返回指定Key的数值,方便逐级传递
|
|
|
void sigPrevWxValueOf(QStringList& listParas, QMap<QString, QVariant>& map);
|
|
|
|
|
|
// 触发存储/加载
|
|
|
void sigSaveToFile(int nAWI);
|
|
|
void sigLoadFromFile(int nAWI);
|
|
|
void sigHelp(int nAWI);
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
virtual void slotGetAnalTag(QString& s) { Q_UNUSED(s); }
|
|
|
// 当前面窗体参数改变时,本窗体响应
|
|
|
virtual void slotParasObtained(QMap<QString, QVariant>& map);
|
|
|
|
|
|
// 响应ParaCtrl数据的改变
|
|
|
virtual void slotParaCtrlValueChanged(QString sPara, QVariant o);
|
|
|
|
|
|
// 与sigPrevWxValueOf对应
|
|
|
virtual void slotValueToNextWx(QStringList& listParas, QMap<QString, QVariant>& map);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent *);
|
|
|
|
|
|
// 绘制Log
|
|
|
virtual void drawLogInfo(QPainter* painter);
|
|
|
|
|
|
// 从当前井获取该参数的数值
|
|
|
bool getValueFromCurWell(QString sPara, QVariant& o);
|
|
|
|
|
|
public:
|
|
|
|
|
|
/// @brief 根据PvtFluidType判断是否单相
|
|
|
/// @param nPft 是各种相态的组合
|
|
|
static bool isSinglePhase(int nPft);
|
|
|
|
|
|
/// @brief 根据PvtFluidType解析出来都有哪些相(单相)
|
|
|
/// @param nPft 是各种相态的组合
|
|
|
static VecInt parsePhaseTypes(int nPft);
|
|
|
|
|
|
void parseMapValue2Tbx(QMap<QString, QVariant>& map, QString sPara, \
|
|
|
QLineEdit* pTbx, QComboBox* pCbxBinding, \
|
|
|
bool bNumber = true, \
|
|
|
bool bIgnoreIfNotNull = true);
|
|
|
void cacheTbxValue2Map(QMap<QString, QVariant>& map, QString sPara, \
|
|
|
QLineEdit* pTbx, QComboBox* pCbxBinding, \
|
|
|
bool bNumber = true, \
|
|
|
bool bIgnoreIfNull = true);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 对于单位类的控件进行管理
|
|
|
QVector<iParaItemCtrl*> m_vecParaCtrls;
|
|
|
|
|
|
// 当前井
|
|
|
ZxDataWell* m_pDataWell;
|
|
|
|
|
|
// 默认的存储路径,外部传递过来
|
|
|
//QString m_sAnalTag;
|
|
|
|
|
|
int m_nAwi; //对于向导子窗体,设定的类型,不涉及序列化,只读,为了方便引用,采用了int类型,实际是枚举
|
|
|
|
|
|
PvtTestType m_oPtt; //当前的测试类型,涉及序列化
|
|
|
};
|