|
|
#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;
|
|
|
};
|