test_sdk/gui/gtl_gui_spec_chart.h

99 lines
2.7 KiB
C
Raw Permalink Normal View History

#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