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 STATSTOOLBOX_H_
00029 #define 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, 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 /* STATSTOOLBOX_H_ */


rtabmap
Author(s): Mathieu Labbe
autogenerated on Sat Jul 23 2016 11:44:27