|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iSubWnd.h"
|
|
|
|
|
|
#include "mSubWndAna_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
class iGuiPlot;
|
|
|
|
|
|
class iGuiPlotEx;
|
|
|
|
|
|
class iWxOptionResCompare;
|
|
|
|
|
|
class ZxRstUtils;
|
|
|
|
|
|
class iSubWndFitting;
|
|
|
|
|
|
class iWxResult;
|
|
|
|
|
|
class iWxBase;
|
|
|
|
|
|
class iResultInfo;
|
|
|
|
|
|
class ZxMdiArea;
|
|
|
|
|
|
class ZxRstUtils;
|
|
|
|
|
|
class iDockBaseWx;
|
|
|
|
|
|
class iWxResCpOption;
|
|
|
|
|
|
|
|
|
|
|
|
class M_SUB_WND_ANA_EXPORT iSubWndResCompare : public iSubWnd
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
explicit iSubWndResCompare(QWidget *parent = 0, QString sExt = "");
|
|
|
|
|
|
~iSubWndResCompare();
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化入口
|
|
|
|
|
|
virtual void initUI();
|
|
|
|
|
|
|
|
|
|
|
|
// 配置窗体
|
|
|
|
|
|
virtual void configWnd(QString sPrevInfo);
|
|
|
|
|
|
|
|
|
|
|
|
// 对比选项OK,触发对比视图刷新
|
|
|
|
|
|
void runRstCpBy(QVector<IxSerDes*>& vecCpUtils, \
|
|
|
|
|
|
QVector<int>& vecContents, \
|
|
|
|
|
|
bool bSegSame, \
|
|
|
|
|
|
bool bSoleGridMode);
|
|
|
|
|
|
|
|
|
|
|
|
// 追加/删除
|
|
|
|
|
|
bool runRstCpAddBy(QVector<IxSerDes*>& vec);
|
|
|
|
|
|
bool runRstCpRemoveBy(QVector<IxSerDes*>& vec);
|
|
|
|
|
|
|
|
|
|
|
|
// 刷新对比结果视窗
|
|
|
|
|
|
void dealwithCps();
|
|
|
|
|
|
|
|
|
|
|
|
// 处理浮动窗口
|
|
|
|
|
|
void dealCpOptions();
|
|
|
|
|
|
void dealCpOptions_add(ZxRstUtils* pRst);
|
|
|
|
|
|
|
|
|
|
|
|
// 布局调整
|
|
|
|
|
|
virtual void layoutSubWnds(WndLayoutMode oWlm);
|
|
|
|
|
|
|
|
|
|
|
|
// 对于MdiArea中的窗体进行重新布局
|
|
|
|
|
|
void _layoutSubWnds();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化UI
|
|
|
|
|
|
void initMdi();
|
|
|
|
|
|
virtual void initUiDockPtys();
|
|
|
|
|
|
virtual void initUiDockWxs();
|
|
|
|
|
|
|
|
|
|
|
|
// 对比窗体创建
|
|
|
|
|
|
void initSubWxs();
|
|
|
|
|
|
QWidget* createSubWxOf(ContentCpType& o);
|
|
|
|
|
|
QWidget* createSubWxOf_Chart(ContentCpType& o);
|
|
|
|
|
|
QWidget* createSubWxOf_MP(ContentCpType& o);
|
|
|
|
|
|
QWidget* createSubWxOf_PF(ContentCpType& o);
|
|
|
|
|
|
QWidget* createSubWxOf_DataInput(ContentCpType& o);
|
|
|
|
|
|
|
|
|
|
|
|
// 执行命令:通常来自Ribbon
|
|
|
|
|
|
virtual bool runCmdBy(QString sName, QString sID);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 命令是否Enabled的状态判断,通常来自Ribbon
|
|
|
|
|
|
/// @param b (out),true:Enabled false:disabled
|
|
|
|
|
|
/// @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);
|
|
|
|
|
|
|
|
|
|
|
|
// 绘图部分处理
|
|
|
|
|
|
void dealPlots();
|
|
|
|
|
|
void dealPlots_Remove(ContentCpType o, iGuiPlot*& pWxPlot);
|
|
|
|
|
|
void dealPlots_Add(ContentCpType o, iGuiPlot*& pWxPlot);
|
|
|
|
|
|
|
|
|
|
|
|
// 解析
|
|
|
|
|
|
bool parseRst2Plot(ContentCpType o,
|
|
|
|
|
|
ZxRstUtils* pRstUtils,
|
|
|
|
|
|
iGuiPlot *pWxPlot,
|
|
|
|
|
|
int nClrIndex);
|
|
|
|
|
|
bool parseSubWnd2Plot(ContentCpType o,
|
|
|
|
|
|
iSubWndFitting* pSubWnd,
|
|
|
|
|
|
iGuiPlot *pWxPlot,
|
|
|
|
|
|
int nClrIndex);
|
|
|
|
|
|
bool orgaRstName(QString& s,
|
|
|
|
|
|
QString& sGroup,
|
|
|
|
|
|
ZxRstUtils* pRstUtils);
|
|
|
|
|
|
bool orgaSubWndName(QString& s,
|
|
|
|
|
|
QString& sGroup,
|
|
|
|
|
|
iSubWndFitting* pSubWnd);
|
|
|
|
|
|
void addCurve2Plot(ContentCpType o,
|
|
|
|
|
|
QVector<QPointF>& vec,
|
|
|
|
|
|
iGuiPlot* pWxPlot,
|
|
|
|
|
|
QString sCurveName,
|
|
|
|
|
|
int nClrIndex);
|
|
|
|
|
|
|
|
|
|
|
|
// 结果表格部分
|
|
|
|
|
|
bool dealResults(QMap<ContentCpType, QWidget*>& mapWxs);
|
|
|
|
|
|
bool organizeResults_MP(QStringList& listTags, \
|
|
|
|
|
|
QVector <QVector<iResultInfo> >& vvecInfosM, \
|
|
|
|
|
|
QVector <QVector<iResultInfo> >& vvecInfosP);
|
|
|
|
|
|
bool organizeResults_Chart(QMap<ContentCpType, QWidget*>& mapWxs, \
|
|
|
|
|
|
QVector <QVector<iResultInfo> >& vvecInfosC);
|
|
|
|
|
|
QString orgaResultTitle();
|
|
|
|
|
|
|
|
|
|
|
|
// 成果解析部分
|
|
|
|
|
|
bool parseRsts2ResultInfo(ZxRstUtils* pRstUtils,
|
|
|
|
|
|
QVector<iResultInfo>*& pVecInfosM,
|
|
|
|
|
|
QVector<iResultInfo>*& pVecInfosP);
|
|
|
|
|
|
bool parseSubWnd2ResultInfo(iSubWndFitting* pSubWnd,
|
|
|
|
|
|
QVector<iResultInfo>*& pVecInfosM,
|
|
|
|
|
|
QVector<iResultInfo>*& pVecInfosP);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
|
|
|
|
|
|
// MdiSize
|
|
|
|
|
|
void slotMdiSizeChanged();
|
|
|
|
|
|
|
|
|
|
|
|
// 在布局前对窗体顺序进行调整
|
|
|
|
|
|
void slotAdjustMdiAreaWnds(QList<QMdiSubWindow*>& listSubWnds);
|
|
|
|
|
|
|
|
|
|
|
|
// 浮动窗口选项改变
|
|
|
|
|
|
// 单个的选择状态改变
|
|
|
|
|
|
void slotCpItemChanged(QString s, IxSerDes* pRst, bool bSel);
|
|
|
|
|
|
// 整体改变
|
|
|
|
|
|
void slotCpItemsChanged(QMap<QString, IxSerDes*>& map);
|
|
|
|
|
|
// 透明度
|
|
|
|
|
|
void slotWndOpacityChanged(double d);
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
ZxMdiArea* m_pMdiArea;
|
|
|
|
|
|
|
|
|
|
|
|
// 浮动
|
|
|
|
|
|
iDockBaseWx* m_pWxDockOption;
|
|
|
|
|
|
iWxResCpOption* m_pWxResCpOption;
|
|
|
|
|
|
|
|
|
|
|
|
// 当前参与对比的对象,可能是SubWnd,也可能是ZxRstUtils
|
|
|
|
|
|
QVector<IxSerDes*> m_vecCpRstFroms;
|
|
|
|
|
|
// Plot是否加载的标识
|
|
|
|
|
|
QMap<IxSerDes*, bool> m_mapLoadFlags;
|
|
|
|
|
|
// 当前参与对比的内容
|
|
|
|
|
|
QVector<ContentCpType> m_vecCpTypes;
|
|
|
|
|
|
|
|
|
|
|
|
// 临时
|
|
|
|
|
|
QMap<ContentCpType, QWidget*> m_mapWxs;
|
|
|
|
|
|
|
|
|
|
|
|
// 流动段是否一致
|
|
|
|
|
|
bool m_bSegSame;
|
|
|
|
|
|
// 是否单一表格模式
|
|
|
|
|
|
bool m_bSoleGridMode;
|
|
|
|
|
|
|
|
|
|
|
|
};
|