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 <QWidget>
00032 #include <QtCore/QMap>
00033
00034 class QToolButton;
00035 class QLabel;
00036 class QMenu;
00037 class QGridLayout;
00038 class QToolBox;
00039
00040 namespace rtabmap {
00041
00042 class StatItem : public QWidget
00043 {
00044 Q_OBJECT;
00045
00046 public:
00047 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);
00048 virtual ~StatItem();
00049 void setValue(float x, float y);
00050 void setValues(const std::vector<float> & x, const std::vector<float> & y);
00051 QString value() const;
00052
00053 public slots:
00054 void updateMenu(const QMenu * menu);
00055
00056 signals:
00057 void valueChanged(float, float);
00058 void valuesChanged(const std::vector<float> &, const std::vector<float> &);
00059 void plotRequested(const StatItem *, const QString &);
00060
00061 private slots:
00062 void preparePlotRequest();
00063
00064 private:
00065 void setupUi(QGridLayout * grid);
00066
00067 private:
00068 QToolButton * _button;
00069 QLabel * _name;
00070 QLabel * _value;
00071 QLabel * _unit;
00072 QMenu * _menu;
00073 };
00074
00075
00076
00077
00078 class StatsToolBox : public QWidget
00079 {
00080 Q_OBJECT;
00081
00082 public:
00083 StatsToolBox(QWidget * parent);
00084 virtual ~StatsToolBox();
00085
00086 void getFiguresSetup(QList<int> & curvesPerFigure, QStringList & curveNames);
00087 void addCurve(const QString & name, bool newFigure = true);
00088 void setWorkingDirectory(const QString & workingDirectory);
00089 void closeFigures();
00090
00091 public slots:
00092 void updateStat(const QString & statFullName, float x, float y);
00093 void updateStat(const QString & statFullName, const std::vector<float> & x, const std::vector<float> & y);
00094
00095 signals:
00096 void menuChanged(const QMenu *);
00097 void figuresSetupChanged();
00098
00099 private slots:
00100 void plot(const StatItem * stat, const QString & plotName = QString());
00101 void figureDeleted(QObject * obj);
00102
00103 protected:
00104 virtual void contextMenuEvent(QContextMenuEvent * event);
00105
00106 private:
00107 QMenu * _plotMenu;
00108 QToolBox * _statBox;
00109 QString _workingDirectory;
00110 QMap<QString, QWidget*> _figures;
00111 };
00112
00113 }
00114
00115 #endif