X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMFolder.cpp;h=3365c099b9adfd64c246ff7b7f04a92636a6df02;hb=311bdcc514f85386f3bbbef9ff6a88bf69fd930f;hp=28d7a9581e7a96479c013b2dc444e60012393c25;hpb=2b6788596bc21c7942df4b0d6917eaf5b5d72277;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMFolder.cpp b/lib/creaDevManagerLib/modelCDMFolder.cpp index 28d7a95..3365c09 100644 --- a/lib/creaDevManagerLib/modelCDMFolder.cpp +++ b/lib/creaDevManagerLib/modelCDMFolder.cpp @@ -47,21 +47,15 @@ modelCDMFolder::modelCDMFolder() this->CMakeLists = NULL; } -modelCDMFolder::modelCDMFolder(const std::string& path, const int& level) +modelCDMFolder::modelCDMFolder(const std::string& path, const std::string& name, const int& level) { + std::cout << "creating folder: " + path + "\n"; //set attributes this->children.clear(); this->level = level; this->CMakeLists = NULL; this->length = 0; - - std::vector words; - std::string delimiters; - //TODO::fix for windows - delimiters = "/"; - CDMUtilities::splitter::split(words, path, delimiters, CDMUtilities::splitter::no_empties); - this->name = words[words.size()-1]; - + this->name = name; this->path = path; this->type = wxDIR_DIRS; @@ -77,7 +71,9 @@ modelCDMFolder::modelCDMFolder(const std::string& path, const int& level) std::string stdfileName = crea::wx2std(fileName); //if is an unknown folder, create folder - this->children.push_back(new modelCDMFolder(pathFixed + "/" + stdfileName, this->level + 1)); + modelCDMFolder* folder = new modelCDMFolder(pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); + this->children.push_back(folder); + this->folders.push_back(folder); cont = dir.GetNext(&fileName); } @@ -90,12 +86,12 @@ modelCDMFolder::modelCDMFolder(const std::string& path, const int& level) //if CMakeLists, create CMakeLists if(stdfileName == "CMakeLists.txt") { - this->CMakeLists = new modelCDMCMakeListsFile(pathFixed + "/" + stdfileName, this->level + 1); + this->CMakeLists = new modelCDMCMakeListsFile(pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->children.push_back(this->CMakeLists); } else { - this->children.push_back(new modelCDMFile(pathFixed + "/" + stdfileName, this->level + 1)); + this->children.push_back(new modelCDMFile(pathFixed + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1)); } //if is an unknown file, create file cont = dir.GetNext(&fileName); @@ -103,6 +99,7 @@ modelCDMFolder::modelCDMFolder(const std::string& path, const int& level) } this->SortChildren(); + std::sort(this->folders.begin(), this->folders.end(), CompareNodeItem); } modelCDMFolder::~modelCDMFolder() @@ -123,13 +120,13 @@ modelCDMFolder::~modelCDMFolder() modelCDMFolder* modelCDMFolder::CreateFolder(const std::string& name, std::string*& result) { //TODO:: mkdir depending on OS - std::string command = "mkdir " + path + "/" + name; + 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(path + "/" + name, level + 1); + modelCDMFolder* folder = new modelCDMFolder(path + CDMUtilities::SLASH + name, name, level + 1); this->folders.push_back(folder); this->children.push_back(folder); @@ -154,6 +151,7 @@ bool modelCDMFolder::OpenCMakeListsFile(std::string*& result) const bool modelCDMFolder::Refresh(std::string*& result) { + //std::cout << "refreshing folder " << this->name << std::endl; //set attributes this->type = wxDIR_DIRS; @@ -170,12 +168,11 @@ const bool modelCDMFolder::Refresh(std::string*& result) while (cont) { std::string stdfileName = crea::wx2std(fileName); - std::string folderName = stdfileName; //check if they already exist bool found = false; - for (int i = 0;!found && i < this->folders.size(); i++) + for (int i = 0; !found && i < this->folders.size(); i++) { - if (this->folders[i]->GetName() == folderName) + if (this->folders[i]->GetName() == stdfileName) { found = true; int pos = std::find(this->children.begin(), this->children.end(), this->folders[i]) - this->children.begin(); @@ -187,7 +184,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) } if(!found) { - modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1); + modelCDMFolder* folder = new modelCDMFolder(this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->folders.push_back(folder); this->children.push_back(folder); } @@ -204,7 +201,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) { if (this->CMakeLists == NULL) { - this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1); + this->CMakeLists = new modelCDMCMakeListsFile(this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->children.push_back(this->CMakeLists); } else @@ -215,11 +212,12 @@ const bool modelCDMFolder::Refresh(std::string*& result) return false; } } + //if is an unknown file, create file else { bool found = false; - for (int i = 0; i children.size(); i++) + for (int i = 0;!found && i < this->children.size(); i++) { if (this->children[i]->GetName() == stdfileName) { @@ -232,7 +230,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) if(!found) { - modelCDMFile* file = new modelCDMFile(this->path + "/" + stdfileName, this->level + 1); + modelCDMFile* file = new modelCDMFile(this->path + CDMUtilities::SLASH + stdfileName, stdfileName, this->level + 1); this->children.push_back(file); } } @@ -261,6 +259,7 @@ const bool modelCDMFolder::Refresh(std::string*& result) } } this->SortChildren(); + std::sort(this->folders.begin(), this->folders.end(), CompareNodeItem); return true; }