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 STATSTOOLBOX_H_
00029 #define 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, 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
00056 public slots:
00057 void updateMenu(const QMenu * menu);
00058
00059 signals:
00060 void valueAdded(float);
00061 void valueAdded(float, float);
00062 void valuesChanged(const std::vector<float> &, const std::vector<float> &);
00063 void plotRequested(const StatItem *, const QString &);
00064
00065 private slots:
00066 void preparePlotRequest();
00067
00068 private:
00069 void setupUi(QGridLayout * grid);
00070
00071 private:
00072 QToolButton * _button;
00073 QLabel * _name;
00074 QLabel * _value;
00075 QLabel * _unit;
00076 QMenu * _menu;
00077 };
00078
00079
00080
00081
00082 class RTABMAPGUI_EXP StatsToolBox : public QWidget
00083 {
00084 Q_OBJECT;
00085
00086 public:
00087 StatsToolBox(QWidget * parent);
00088 virtual ~StatsToolBox();
00089
00090 void getFiguresSetup(QList<int> & curvesPerFigure, QStringList & curveNames);
00091 void addCurve(const QString & name, bool newFigure = true);
00092 void setWorkingDirectory(const QString & workingDirectory);
00093 void closeFigures();
00094
00095 public slots:
00096 void updateStat(const QString & statFullName, float y);
00097 void updateStat(const QString & statFullName, float x, float y);
00098 void updateStat(const QString & statFullName, const std::vector<float> & x, const std::vector<float> & y);
00099
00100 signals:
00101 void menuChanged(const QMenu *);
00102 void figuresSetupChanged();
00103
00104 private slots:
00105 void plot(const StatItem * stat, const QString & plotName = QString());
00106 void figureDeleted(QObject * obj);
00107
00108 protected:
00109 virtual void contextMenuEvent(QContextMenuEvent * event);
00110
00111 private:
00112 QMenu * _plotMenu;
00113 QToolBox * _statBox;
00114 QString _workingDirectory;
00115 QMap<QString, QWidget*> _figures;
00116 };
00117
00118 }
00119
00120 #endif