X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMFolder.cpp;h=c2796e8cfa0f6891eae459ea718cef7e4d8a3b3f;hb=dd9de710df141a074f10d0cab27b217425ecab20;hp=c97b129d005da0033615ff9221ed2040899788e5;hpb=5af1633cdea030f5189c57c51bd843685eecd8b6;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMFolder.cpp b/lib/creaDevManagerLib/modelCDMFolder.cpp index c97b129..c2796e8 100644 --- a/lib/creaDevManagerLib/modelCDMFolder.cpp +++ b/lib/creaDevManagerLib/modelCDMFolder.cpp @@ -47,10 +47,11 @@ modelCDMFolder::modelCDMFolder() this->CMakeLists = NULL; } -modelCDMFolder::modelCDMFolder(const std::string& path, const std::string& name, const int& level) +modelCDMFolder::modelCDMFolder(modelCDMIProjectTreeNode* parent, const std::string& path, const std::string& name, const int& level) { std::cout << "creating folder: " + path + "\n"; //set attributes + this->parent = parent; this->children.clear(); this->level = level; this->CMakeLists = NULL; @@ -71,7 +72,7 @@ modelCDMFolder::modelCDMFolder(const std::string& path, const std::string& name, std::string stdfileName = crea::wx2std(fileName); //if is an unknown folder, create folder - modelCDMFolder* folder = new modelCDMFolder(pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); + modelCDMFolder* folder = new modelCDMFolder(this, pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->children.push_back(folder); this->folders.push_back(folder); @@ -82,18 +83,32 @@ modelCDMFolder::modelCDMFolder(const std::string& path, const std::string& name, while (cont) { std::string stdfileName = crea::wx2std(fileName); + std::size_t fileTypePos = stdfileName.find_last_of("."); + std::string fileType = stdfileName.substr(fileTypePos); //if CMakeLists, create CMakeLists if(stdfileName == "CMakeLists.txt") { - this->CMakeLists = new modelCDMCMakeListsFile(pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); + this->CMakeLists = new modelCDMCMakeListsFile(this, pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->children.push_back(this->CMakeLists); } - else + //if is a code file, create code file + else if(fileType == ".c" || + fileType == ".cxx" || + fileType == ".h" || + fileType == ".cpp" || + fileType == ".txx" || + fileType == ".cmake" ) { - this->children.push_back(new modelCDMFile(pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1)); + modelCDMCodeFile* file = new modelCDMCodeFile(this, pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); + this->children.push_back(file); } //if is an unknown file, create file + else + { + this->children.push_back(new modelCDMFile(this, pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1)); + } + cont = dir.GetNext(&fileName); } } @@ -106,7 +121,7 @@ modelCDMFolder::~modelCDMFolder() { this->folders.clear(); this->CMakeLists = NULL; - for (int i = 0; i < this->children.size(); i++) + for (int i = 0; i < (int)(this->children.size()); i++) { if(this->children[i] != NULL) { @@ -125,8 +140,8 @@ bool modelCDMFolder::CreateClass(const std::string& name) } else { - this->children.push_back(new modelCDMFile(this->path + CDMUtilities::SLASH + name + ".h", name + ".h", this->level + 1)); - this->children.push_back(new modelCDMFile(this->path + CDMUtilities::SLASH + name + ".cpp", name + ".cpp", this->level + 1)); + this->children.push_back(new modelCDMFile(this, this->path + CDMUtilities::SLASH + name + ".h", name + ".h", this->level + 1)); + this->children.push_back(new modelCDMFile(this, this->path + CDMUtilities::SLASH + name + ".cpp", name + ".cpp", this->level + 1)); this->SortChildren(); return true; } @@ -141,7 +156,7 @@ modelCDMFolder* modelCDMFolder::CreateFolder(const std::string& name, std::strin result = new std::string("Error executing: " + command + "."); return NULL; } - modelCDMFolder* folder = new modelCDMFolder(path + CDMUtilities::SLASH + name, name, level + 1); + modelCDMFolder* folder = new modelCDMFolder(this, path + CDMUtilities::SLASH + name, name, level + 1); this->folders.push_back(folder); this->children.push_back(folder); @@ -185,7 +200,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) std::string stdfileName = crea::wx2std(fileName); //check if they already exist bool found = false; - for (int i = 0; !found && i < this->folders.size(); i++) + for (int i = 0; !found && i < (int)(this->folders.size()); i++) { if (this->folders[i]->GetName() == stdfileName) { @@ -199,7 +214,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) } if(!found) { - modelCDMFolder* folder = new modelCDMFolder(this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); + modelCDMFolder* folder = new modelCDMFolder(this, this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->folders.push_back(folder); this->children.push_back(folder); } @@ -210,13 +225,15 @@ const bool modelCDMFolder::Refresh(std::string*& result) while (cont) { std::string stdfileName = crea::wx2std(fileName); + std::size_t fileTypePos = stdfileName.find_last_of("."); + std::string fileType = stdfileName.substr(fileTypePos); //if CMakeLists, create CMakeLists if(stdfileName == "CMakeLists.txt") { if (this->CMakeLists == NULL) { - this->CMakeLists = new modelCDMCMakeListsFile(this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); + this->CMakeLists = new modelCDMCMakeListsFile(this, this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->children.push_back(this->CMakeLists); } else @@ -232,7 +249,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) else { bool found = false; - for (int i = 0;!found && i < this->children.size(); i++) + for (int i = 0;!found && i < (int)(this->children.size()); i++) { if (this->children[i]->GetName() == stdfileName) { @@ -245,8 +262,22 @@ const bool modelCDMFolder::Refresh(std::string*& result) if(!found) { - modelCDMFile* file = new modelCDMFile(this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); - this->children.push_back(file); + //if is a code file, create modelCDMCodeFile + if( + fileType == ".c" || + fileType == ".cxx" || + fileType == ".h" || + fileType == ".cpp" || + fileType == ".txx" || + fileType == ".cmake" ) + { + this->children.push_back(new modelCDMCodeFile(this, this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1)); + } + else + { + modelCDMFile* file = new modelCDMFile(this, this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); + this->children.push_back(file); + } } } @@ -254,7 +285,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) } } - for (int i = 0; i < checkedFolders.size(); i++) + for (int i = 0; i < (int)(checkedFolders.size()); i++) { if(!checkedFolders[i]) { @@ -263,7 +294,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) i--; } } - for (int i = 0; i < checked.size(); i++) + for (int i = 0; i < (int)(checked.size()); i++) { if(!checked[i]) {