#ifndef GTL_GUI_SPEC_CHART_H #define GTL_GUI_SPEC_CHART_H #include "gtl_gui_chart.h" #include "spec/gtl_gui_spec_band_markers.h" #include "spec/gtl_gui_spec_harm_markers.h" #include "gui/gtl_gui_spec_series.h" #include "gui/gtl_gui_spec_meas_model.h" #include "gui_global.h" namespace gtl { namespace gui { class GTL_GUI_EXPORT spec_chart : public gtl::gui::chart { Q_OBJECT public: spec_chart(gtl::math::spec::types type, QWidget* parent = NULL); ~spec_chart(); qreal frequency(); qreal resolution(); int window(); int lines(); int average(); qreal overlap(); int unit(); virtual void save(QDomElement& root_element); virtual void load(const QDomElement& root_element); spec::band_markers* band_markers() const; spec::harm_markers* harm_markers() const; gtl::math::spec::types type() const; protected: virtual void add_instrument(const QPointF &pos) override; virtual void draw_instrument(const QPointF &pos) override; private: gtl::math::spec::types _type; qreal _frequency; qreal _resolution; int _window; int _lines; int _average; qreal _overlap; int _unit; spec_meas_model* _meas_model; int _meas_cnt; QAction* _band_marker_action_add; QAction* _harm_marker_action_add; spec::band_markers* _band_markers; spec::harm_markers* _harm_markers; signals: void frequency_changed(); void resolution_changed(); void window_changed(); void lines_changed(); void average_changed(); void overlap_changed(); void unit_changed(); public slots: void set_type(int value); void set_frequency(qreal value); void set_resolution(qreal value); void set_window(int value); void set_lines(int value); void set_average(int value); void set_overlap(qreal value); void set_unit(int value); void set_x_log(bool value); void set_measures(spec_meas_model* m); void handle_measures(SpecMeasParamsListPtr meas); gtl::gui::spgr::widget* create_spgr(QWidget *parent, gtl::data_model_node* node); private slots: void add_band_marker(); void add_harm_marker(); protected: virtual chart_series* create_series(gtl::analog_data* ai); }; } } #endif // GTL_GUI_SPEC_CHART_H