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.
nmWATI/Include/mGui/mGuiJob/iWxModelParameter.h

167 lines
5.0 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 "iWxBase.h"
//class iModelDesc;
class iParameter;
class ZxTableView;
class iModelOption;
class iBdyInfo;
class iGridRowItem;
class iGridRowUtils;
class M_GUI_JOB_EXPORT iWxModelParameter : public iWxBase
{
Q_OBJECT
public:
explicit iWxModelParameter(QWidget *parent = 0);
~iWxModelParameter();
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
// 初始化
virtual void initUI();
void initUI_HelpBox();
// 在pCtrl InitUI之前允许部分调整如参数跟着模型走的调整
// 包括:
// 1. 把原有的被特殊模型修改过的,重新矫正过来
// 2. 调整特殊模型
virtual void adjustParaInfos(iParameter* pParameter);
virtual void restoreParaInfos(iParameter* pParameter = NULL); //如果为空,则全部恢复
// 组织结果数据,注vec不进行clear由调用方自行clear
virtual bool organizeResults(QVector<iResultInfo>& vec, QString sType);
bool sortByShow(QVector<iResultInfo>& vec);
// 返回所有的跟模型相关的边界参数的类型,封闭或定压
// 封闭0
// 定压1
bool getBdyInfos(QMap<QString, int>& map);
// 从各个Wxm_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 getAllParaUnits(QMap<QString, QString>& map,
bool bOnlyFitted = false,
bool bClearMap = true);
// 模式设置
void setDnMode(bool b);
// 刷新
virtual void refreshUIs(QStringList& listParas);
protected:
virtual void paintEvent(QPaintEvent *);
signals:
//增加信号保证切换的时候,窗口中的参数显示与否的按钮初始化(即恢复到隐藏状态)
void sigWxImageInit();
void sigIsAddBt(bool IsAdd);
private slots:
void slotShowParam(bool bHide);
public :
// 当前面窗体参数改变时,本窗体响应
virtual void slotParasObtained(QMap<QString, QVariant>& map);
// 根据多相单相对右侧参数进行调整
void setToMpMode(bool bMultiPhase);
void freshParasByMap(QMap<QString, QVariant>& mapOldValues);
public slots:
virtual void slotParasObtainedEx(iModelOption* pOption);
// 响应ParaCtrl数据的改变
virtual void slotParaCtrlValueChanged(QString sPara, QVariant o);
// help msg
virtual void slotHelpMsg(QString& s);
// 外部控制
void slotOuterValidate(QString sPara, QVariant o, bool& bValid, bool& bSet);
/// @brief 响应属性页子参数列表改变,比如调用水平井段数编辑功能
/// @param sSegName: (in) 基准参数,为英文标识,如流动段数:"Nq"
/// @param vvec: (in & out) 子参数数据,
/// 注意key为英文如"NqX","NqL","NqQ"之类与xml配置文件严格对应
/// @param dWellLen: (in) 水平井长度
/// @param bModified: (out) 是否正确触发且vvec发生改变
void slotSegItemMore(const QString sSegName, \
QVector<QMap<QString, double> >& vvec, \
const double dWellLen, \
bool& bModified);
/// @brief 响应边界信息改变,比如修改平行边界,由上下改为左右
/// @param pItem: (in) 当前的GroupItem其实即是本类iGridRowGroupBdy
/// @param vvec: (in & out) 边界信息数据
/// @param bModified: (out) 是否正确触发且vvec发生改变
void slotBdyDetails(iGridRowItem* pItem, \
QVector< iBdyInfo* >& vvec, \
bool& bModified);
protected:
//virtual void makesureListParas(QStringList& listParas); //对显示名称进行调整
virtual void runParseOldVersion(QStringList& listParas, ZxSerializer* ser);
QStringList checkTypes(); //类别
// 部分没有在xml配置的参数
void appendParas_Inner(QStringList& listParas, \
iModelOption* pOption);
// 井储参数
void appendParas_Wbs(QStringList& listParas, \
QString sWbs);
// 边界参数
void appendParas_Bdy(QStringList& listParas, \
QString sBdy);
// 根据当前选中模型处理特殊参数
void findSpecialParas();
//设置参数隐藏
void setSpecialParasHide(bool &IsAdd);
protected:
// 布局器
QVBoxLayout* m_pMainLayout;
QStringList m_listParas;
iGridRowUtils* m_pGridItemUtils;
// 临时,不序列化
QStringList m_listParaTags;
// 临时
QString m_sSerie;
QString m_sWbs;
QString m_sWel;
QString m_sRes;
QString m_sBdy;
// 满足当前模型条件的特殊的Parameter
QVector<iParameter*> m_vecSpecialParas;
bool m_bDnMode;
bool m_bMultiPhase;
// Help
QTextEdit * m_pHelpBox;
};