plotwidget.h
Go to the documentation of this file.
1 #ifndef DragableWidget_H
2 #define DragableWidget_H
3 
4 #include <map>
5 #include <deque>
6 #include <QObject>
7 #include <QTextEdit>
8 #include <QDomDocument>
9 #include <QMessageBox>
10 #include <QTime>
11 #include "plotmagnifier.h"
12 #include "plotzoomer.h"
13 #include "qwt_plot.h"
14 #include "qwt_plot_curve.h"
15 #include "qwt_plot_grid.h"
16 #include "qwt_symbol.h"
17 #include "qwt_legend.h"
18 #include "qwt_plot_rescaler.h"
19 #include "qwt_plot_panner.h"
20 #include "qwt_plot_legenditem.h"
21 #include "timeseries_qwt.h"
22 #include "customtracker.h"
25 #include "plotlegend.h"
26 
27 class PlotWidget : public QwtPlot
28 {
29  Q_OBJECT
30 
31 public:
32 
33  struct CurveInfo
34  {
35  std::string src_name;
38  };
39 
40  PlotWidget(PlotDataMapRef& datamap, QWidget* parent = nullptr);
41 
42  void setContextMenuEnabled(bool enabled);
43 
44  virtual ~PlotWidget() override;
45 
46  bool isEmpty() const;
47 
48  const std::list<CurveInfo> &curveList() const;
49 
50  std::list<CurveInfo> &curveList();
51 
52  CurveInfo* curveFromTitle(const QString &title);
53 
54  const CurveInfo* curveFromTitle(const QString &title) const;
55 
56  QDomElement xmlSaveState(QDomDocument& doc) const;
57 
58  bool xmlLoadState(QDomElement& element);
59 
60  Range getMaximumRangeX() const;
61 
62  Range getMaximumRangeY(Range range_X) const;
63 
64  void setZoomRectangle(QRectF rect, bool emit_signal);
65 
66  void reloadPlotData();
67 
68  bool isXYPlot() const;
69 
70  void changeBackgroundColor(QColor color);
71 
72  const PlotLegend* legend() const
73  {
74  return _legend;
75  }
76 
77  CurveInfo* addCurve(const std::string& name, QColor color = Qt::transparent);
78 
79  void setLegendSize(int size);
80 
81  bool isLegendVisible() const;
82 
83  void setLegendAlignment(Qt::Alignment alignment);
84 
85  void setZoomEnabled(bool enabled);
86 
87  bool isZoomEnabled() const;
88 
89  QRectF canvasBoundingRect() const;
90 
91  virtual void resizeEvent(QResizeEvent* ev) override;
92 
93  virtual void updateLayout() override;
94 
95  void setConstantRatioXY(bool active);
96 
98  {
99  return _mapped_data;
100  }
101 
102  double timeOffset() const
103  {
104  return _time_offset;
105  }
106 
108 
110  {
111  return _curve_style;
112  }
113 
114  std::map<QString, QColor> getCurveColors() const;
115 
116  void setCustomAxisLimits(Range range);
117 
118  Range customAxisLimit() const;
119 
120  void removeCurve(const QString& title);
121 
122 protected:
123  void dragEnterEvent(QDragEnterEvent* event) override;
124  void dropEvent(QDropEvent* event) override;
125  bool eventFilter(QObject* obj, QEvent* event) override;
126  void dragLeaveEvent(QDragLeaveEvent* event) override;
127 
128  bool canvasEventFilter(QEvent* event);
129 
130  QColor getColorHint(PlotData* data);
131 
132 
133 signals:
134  void swapWidgetsRequested(PlotWidget* source, PlotWidget* destination);
135  void rectChanged(PlotWidget* self, QRectF rect);
136  void undoableChange();
137  void trackerMoved(QPointF pos);
138  void curveListChanged();
139  void curvesDropped();
140  void legendSizeChanged(int new_size);
141  void splitHorizontal();
142  void splitVertical();
143 
144 public slots:
145 
146  void replot() override;
147 
148  void updateCurves();
149 
150  void onSourceDataRemoved(const std::string &src_name);
151 
152  void removeAllCurves();
153 
154  void on_panned(int dx, int dy);
155 
156  void zoomOut(bool emit_signal);
157 
158  void on_zoomOutHorizontal_triggered(bool emit_signal = true);
159 
160  void on_zoomOutVertical_triggered(bool emit_signal = true);
161 
162  void activateLegend(bool activate);
163 
164  void activateGrid(bool activate);
165 
167 
168  void enableTracker(bool enable);
169 
170  bool isTrackerEnabled() const;
171 
172  void setTrackerPosition(double abs_time);
173 
174  void on_changeTimeOffset(double offset);
175 
176  void on_changeDateTimeScale(bool enable);
177 
178  void on_changeCurveColor(const QString &curve_name, QColor new_color);
179 
180 private slots:
181 
182  //void on_changeToBuiltinTransforms(QString new_transform);
183 
184  void setModeXY(bool enable);
185 
186  void on_savePlotToFile();
187 
188  void on_copyToClipboard();
189 
191 
193 
194 private slots:
195 
196  void canvasContextMenuTriggered(const QPoint& pos);
197 
199 
200  void on_externallyResized(const QRectF& new_rect);
201 
202 private:
203  std::list<CurveInfo> _curve_list;
204 
206  QAction* _action_edit;
207  QAction* _action_formula;
210 
215  QAction* _action_copy;
216  QAction* _action_paste;
218 
223 
227 
229 
231  static int global_color_index;
232 
234 
235  struct DragInfo
236  {
237  enum
238  {
241  NEW_XY
242  } mode;
243  std::vector<QString> curves;
244  QObject* source;
245  };
246 
248 
249  CurveInfo* addCurveXY(std::string name_x, std::string name_y, QString curve_name = "");
250 
251  void buildActions();
252 
254 
256 
257  void setDefaultRangeX();
258 
259  QwtSeriesWrapper* createCurveXY(const PlotData* data_x, const PlotData* data_y);
260 
261  QwtSeriesWrapper* createTimeSeries(const QString& transform_ID, const PlotData* data);
262 
263  double _time_offset;
264 
265  bool _xy_mode;
266 
268 
270 
272 
274 
276 
278 
280 
281  void transformCustomCurves();
282  void updateMaximumZoomArea();
284  void overrideCursonMove();
285 };
286 
287 #endif
void setConstantRatioXY(bool active)
CurveTracker * _tracker
Definition: plotwidget.h:224
void on_savePlotToFile()
QwtPlotCurve::CurveStyle curveStyle() const
Definition: plotwidget.h:109
void on_panned(int dx, int dy)
Definition: plotwidget.cpp:760
void removeAllCurves()
Definition: plotwidget.cpp:743
QColor getColorHint(PlotData *data)
Definition: plotwidget.cpp:47
A plot item, that represents a series of points.
CurveInfo * addCurveXY(std::string name_x, std::string name_y, QString curve_name="")
Definition: plotwidget.cpp:429
void updateMaximumZoomArea()
Definition: plotwidget.cpp:989
void replot() override
void setLegendSize(int size)
QDomElement xmlSaveState(QDomDocument &doc) const
Definition: plotwidget.cpp:765
QAction * _action_removeAllCurves
Definition: plotwidget.h:205
PlotLegend * _legend
Definition: plotwidget.h:225
void rectChanged(PlotWidget *self, QRectF rect)
std::map< QString, SnippetData > SnippetsMap
DragInfo _dragging
Definition: plotwidget.h:247
void on_pasteAction_triggered()
std::map< QString, QColor > getCurveColors() const
void on_changeDateTimeScale(bool enable)
bool isXYPlot() const
PlotDataMapRef & _mapped_data
Definition: plotwidget.h:233
void on_externallyResized(const QRectF &new_rect)
void undoableChange()
bool isTrackerEnabled() const
std::list< CurveInfo > _curve_list
Definition: plotwidget.h:203
void legendSizeChanged(int new_size)
QRectF canvasBoundingRect() const
Definition: plotwidget.cpp:979
SnippetsMap _snippets
Definition: plotwidget.h:271
bool _use_date_time_scale
Definition: plotwidget.h:228
QwtPlotMarker * marker
Definition: plotwidget.h:37
int _color_index
Definition: plotwidget.h:230
QwtPlotPanner * _panner2
Definition: plotwidget.h:222
void swapWidgetsRequested(PlotWidget *source, PlotWidget *destination)
PlotMagnifier * _magnifier
Definition: plotwidget.h:220
PlotWidget(PlotDataMapRef &datamap, QWidget *parent=nullptr)
Definition: plotwidget.cpp:123
CurveInfo * curveFromTitle(const QString &title)
Definition: plotwidget.cpp:590
double _time_offset
Definition: plotwidget.h:263
bool isLegendVisible() const
void activateLegend(bool activate)
PlotZoomer * _zoomer
Definition: plotwidget.h:219
bool isEmpty() const
Definition: plotwidget.cpp:575
A 2-D plotting widget.
Definition: qwt_plot.h:75
QAction * _action_edit
Definition: plotwidget.h:206
QAction * _action_formula
Definition: plotwidget.h:207
void splitVertical()
void trackerMoved(QPointF pos)
void setModeXY(bool enable)
bool isZoomEnabled() const
void reloadPlotData()
QwtPlotPanner * _panner1
Definition: plotwidget.h:221
Range _custom_Y_limits
Definition: plotwidget.h:267
void updateCurves()
void zoomOut(bool emit_signal)
const PlotLegend * legend() const
Definition: plotwidget.h:72
void on_showPoints_triggered()
void curvesDropped()
QAction * _action_zoomOutVertically
Definition: plotwidget.h:213
QAction * _action_zoomOutMaximum
Definition: plotwidget.h:211
QAction * _action_copy
Definition: plotwidget.h:215
QRectF _max_zoom_rect
Definition: plotwidget.h:277
QwtSeriesWrapper * createCurveXY(const PlotData *data_x, const PlotData *data_y)
void dropEvent(QDropEvent *event) override
Definition: plotwidget.cpp:688
void overrideCursonMove()
QAction * _action_split_vertical
Definition: plotwidget.h:209
void setCustomAxisLimits(Range range)
A class which draws a coordinate grid.
Definition: qwt_plot_grid.h:33
bool _context_menu_enabled
Definition: plotwidget.h:279
bool canvasEventFilter(QEvent *event)
CurveInfo * addCurve(const std::string &name, QColor color=Qt::transparent)
Definition: plotwidget.cpp:369
const std::list< CurveInfo > & curveList() const
Definition: plotwidget.cpp:580
virtual void updateLayout() override
Adjust plot content to its current size.
std::string src_name
Definition: plotwidget.h:35
QAction * _action_image_to_clipboard
Definition: plotwidget.h:217
void configureTracker(CurveTracker::Parameter val)
void on_zoomOutVertical_triggered(bool emit_signal=true)
virtual void resizeEvent(QResizeEvent *ev) override
QwtPlotGrid * _grid
Definition: plotwidget.h:226
void rescaleEqualAxisScaling()
const char * name
void on_copyToClipboard()
void onSourceDataRemoved(const std::string &src_name)
Definition: plotwidget.cpp:544
void curveListChanged()
void removeCurve(const QString &title)
Definition: plotwidget.cpp:524
QwtPlotCurve::CurveStyle _curve_style
Definition: plotwidget.h:255
QwtPlotCurve * curve
Definition: plotwidget.h:36
bool xmlLoadState(QDomElement &element)
Definition: plotwidget.cpp:835
void changeBackgroundColor(QColor color)
void on_zoomOutHorizontal_triggered(bool emit_signal=true)
bool eventFilter(QObject *obj, QEvent *event) override
Event filter.
TransformSelector * _transform_select_dialog
Definition: plotwidget.h:269
Range customAxisLimit() const
void buildActions()
Definition: plotwidget.cpp:232
virtual ~PlotWidget() override
Definition: plotwidget.cpp:364
QwtText title() const
Definition: qwt_plot.cpp:348
bool _zoom_enabled
Definition: plotwidget.h:273
void splitHorizontal()
void setTrackerPosition(double abs_time)
double timeOffset() const
Definition: plotwidget.h:102
void setZoomEnabled(bool enabled)
QAction * _action_saveToFile
Definition: plotwidget.h:214
QwtPlotPanner provides panning of a plot canvas.
bool _keep_aspect_ratio
Definition: plotwidget.h:275
virtual bool event(QEvent *) QWT_OVERRIDE
Adds handling of layout requests.
Definition: qwt_plot.cpp:234
void on_changeTimeOffset(double offset)
std::enable_if_t< all< Args... >::value, enable_t > enable
Definition: sol.hpp:1726
void setLegendAlignment(Qt::Alignment alignment)
void setContextMenuEnabled(bool enabled)
Definition: plotwidget.cpp:227
Range getMaximumRangeY(Range range_X) const
std::vector< QString > curves
Definition: plotwidget.h:243
QAction * _action_paste
Definition: plotwidget.h:216
void setDefaultRangeX()
void on_copyAction_triggered()
QwtSeriesWrapper * createTimeSeries(const QString &transform_ID, const PlotData *data)
void transformCustomCurves()
bool _xy_mode
Definition: plotwidget.h:265
void setZoomRectangle(QRectF rect, bool emit_signal)
dictionary data
Definition: mqtt_test.py:22
void updateAvailableTransformers()
static int global_color_index
Definition: plotwidget.h:231
void activateGrid(bool activate)
PlotDataMapRef & datamap()
Definition: plotwidget.h:97
QAction * _action_zoomOutHorizontally
Definition: plotwidget.h:212
void enableTracker(bool enable)
Range getMaximumRangeX() const
void dragEnterEvent(QDragEnterEvent *event) override
Definition: plotwidget.cpp:636
QAction * _action_split_horizontal
Definition: plotwidget.h:208
void dragLeaveEvent(QDragLeaveEvent *event) override
Definition: plotwidget.cpp:682
void changeCurveStyle(QwtPlotCurve::CurveStyle style)
A class for drawing markers.
void canvasContextMenuTriggered(const QPoint &pos)
Definition: plotwidget.cpp:305
void on_changeCurveColor(const QString &curve_name, QColor new_color)


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:10