00001 #ifndef _UTILITIES_ROS_PACKAGE_CONFIG_H_ 00002 #define _UTILITIES_ROS_PACKAGE_CONFIG_H_ 00003 00004 #include <QStringList> 00005 #include <rospack/rospack.h> 00006 #include "utilities/abstract_config.h" 00007 00008 namespace utilities 00009 { 00010 class Export; 00011 00012 class RosPackage : public utilities::AbstractConfig 00013 { 00014 Q_OBJECT 00015 public: 00016 RosPackage(QObject* parent = NULL); 00017 virtual ~RosPackage(); 00018 QString getWorkspaceUrl() const; 00019 QString getName() const; 00020 QString getUrl() const; 00021 QString getVersion() const; 00022 QString getDescription() const; 00023 QString getAuthor() const; 00024 QString getAuthorEmail() const; 00025 QString getMaintainer() const; 00026 QString getMaintainerEmail() const; 00027 QString getLicense() const; 00028 QString getBuildtoolDepend() const; 00029 QStringList getBuildDepends() const; 00030 QStringList getRunDepends() const; 00031 Export* getExport() const; 00032 void setWorkspaceUrl(const QString& url); 00033 void setName(const QString& name); 00034 void setUrl(const QString& url); 00035 void setVersion(const QString& version); 00036 void setDescription(const QString& description); 00037 void setAuthor(const QString& name); 00038 void setAuthorEmail(const QString& email); 00039 void setMaintainer(const QString& name); 00040 void setMaintainerEmail(const QString& email); 00041 void setLicense(const QString& license); 00042 void setBuildtoolDepend(const QString& depend); 00043 void setBuildDepends(const QString& depends); 00044 void setBuildDepends(const QStringList& depends); 00045 void setRunDepends(const QString& depends); 00046 void setRunDepends(const QStringList& depends); 00047 size_t countBuildDepends() const; 00048 size_t countRunDepends() const; 00049 QString getBuildDepend(size_t index) const; 00050 QString getRunDepend(size_t index) const; 00051 void addBuildDepend(const QString& depend); 00052 void addRunDepend(const QString& depend); 00053 void removeBuildDepend(const QString& depend); 00054 void removeRunDepend(const QString& depend); 00055 void clearBuildDepends(); 00056 void clearRunDepends(); 00057 QString validate() const; 00058 bool isValidPackageName() const; 00059 virtual bool createPackage(); 00060 bool createManifest(); 00061 virtual bool createCMakeLists(); 00062 bool updateManifest(); 00063 QString getManifestUrl() const; 00064 QString getCMakeListsUrl() const; 00065 bool catkinMake() const; 00066 bool workspaceExists() const; 00067 bool catkinInitWorkspace() const; 00068 void save() const; 00069 void load(const QString& url); 00070 virtual void reset(); 00071 void write(QDataStream& stream) const; 00072 void read(QDataStream& stream); 00073 RosPackage& operator=(const RosPackage& config); 00074 00075 signals: 00076 void workspaceUrlChanged(const QString& url); 00077 void nameChanged(const QString& name); 00078 void urlChanged(const QString& url); 00079 void versionChanged(const QString& version); 00080 void descriptionChanged(const QString& description); 00081 void authorChanged(const QString& name); 00082 void authorEmailChanged(const QString& email); 00083 void maintainerChanged(const QString& name); 00084 void maintainerEmailChanged(const QString& email); 00085 void licenseChanged(const QString& license); 00086 void buildtoolDependChanged(const QString& depend); 00087 void buildDependsChanged(const QStringList& depends); 00088 void buildDependAdded(const QString& depend); 00089 void buildDependRemoved(const QString& depend); 00090 void buildDependsCleared(); 00091 void runDependsChanged(const QStringList& depends); 00092 void runDependAdded(const QString& depend); 00093 void runDependRemoved(const QString& depend); 00094 void runDependsCleared(); 00095 00096 protected: 00097 rospack::Rospack rp_; 00098 void save(QSettings& settings) const; 00099 void load(QSettings& settings); 00100 00101 protected: 00102 QString workspace_url_; 00103 QString name_; 00104 QString url_; 00105 QString version_; 00106 QString description_; 00107 QString author_; 00108 QString author_email_; 00109 QString maintainer_; 00110 QString maintainer_email_; 00111 QString license_; 00112 QString buildtool_depend_; 00113 QStringList build_depends_; 00114 QStringList run_depends_; 00115 Export* export_; 00116 void updateRp(); 00117 00118 private slots: 00119 void setUrl(); 00120 }; 00121 00122 class Export : public AbstractConfig 00123 { 00124 Q_OBJECT 00125 public: 00126 Export(RosPackage* parent); 00127 virtual ~Export(); 00128 QString getName(size_t index) const; 00129 QString getValue(const QString &name) const; 00130 QStringList getAllNames() const; 00131 QStringList getAllValues() const; 00132 void setAll(const QStringList& all_names, const QStringList& all_values); 00133 size_t count() const; 00134 void add(const QString& name, const QString& value); 00135 void remove(const QString& name); 00136 void clear(); 00137 void save(QSettings& settings) const; 00138 void load(QSettings& settings); 00139 virtual void reset(); 00140 void write(QDataStream& stream) const; 00141 void read(QDataStream& stream); 00142 Export& operator=(const Export& config); 00143 00144 signals: 00145 void allChanged(const QStringList& all_names, 00146 const QStringList& all_values); 00147 void added(const QString& name, const QString& value); 00148 void removed(const QString& name, const QString& value); 00149 void cleared(); 00150 00151 private: 00152 QStringList all_names_; 00153 QStringList all_values_; 00154 }; 00155 00156 class RosMetapackage : public RosPackage 00157 { 00158 Q_OBJECT 00159 public: 00160 RosMetapackage(QObject* parent = NULL); 00161 virtual ~RosMetapackage(); 00162 virtual void reset(); 00163 bool createCMakeLists(); 00164 }; 00165 } 00166 00167 #endif // _UTILITIES_ROS_PACKAGE_CONFIG_H_