00001 #ifndef _RQT_MRTA_ARCHITECTURE_CONFIG_PARAMS_H_ 00002 #define _RQT_MRTA_ARCHITECTURE_CONFIG_PARAMS_H_ 00003 00004 #include <QVector> 00005 #include "rqt_mrta/config/param_interface.h" 00006 00007 namespace rqt_mrta 00008 { 00009 namespace config 00010 { 00011 namespace application 00012 { 00013 class Robot; 00014 } 00015 class Params : public ParamInterface 00016 { 00017 Q_OBJECT 00018 public: 00019 Params(Params* parent = NULL); 00020 virtual ~Params(); 00021 QVector<ParamInterface*> getChildren() const; 00022 ParamInterface* getChild(size_t index) const; 00023 ParamInterface* getParam(const QString& relative_name) const; 00024 void addParam(ParamInterface* param); 00025 void removeParam(const QString& relative_name); 00026 void clearParams(); 00027 bool contains(const QString& full_name) const; 00028 size_t count() const; 00029 bool isEmpty() const; 00030 QString validate() const; 00031 virtual bool isParams() const; 00032 void save(QSettings& settings) const; 00033 void load(QSettings& settings); 00034 void reset(); 00035 void write(QDataStream& stream) const; 00036 void read(QDataStream& stream); 00037 Params& operator=(const Params& config); 00038 ParamInterface* clone() const; 00039 static QStringList sortGroups(const QStringList& groups); 00040 QString toYaml(const QString &prefix) const; 00041 00042 protected: 00043 QVector<ParamInterface*> params_; 00044 Params(const QString& group_name, Params* parent = NULL); 00045 00046 private slots: 00047 void paramDestroyed(); 00048 }; 00049 } 00050 } 00051 00052 #endif // _RQT_MRTA_ARCHITECTURE_CONFIG_PARAMS_H_