#pragma once #include "iSubWnd.h" class ZxSegmentInfo; class iWxBase; class ZxPlot; class iDockBaseWx; class iAnalRun; class iModelOption; class ZxRstWnd; // 父类:拟合/分析 class M_SUB_WND_EXPORT iSubWndBaseAF : public iSubWnd { Q_OBJECT public: explicit iSubWndBaseAF(QWidget *parent = 0, QString sExt = ""); ~iSubWndBaseAF(); // 配置窗体 virtual void configWnd(QString sPrevInfo); virtual void setDataWell(ZxDataWell* p); // 序列化 virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); virtual void layoutSubWnds(WndLayoutMode oWlm); // 把所有AnalRun指针传递过来 void setAllAnalRuns(QVector* p); virtual void setAnalRun(iAnalRun* pAnalRun, bool bFuzzyPit = false); iAnalRun* getAnalRun(); // virtual void setSegmentInfo(ZxSegmentInfo* p); ZxSegmentInfo* getSegmentInfo(); /// @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); protected: //////////////////////////////////////////////////////////////// // loadRsts/saveRsts具体实现相关 // 这是窗体自身一些简单的内容,即onSerialize/onDeserialize函数中写的内容 // 对于SubWnd来讲,通常这些内容比较少 // 注:存入字段:DataInfo (pRstWnd->getDataInfo()) virtual bool saveRstBase(ZxRstWnd* pRstWnd);//该函数名称有待商榷,本身有 cache+save 功能 virtual bool loadRstBase(ZxRstWnd* pRstWnd); // 这是总的,包括Anal分析、Seg流动段、Plot图件等三部分 virtual bool saveRstInfos(ZxRstWnd* pRstWnd);//该函数名称有待商榷,本身有 cache+save 功能 virtual bool loadRstInfos(ZxRstWnd* pRstWnd); // 分析相关,目前只有Fitting实现,其它如需要,需要重载该函数 virtual bool saveRstAnalInfos(ZxRstWnd* pRstWnd); virtual bool loadRstAnalInfos(ZxRstWnd* pRstWnd); // 流动段相关,目前只有Fitting实现,其它如需要,需要重载该函数 virtual bool saveRstSegInfos(ZxRstWnd* pRstWnd); virtual bool loadRstSegInfos(ZxRstWnd* pRstWnd); // 图件相关 virtual bool saveRstPlotInfos(ZxRstWnd* pRstWnd); virtual bool loadRstPlotInfos(ZxRstWnd* pRstWnd); // End Of loadRsts/saveRsts具体实现相关 //////////////////////////////////////////////////////////////// protected: // 重新调整工具栏 virtual void reAdjustToolbar(QToolBar*); // 20210825去除无效,比如变井储HegeMan开始处总是有空值TheoryDeriv / TheorySource // 后续可以考虑是不是需要处理其它 TODO virtual bool adjustResultDataOf(QString sCurveTag, \ VecDouble& vecX, \ VecDouble& vecY, \ bool bCutoffNeeded = false); public slots: // 增加AnalRun选项 void slotToolbarBuilt(QToolBar*); protected: // 当前所有AnalRun,输入主窗口,从主窗口传入 QVector* m_pVecAnalRuns; iAnalRun* m_pAnalRun; ZxSegmentInfo* m_pSegInfo; // 临时,当前子窗体布局Mode WndLayoutMode m_oWlm; };