131 lines
3.6 KiB
C++
131 lines
3.6 KiB
C++
#ifndef CHART_H
|
|
#define CHART_H
|
|
|
|
#include <QDomElement>
|
|
|
|
#include "chart/widget_chart.h"
|
|
|
|
#include "gui_global.h"
|
|
|
|
#include "gtl_gui_chart_axis_x.h"
|
|
#include "gtl_gui_chart_axis_y.h"
|
|
#include "gtl_gui_chart_series.h"
|
|
|
|
#include "core/gtl_analog_data.h"
|
|
|
|
#include "gtl_gui_chart_marker.h"
|
|
#include "gtl_gui_chart_single_markers.h"
|
|
|
|
#include "gtl_gui_chart_markers.h"
|
|
|
|
namespace gtl
|
|
{
|
|
namespace gui
|
|
{
|
|
class GTL_GUI_EXPORT chart : public ::chart::widget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
chart(QWidget* parent = NULL, chart_axis_x *axis_x = NULL, chart_axis_y *axis_y = NULL);
|
|
virtual ~chart();
|
|
|
|
bool is_axis_y_multi() const;
|
|
bool is_updating() const;
|
|
bool is_cyclic() const;
|
|
|
|
chart_markers* chart_markers_model() const;
|
|
|
|
virtual void save(QDomElement& root_element);
|
|
virtual void load(const QDomElement& root_element);
|
|
|
|
bool is_multi_y() const;
|
|
|
|
void set_background(QColor color);
|
|
|
|
chart_single_markers* single_markers() const;
|
|
void dragEnterEvent(QDragEnterEvent *event) override;
|
|
|
|
private:
|
|
bool _is_multi_y;
|
|
|
|
QPoint _mouse_pos_press;
|
|
chart_marker* _marker_popup;
|
|
|
|
protected:
|
|
::chart::series::series* _marker_series;
|
|
chart_markers* _markers;
|
|
chart_single_markers* _single_markers;
|
|
QPoint _mouse_pos_release;
|
|
|
|
private:
|
|
void set_axes_y();
|
|
void mousePressEvent(QMouseEvent *event);
|
|
void mouseReleaseEvent(QMouseEvent *event);
|
|
void mouseDoubleClickEvent(QMouseEvent *event);
|
|
void mouseMoveEvent(QMouseEvent *event);
|
|
|
|
protected:
|
|
virtual chart_axis_y* create_axis_y() const;
|
|
|
|
|
|
private:
|
|
bool _is_updating;
|
|
bool _is_cyclic;
|
|
|
|
protected:
|
|
QMenu *_menu;
|
|
QMenu* _markers_menu;
|
|
|
|
QAction* _marker_action_add;
|
|
QAction* _marker_action_remove;
|
|
QAction* _marker_action_clear;
|
|
QAction* _set_theme_action;
|
|
|
|
std::map<gtl::data_model_node*, std::list<chart_series*>> _devices;
|
|
|
|
|
|
protected:
|
|
virtual chart_series* create_series(gtl::analog_data* ai) = 0;
|
|
virtual void contextMenuEvent(QContextMenuEvent *event) override;
|
|
|
|
void add_series(chart_series *series);
|
|
void remove_series(chart_series *series);
|
|
void remove_series();
|
|
|
|
signals:
|
|
void updating_changed(bool);
|
|
void cyclic_changed(bool);
|
|
void axis_y_mode_changed(bool);
|
|
|
|
public slots:
|
|
virtual void add_ad(gtl::analog_data* ad);
|
|
virtual void remove_ad(gtl::analog_data* ad);
|
|
|
|
void set_updating(bool value);
|
|
void set_cyclic(bool value);
|
|
|
|
void set_axis_y_mode(bool is_multi_y);
|
|
|
|
|
|
private slots:
|
|
void add_marker();
|
|
void delete_marker();
|
|
void clear_markers();
|
|
void deleting_ad();
|
|
void get_axis_series(QList<chart_series*> &series);
|
|
void set_theme(bool);
|
|
|
|
protected slots:
|
|
virtual void device_recieved_data();
|
|
void set_bounds_x();
|
|
void get_neares_series_x(qreal &x, chart_line::pos_behaviors);
|
|
void get_series_data(qreal x, bool is_widget_pos, QVariantList &data);
|
|
void get_series_values(qreal x_min, qreal x_max, int series_idx, QVariantList &data);
|
|
void remove_marker();
|
|
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif // CHART_H
|