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/nmNum/nmSubWnd/nmSubWndGrid.h

69 lines
2.5 KiB
C

#pragma once
#include "iSubWndBaseFit.h"
#include "nmSubWnd_global.h"
#include <QPointer>
class nmWxGridVTKContainerWidget;
class nmDataAnalyzeManager;
class nmCalculationPebiGridTask;
class QTimer;
class NM_SUB_WND_EXPORT nmSubWndGrid : public iSubWndBaseFit {
Q_OBJECT
public:
/**
* @brief
* @param bGeneratePebiGrid true Map
* @param pDataManager
*/
explicit nmSubWndGrid(QWidget *parent = 0, QString sExt = "",
double pebiGridControl = 150.0,
bool bGeneratePebiGrid = true,
nmDataAnalyzeManager* pDataManager = nullptr);
~nmSubWndGrid();
// 配置窗体
virtual void configWnd(QString sPrevInfo);
// 初始化UI
virtual void initUI();
virtual QWidget* initUiMainWx();
// 成果保存加载
virtual bool loadRsts();
virtual bool saveRsts();
virtual bool onConfirmClosing();
public slots:
/** @brief 合并连续数据变化请求,并启动本窗口的防抖计时。 */
void updateGrid();
/** @brief 防抖结束后启动或排队一次后台 PEBI 网格任务。 */
void onDebounceTimeout();
/** @brief 网格任务完成后刷新本窗口 VTK 视图。 */
void onPebiGridGenerated(bool success);
/** @brief 回收完成的任务;运行期间有新请求时补做最后一次重建。 */
void onPebiGridTaskFinished();
public:
// 执行命令通常来自Ribbon
virtual bool runCmdBy(QString sName, QString sID);
// 生成PEBI网格
bool generatePebiGrid();
private:
QVBoxLayout* m_mainLayout; ///< 网格窗口主布局。
nmWxGridVTKContainerWidget* m_vtkWidget; ///< 显示所属分析网格的 VTK 控件。
QTimer* m_pDebounceTimer; ///< 本窗口独立防抖定时器,避免跨窗口刷新。
QPointer<nmDataAnalyzeManager> m_pDataManager; ///< 窗口所属数据管理器,销毁后自动置空。
QPointer<nmCalculationPebiGridTask> m_pGridTask; ///< 当前后台网格任务,完成后自动回收。
bool m_bGridUpdatePending; ///< 任务运行期间是否又收到网格更新请求。
// PEBI GridControl控制参数对应HX_NWTM_GRID_INPUT::GridControl
double m_dPebiGridControl;
bool m_bGeneratePebiGrid; ///< 是否根据当前 Map 几何重新生成 PEBI 网格。
};