StatsToolBox.h
Go to the documentation of this file.
00001 /*
00002 Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
00003 All rights reserved.
00004 
00005 Redistribution and use in source and binary forms, with or without
00006 modification, are permitted provided that the following conditions are met:
00007     * Redistributions of source code must retain the above copyright
00008       notice, this list of conditions and the following disclaimer.
00009     * Redistributions in binary form must reproduce the above copyright
00010       notice, this list of conditions and the following disclaimer in the
00011       documentation and/or other materials provided with the distribution.
00012     * Neither the name of the Universite de Sherbrooke nor the
00013       names of its contributors may be used to endorse or promote products
00014       derived from this software without specific prior written permission.
00015 
00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00017 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00018 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
00020 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00021 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00022 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00023 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00024 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00025 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 */
00027 
00028 #ifndef RTABMAP_STATSTOOLBOX_H_
00029 #define RTABMAP_STATSTOOLBOX_H_
00030 
00031 #include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
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 /* STATSTOOLBOX_H_ */


rtabmap
Author(s): Mathieu Labbe
autogenerated on Thu Jun 6 2019 21:59:31