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/mGui/mSubWndAna/iSubWndAnalDn.h

187 lines
5.3 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 "iSubWndAnal.h"
#include "mSubWndAna_global.h"
class iWxModelOption;
class iWxModelParameter;
class iAlgModelBase;
class iParaManager;
class iWxWmDataPF;
class ZxTableModel;
class iWxTime;
class iWxSaveDnPF;
class iAlgFitBase;
class M_SUB_WND_ANA_EXPORT iSubWndAnalDn : public iSubWndAnal
{
Q_OBJECT
public:
explicit iSubWndAnalDn(QWidget *parent = 0, QString sExt = "");
~iSubWndAnalDn();
// 配置窗体
virtual void configWnd(QString sPrevInfo);
virtual void loadData(QString sWell = ""); //加载数据
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
// 保存加载
virtual bool loadRsts();
virtual bool saveRsts();
// 由子窗体创建RunOption
virtual iWxRunOptionStd* buildWxRunOption();
// 模型和参数窗口
virtual void showOrHideModels();
virtual void showOrHideParameters();
// 执行命令通常来自Ribbon
virtual bool runCmdBy(QString sName, QString sID);
/// @brief 命令是否Enabled的状态判断通常来自Ribbon
/// @param b (out)trueEnabled falsedisabled
/// @param sName (in),Cmd Name
/// @param nID (in),Cmd ID
/// @param bLicensed (in),当前是否有授权
/// @return 本窗体是否已经进行状态判断(即属于本窗体可执行的命令)
virtual bool checkCmdEnable(bool &b, \
QString sName, int nID, \
bool bLicensed);
// 在弹出对话框后判断是否试井设计,并进行相应处理
virtual void adjustByPossibleDn(iSubWndBaseFit* pWndFitting);
// TODO 该函数有待进一步优化
virtual bool buildAlgModel(iModelOption* pModelOption, \
bool bReset = true, \
bool bSetParas = true);
// 具体的创建算法载体
virtual void createAlgModel(ModelSeriesType o, AlgModelSrc ams, \
iModelOption* pModelOption);
/// @brief 收集多层相关的一些乱七八糟的信息,包括模型选项、边界类型、每条边的定压还是封闭等等。
/// @param map 收集的结果
/// @param bClearOlds 是否清空
/// @note 对于通用的,直接用标识,对于层内的添加层标识
bool collectFuzzyMLs(QMap<QString, QVariant>& map, \
bool bClearOlds = false);
// 对于流动段,在此处考虑模拟选中最后一个流动段
// 有判断条件的情况下TODO 20240819
virtual void simuHitLastSeg(); //模拟点击最后一个流动段
virtual void setAnalRun(iAnalRun* pAnalRun, bool bFuzzyPit = false);
signals:
protected:
// 初始化UI
virtual QWidget* initUiMainWx();
virtual void initUiDockWxs();
// 执行命令:通常来自图形右侧/左侧的工具栏
virtual bool runActionOf(QString sAction);
// 重新调整工具栏
virtual void reAdjustToolbar(QToolBar*);
// 刷新
void updatePlots();
// 切换方向后,刷新
void freshByRadioQP(bool bP2Q,
bool bByTableChange,
VVecDouble& vvec);
bool getCurveDescByName(QString s, iCurveDesc& o);
// 开始调用算法计算
bool runCalQP(bool bP2Q);
bool checkDataInputs(VecDouble &vecInputT,
VecDouble &vecInputV); //计算前的系列监测
bool checkOption();
bool checkAlgo();
bool checkParas();
bool checkTime();
bool dealwithResults(VecDouble &vecT,
VecDouble &vecV,
bool bP2Q); //结果处理
// 为西安等准备PVT相关需要添加则添加不需要则清除
bool fuzzyCmParaAbouts(QMap<QString, double>& mapParas/*, bool bAppend*/);
//设置时间步长
bool getTimeSteps(double &dMin,double &dMax);
// 算法类关联信号
virtual void buildAlgSignals();
// 是否正确支持的模型
virtual bool isModelSupported(iModelOption* p);
//设置刷新图
void freshCharts();
public slots:
// 调整主体布局
virtual void slotAdjustPlotPFUis(QSplitter* p);
// 调整左侧表格工具栏
virtual void slotAdjustLeftTableToolBar(QToolBar*&);
// 左侧表格数据改变(输入)
void slotWxTableDataPfChanged(VVecDouble& vvec);
//
void slotClickedQP();
void slotRunQP();
void slotTime();
void slotResultSave();
virtual void slotThreadFinished();
public:
virtual zxAlgThread* getSubThread(zxAlgThread* p);
protected:
QRadioButton* m_pRadioQ2P;
QRadioButton* m_pRadioP2Q;
QPushButton* m_pPbRunQP;
// 新加
iDockBaseWx* m_pWxDockModelOption; //模型选择
iDockBaseWx* m_pWxDockModelParameter; //模型参数
iWxModelOption* m_pWxModelOption; //
iWxModelParameter* m_pWxModelParameter;
iModelOption* m_pModelOption;
// 数据
QVector<iCurveDesc> m_vecCurveDesc;
iWxWmDataPF* m_pWxDataInput; //左侧表格
iWxWmDataPF* m_pWxDataOutputF;//结果表
iWxWmDataPF* m_pWxDataOutputP;
iDockBaseWx* m_pWxDockOutputF;
iDockBaseWx* m_pWxDockOutputP;
QString m_sInputGaugeCode; //输入部分数据Code如果有的话
iWxSaveDnPF* m_pWxSaveDnPF; //结果保存的选项
iWxTime* m_pWxTimeScales;
iAlgFitBase* m_pFit;
};