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/mGuiJob/iWxModelOption.h.bak

207 lines
6.1 KiB
C

#pragma once
#include "iWxBase.h"
#include "mGuiJob_global.h"
//class iModelDesc;
class ZxPlot;
class iWxModelSketch;
class iModelOption;
class iModelInfoBase;
class iGridLineUtils;
namespace Ui {
class iWxModelOption;
}
class M_GUI_JOB_EXPORT iWxModelOption : public iWxBase
{
Q_OBJECT
public:
explicit iWxModelOption(QWidget *parent = 0);
~iWxModelOption();
// 初始化
virtual void initUI();
// 切换模型时刷新
virtual void refreshBrothers(bool bfresh = true);
// 组织结果数据,注vec不进行clear由调用方自行clear
virtual bool organizeResults(QVector<iResultInfo>& vec, QString sType);
// 返回当前选中的
iModelOption* getOption();
// 示意图绘图(多幅,弹出对话框)
virtual void showSketchCharts();
// FitModel之后改变一些状态
void dealwithFitOption(iModelOption* p);
void changeListItem(QListWidget* pListWx, \
QString sItem, QString sKey, \
bool bSelectOnly = true);
void changeRowLineItem(iGridLineUtils* pLineUtils, \
QString sItem, QString sKey, \
bool bSelectOnly = true);
// 得到聚合物中启动低渗的按钮状态
bool getCbxStatePF();
protected:
// 新的listwidget展示模式
void initNovelListWxs();
QWidget* initNovelListWxOf(QString sType, QListWidget*& pListWx);
void fillNovelListWxOf(QListWidget* pListWx, QString sType);
void initFromLasts();
#ifdef _SCAN_OLD_CODES_
void initUI_TopSpecial(QVBoxLayout*& pLayout); //该函数暂时不启用,后续可能需要重启
void initUI_ModelListWxs();
void initUI_ModelGridLines(QVector<iModelInfoBase*>& vec, \
QVBoxLayout* pLayout, \
QString sType = "");
QVector<iModelInfoBase*> classifyModelInfos(QVector<iModelInfoBase*>& vec, \
QString sType);
#endif
// 填充List
void fillListWx(QListWidget* pListWx,
QString sType,
bool bConsiderSpecial = false,
bool bIsSpecial = false);
//考虑到Well也要做筛选这里单独写一个函数
void fillWelListWx(QListWidget* pListWx,
QString sType,
bool bConsiderSpecial = false,
bool bIsSpecial = false);
//由于WEl决定Res选项
void fillResListWx(QListWidget* pListWx,
QString sType,
bool bConsiderSpecial = false,
bool bIsSpecial = false);
// 如果是井切换
bool dealwithWellListWx();
// 界面数据到Option载体
virtual void freshUi2Option();
void _freshUiListWx2Option(QListWidget* pListWx, QString sKey);
void _freshUiCheckBox2Option(QCheckBox* pCbx, QString sKey);
// 最近选用
void freshUiByOpenRecents();
void fillRecentModels();
void refreshRecentModels(QString sModel);
void freshRecentItem2ListWxs(QString s);
public:
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
protected:
// 对于序列化父类的QListWidget处理已经不能满足要求故重载该函数
virtual bool _writeCtrl(ZxSerializer* ser, QWidget* p, QString& sTag);
virtual bool _readCtrl(ZxSerializer* ser, QWidget*& p, QString& sTag);
protected:
virtual void paintEvent(QPaintEvent *);
protected:
// 查找组下面的项(如果有)(井型+储层类型)
virtual bool findChildItemsOf(QListWidget* pListWx, \
QListWidgetItem* pItem, \
QVector<QListWidgetItem*>& vecChildItems, \
bool* ptrIsHidden = NULL);
void initContextMenu(QListWidget* pListWx, \
QListWidgetItem* pItem, \
bool bHidden);
// 切换状态
void changeItemState(QListWidgetItem* pItem, iModelInfoBase* pModelInfo);
// 折叠/展开
void expandOrCollapse(bool bExpand);
void expandOrCollapseAll(bool bExpand);
protected slots:
// 模型选择
virtual void slotModelOptionChanged(QString);
// 双击(井型+储层类型)
virtual void slotListWxItemDoubleClicked(QListWidgetItem* pItem);
virtual void slotListWxItemClicked(QListWidgetItem* pItem);
// 右键(井型+储层类型)
virtual void slotListWxCustomMenu(const QPoint& pos);
// 右键菜单
virtual void slotExpandGroup();
virtual void slotCollapseGroup();
virtual void slotExpandGroupAll();
virtual void slotCollapseGroupAll();
// 各自的状态设定,复选框选项
void slotCbxStateChangedLP();
void slotCbxStateChangedPF();
void slotCbxStateChangedSR();
// 筛选部分
void on_btnFilter_clicked();
void on_tbxFilter_textChanged(const QString &arg1);
// 最近选用
void on_listWxRecents_doubleClicked(const QModelIndex &index);
void on_cbxOpenRecents_clicked();
void on_sbRecentCounts_valueChanged(int arg1);
signals:
// 模型切换信号
void sigParasChangedEx(iModelOption* );
// 增加这个信号主要增加小信号的选择模式(目前小信号只比普通模式多一条线,增加信号,保证绘制时候出现)
void sigCbxStateChanged(bool bSmall);
// 聚合物PF
void sigCbxStatePfChanged(bool bCheck);
protected:
Ui::iWxModelOption *ui;
QListWidget* m_pListWxWel;
QListWidget* m_pListWxRes;
QListWidget* m_pListWxWbs;
QListWidget* m_pListWxBdy;
// 选择内容的载体
iModelOption* m_pOption;
// ListWidget Ctrls / CheckBox
QMap<QString, QWidget*> m_mapSubWxs;
// 示意图
iWxModelSketch* m_pWxSketch;
// iWxModelSketch* m_pWxTheory; //二者用的同一个窗体,暂未启用,后续考虑
// 临时变量,不涉及序列化
bool m_bRecentDbClick;
// 右键菜单
QMenu* m_pContextMenu;
// 临时,针对右键操作而设定的对象体
QListWidget* m_pTempListWx;
QListWidgetItem* m_pTempListWxItem;
};