X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMProject.h;h=f354db9e51c6e3e56aa73f82a79a8b1204b93524;hb=a26a54f4555934ed0f3720bea6bb95913d7f02d6;hp=e4ab0ca9d5557db2a847d3630ff3d7b10eac2161;hpb=11150e550ff03ee658e90cda4b475b4c24da0a7f;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMProject.h b/lib/creaDevManagerLib/modelCDMProject.h index e4ab0ca..f354db9 100644 --- a/lib/creaDevManagerLib/modelCDMProject.h +++ b/lib/creaDevManagerLib/modelCDMProject.h @@ -37,6 +37,7 @@ #include #include +#include #include "modelCDMFolder.h" #include "modelCDMLib.h" @@ -58,7 +59,9 @@ public: /** * Constructor receiving the source path and the build path. + * @param parent Parent node of the Project node. * @param path The source path. + * @param name Name of the project folder. * @param buildPath The build path. By default it's an empty string. */ modelCDMProject(modelCDMIProjectTreeNode* parent, const std::string& path, const std::string& name, const std::string& buildPath = ""); @@ -68,11 +71,6 @@ public: */ ~modelCDMProject(); - /** - * Unimplemented. - */ - void PopulateProject(); - //Getters /** @@ -117,6 +115,12 @@ public: */ modelCDMLib* GetLib() const; + /** + * Retrieves the default make instruction to compile the project. + * @return The make instruction to compile. + */ + std::string GetBuildInstruction() const; + //Setters /** @@ -138,7 +142,7 @@ public: //Creations /** - * Creates a package and sets it as a children of the project. This method creates the package in the hard drive and also in the model. + * Creates a package and sets it as a children of the project. This method creates the package in the hard drive and also in the model. The created package is included in the project's CMakeLists file. * @param name Name of the package. * @param result Result of the operation. * @param authors Authors of the operation. If any space is found, it will be replaced by '_'. @@ -172,12 +176,14 @@ public: /** * Creates an application and sets it as a children of the appli folder in the project. This method creates the library in the hard drive and also in the model. * @param name Application name. + * @param type Application type. 0=console application, 1=GUI application (wxWidgets). * @param result Result of the operation. * @param path Path of the application if not in the application folder. This parameter is not used (for now). * @return The result of the creation. If everything goes well it returns true, else it returns false. */ modelCDMIProjectTreeNode* CreateApplication( const std::string& name, + const int& type, std::string*& result, const std::string& path = "/appli" ); @@ -227,27 +233,71 @@ public: /** * Launches in console the make -clean and make commands to build the project. * @param result Result message for building the project. + * @param line Line to execute the compilation. * @return if any of the commands cannot be executed it return false. */ - bool Build(std::string*& result); + bool Build(std::string*& result, const std::string& line); /** * Launches in console the bbPlugPackage command to connect the project to the .bbtk folder in the hard drive. * @param result Result message for connecting the project. + * @param folder Folder to make connection with. It must contain the bbtkPackage file * @return if the command cannot be executed it return false. */ - bool Connect(std::string*& result); + bool Connect(std::string*& result, const std::string& folder); + + /** + * Checks the CMakeLists files to see what's going to be compiled and what's not. + * @param properties Map containing the project compilation properties. + */ + void CheckStructure(std::map& properties); + + /** + * Checks if the given package is included in the CMakeLists file. + * @param package_name Name of the package to check. + * @return True if the package is included, otherwise returns False. + */ + bool IsPackageIncluded(const std::string& package_name); + + /** + * Sets the inclusion of the package in the project's CMakeLists file. If the package inclusion already exist in file, then the line is uncommented/commented depending on the requested action. If the package inclusion doesn't exist yet, then it is included if the request is an inclusion. + * @param package_name Name of the package to include/exclude. + * @param toInclude True if the request is an inclusion, False otherwise. + * @return True if the request was processed successfully. + */ + bool SetPackageInclude(const std::string& package_name, const bool& toInclude); private: + /** + * Project Name + */ std::string nameProject; + /** + * Project Version + */ std::string version; + /** + * Last Project Version Modification Date + */ std::string versionDate; + /** + * Build Path for compiling the project + */ std::string buildPath; + /** + * lib folder + */ modelCDMLib* lib; + /** + * appli folder + */ modelCDMAppli* appli; + /** + * package folders + */ std::vector packages; };