X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMLibrary.cpp;h=f67999c06748b6441a43c538d07b7cbeb3a2c45c;hb=2fb5dd9262993efaf56bfc731f4297fdb96bf63e;hp=3e47717084a83704c810d283af8337df36b9eedf;hpb=40c574d86b82c2afc5a351f1ad96cc0254008306;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMLibrary.cpp b/lib/creaDevManagerLib/modelCDMLibrary.cpp index 3e47717..f67999c 100644 --- a/lib/creaDevManagerLib/modelCDMLibrary.cpp +++ b/lib/creaDevManagerLib/modelCDMLibrary.cpp @@ -35,6 +35,7 @@ #include "modelCDMLibrary.h" #include +#include #include #include "CDMUtilities.h" @@ -194,17 +195,17 @@ bool modelCDMLibrary::SetNameLibrary(const std::string& fileName, std::string*& modelCDMFolder* modelCDMLibrary::CreateFolder(const std::string& name, std::string*& result) { //TODO:: mkdir depending on OS - std::string command = "mkdir \"" + path + CDMUtilities::SLASH + name + "\""; - if(system(command.c_str())) - { - result = new std::string("Error executing: " + command + "."); - return NULL; - } - modelCDMFolder* folder = new modelCDMFolder(this, path + CDMUtilities::SLASH + name, name, level + 1); - this->folders.push_back(folder); - this->children.push_back(folder); - - return folder; + std::string command = "mkdir \"" + path + CDMUtilities::SLASH + name + "\""; + if(system(command.c_str())) + { + result = new std::string("Error executing: " + command + "."); + return NULL; + } + modelCDMFolder* folder = new modelCDMFolder(this, path + CDMUtilities::SLASH + name, name, level + 1); + this->folders.push_back(folder); + this->children.push_back(folder); + + return folder; } const bool modelCDMLibrary::Refresh(std::string*& result) @@ -353,3 +354,78 @@ const bool modelCDMLibrary::Refresh(std::string*& result) std::sort(this->folders.begin(), this->folders.end(), CompareNodeItem); return true; } + +void modelCDMLibrary::CheckStructure(std::map& properties) +{ + //check cmake exist + if(this->CMakeLists != NULL) + { + //set default values + properties["library " + this->name + " lib ${crea_LIBRARIES}"] = false; + properties["library " + this->name + " lib ${WXWIDGETS_LIBRARIES}"] = false; + properties["library " + this->name + " lib ${KWWidgets_LIBRARIES}"] = false; + properties["library " + this->name + " lib ${VTK_LIBRARIES}"] = false; + properties["library " + this->name + " lib ${ITK_LIBRARIES}"] = false; + properties["library " + this->name + " lib ${GDCM_LIBRARIES}"] = false; + properties["library " + this->name + " lib ${BOOST_LIBRARIES}"] = false; + + + //open cmakelists + std::ifstream confFile; + confFile.open((this->CMakeLists->GetPath()).c_str()); + + //take everything that is not commented + std::string fileContent; + + std::string word; + std::vector words; + while(confFile.is_open() && !confFile.eof()) + { + std::getline(confFile,word, '\n'); + if(word[0] != '#') + { + CDMUtilities::splitter::split(words, word, "#", CDMUtilities::splitter::empties_ok); + if (words.size() > 0) + { + word = words[0]; + CDMUtilities::splitter::split(words, word, " ", CDMUtilities::splitter::empties_ok); + for (int i = 0; i < words.size(); i++) + { + if(words[i].substr(0,2) == "//") + break; + fileContent += words[i] + " "; + } + } + } + } + + //check every instruction + std::stringstream ss(fileContent); + while(!ss.eof()) + { + std::getline(ss,word, '('); + + //check instruction name + CDMUtilities::splitter::split(words, word, " ", CDMUtilities::splitter::no_empties); + + //set instructions + if (words.size() > 0 && words[words.size()-1] == "SET") + { + std::getline(ss,word, ')'); + + CDMUtilities::splitter::split(words, word, " \t", CDMUtilities::splitter::no_empties); + if (words.size() > 1) + { + if (words[0] == "${LIBRARY_NAME}_LINK_LIBRARIES") + { + for (int i = 1; i < words.size(); i++) + { + properties["library " + this->name + " lib " + words[i]] = true; + } + } + } + } + } + + } +}