00001 #ifndef _RQT_MRTA_CONFIG_ARGS_H_ 00002 #define _RQT_MRTA_CONFIG_ARGS_H_ 00003 00004 #include <QVector> 00005 #include "utilities/abstract_config.h" 00006 00007 namespace rqt_mrta 00008 { 00009 namespace config 00010 { 00011 class Arg; 00012 class Args : public utilities::AbstractConfig 00013 { 00014 Q_OBJECT 00015 public: 00016 Args(QObject* parent = NULL); 00017 virtual ~Args(); 00018 Arg* getArg(size_t index) const; 00019 Arg* addArg(); 00020 void removeArg(Arg* arg); 00021 void removeArg(size_t index); 00022 void clearArgs(); 00023 bool contains(const QString& name) const; 00024 size_t count() const; 00025 bool isEmpty() const; 00026 QString validate() const; 00027 void save(QSettings& settings) const; 00028 void load(QSettings& settings); 00029 void reset(); 00030 void write(QDataStream& stream) const; 00031 void read(QDataStream& stream); 00032 Args& operator=(const Args& config); 00033 QString toLaunch(const QString& prefix) const; 00034 00035 signals: 00036 void added(size_t index); 00037 void removed(const QString& id); 00038 void cleared(); 00039 void argChanged(size_t index); 00040 void argNameChanged(size_t index, const QString& name); 00041 void argValueChanged(size_t index, const QString& value); 00042 void argDefaultValueChanged(size_t index, const QString& value); 00043 00044 private: 00045 QVector<Arg*> args_; 00046 00047 private slots: 00048 void argNameChanged(const QString& name); 00049 void argValueChanged(const QString& value); 00050 void argDefaultValueChanged(const QString& value); 00051 void argDestroyed(); 00052 }; 00053 } 00054 } 00055 00056 #endif // _RQT_MRTA_CONFIG_ARGS_H_