#ifndef PARTICLECOUNTPLOTVIEW_H #define PARTICLECOUNTPLOTVIEW_H #include #include #include #include "MeasureAnalysisView.h" #include "DataProcessWorkPool.h" class QDialog; class QMenu; class CustomQwtPlot; class QTableWidget; class QTableWidgetItem; class CustomQwtPlotXaxisSelector; class BatchEnergyScaleDialog; class FindPeaksResultDialog; class ParticleCountPlotView : public MeasureAnalysisView { Q_OBJECT public: ParticleCountPlotView(QWidget *parent = nullptr); virtual ~ParticleCountPlotView(); virtual void InitViewWorkspace(const QString& project_name) override final; virtual void SetAnalyzeDataFilename(const QMap& data_files_set); void updateView(const QMap& data_files_set); private: void setupMenu(); void setupPlot(); void setupPeakResultDlg(); void setupEnergyScaleDlg(); void loadDataFromFile(const QString &data_name, const QString& filename); void loadPeaksResultToTable(QTableWidget* peaks_result_table); void updatePlotPeakInfo(const QVariantMap& peak_infos); void onManualPeakRangeSelected(double minX, double maxX); QMap getSelectedRangeData(double minX, double maxX); private slots: void onAutoFindPeaksFinished(bool ok, const QString &project_name, const QVariant& data); private slots: void onActionCurveShowSetting(); void onActionFindPeaksResult(); void onActionAutoFindPeaks(); void onActionManualFindPeaks(); void onActionEnergyScale(); void onActionPlotConfigure(); signals: void applyEnergyScale(); private: QString _workspace; CustomQwtPlot* _plot = nullptr; QMenu* _menu = nullptr; QDialog* _curve_show_setting_dlg = nullptr; QMap _data_files_set_ptr; FindPeaksResultDialog* _find_peaks_result_dlg = nullptr; CustomQwtPlotXaxisSelector* _data_selector = nullptr; BatchEnergyScaleDialog* _batch_energy_scale_dlg = nullptr; double _x_max = 0.0f; double _y_max = 0.0f; }; #endif // PARTICLECOUNTPLOTVIEW_H