Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef RTABMAP_STATSTOOLBOX_H_
00029 #define RTABMAP_STATSTOOLBOX_H_
00030
00031 #include "rtabmap/gui/RtabmapGuiExp.h"
00032
00033 #include <QWidget>
00034 #include <QtCore/QMap>
00035
00036 class QToolButton;
00037 class QLabel;
00038 class QMenu;
00039 class QGridLayout;
00040 class QToolBox;
00041
00042 namespace rtabmap {
00043
00044 class RTABMAPGUI_EXP StatItem : public QWidget
00045 {
00046 Q_OBJECT;
00047
00048 public:
00049 StatItem(const QString & name, bool cacheOn, const std::vector<float> & x, const std::vector<float> & y, const QString & unit = QString(), const QMenu * menu = 0, QGridLayout * grid = 0, QWidget * parent = 0);
00050 virtual ~StatItem();
00051 void addValue(float y);
00052 void addValue(float x, float y);
00053 void setValues(const std::vector<float> & x, const std::vector<float> & y);
00054 QString value() const;
00055 std::vector<float> xValues() const {return _x;}
00056 std::vector<float> yValues() const {return _y;}
00057 void setCacheOn(bool on);
00058 void clearCache();
00059
00060 public Q_SLOTS:
00061 void updateMenu(const QMenu * menu);
00062
00063 Q_SIGNALS:
00064 void valueAdded(float);
00065 void valueAdded(float, float);
00066 void valuesChanged(const std::vector<float> &, const std::vector<float> &);
00067 void plotRequested(const StatItem *, const QString &);
00068
00069 private Q_SLOTS:
00070 void preparePlotRequest();
00071
00072 private:
00073 void setupUi(QGridLayout * grid);
00074
00075 private:
00076 QToolButton * _button;
00077 QLabel * _name;
00078 QLabel * _value;
00079 QLabel * _unit;
00080 QMenu * _menu;
00081
00082 bool _cacheOn;
00083 std::vector<float> _x;
00084 std::vector<float> _y;
00085 };
00086
00087
00088
00089
00090 class RTABMAPGUI_EXP StatsToolBox : public QWidget
00091 {
00092 Q_OBJECT;
00093
00094 public:
00095 StatsToolBox(QWidget * parent);
00096 virtual ~StatsToolBox();
00097
00098 void getFiguresSetup(QList<int> & curvesPerFigure, QStringList & curveNames);
00099 void addCurve(const QString & name, bool newFigure = true, bool cacheOn = false);
00100 void setWorkingDirectory(const QString & workingDirectory);
00101 void setNewFigureMaxItems(int value) {_newFigureMaxItems = value;}
00102 void closeFigures();
00103 void setCacheOn(bool on);
00104
00105 public Q_SLOTS:
00106 void updateStat(const QString & statFullName, bool cacheOn);
00107 void updateStat(const QString & statFullName, float y, bool cacheOn);
00108 void updateStat(const QString & statFullName, float x, float y, bool cacheOn);
00109 void updateStat(const QString & statFullName, const std::vector<float> & x, const std::vector<float> & y, bool cacheOn);
00110 void clear();
00111
00112 Q_SIGNALS:
00113 void menuChanged(const QMenu *);
00114 void figuresSetupChanged();
00115
00116 private Q_SLOTS:
00117 void plot(const StatItem * stat, const QString & plotName = QString());
00118 void figureDeleted(QObject * obj);
00119
00120 protected:
00121 virtual void contextMenuEvent(QContextMenuEvent * event);
00122
00123 private:
00124 QMenu * _plotMenu;
00125 QToolBox * _statBox;
00126 QString _workingDirectory;
00127 int _newFigureMaxItems;
00128 QMap<QString, QWidget*> _figures;
00129 };
00130
00131 }
00132
00133 #endif