X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMPackage.cpp;fp=lib%2FcreaDevManagerLib%2FmodelCDMPackage.cpp;h=097c360c11265b9db3b73dcbfae25cf744925516;hb=2c45094f8403883f8fb52c1801f1d96a35a471bf;hp=82a514c3f0d354d32af72758108fd201ad364dad;hpb=2b6788596bc21c7942df4b0d6917eaf5b5d72277;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMPackage.cpp b/lib/creaDevManagerLib/modelCDMPackage.cpp index 82a514c..097c360 100644 --- a/lib/creaDevManagerLib/modelCDMPackage.cpp +++ b/lib/creaDevManagerLib/modelCDMPackage.cpp @@ -43,6 +43,7 @@ modelCDMPackage::modelCDMPackage() { + this->src = NULL; } modelCDMPackage::modelCDMPackage(const std::string& path, const int& level) @@ -143,7 +144,9 @@ modelCDMPackage::modelCDMPackage(const std::string& path, const int& level) //if src, check for black boxes if(stdfileName == "src") { - wxDir srcF(crea::std2wx((path + delimiters + "src").c_str())); + this->src = new modelCDMPackageSrc(path + delimiters + "src", this->level + 1); + this->children.push_back(this->src); + /*wxDir srcF(crea::std2wx((path + delimiters + "src").c_str())); if (srcF.IsOpened()) { wxString srcName; @@ -158,13 +161,13 @@ modelCDMPackage::modelCDMPackage(const std::string& path, const int& level) } innerCont = srcF.GetNext(&srcName); } - } + }*/ } - //if is an unknown folder, create folder else { this->children.push_back(new modelCDMFolder(path + delimiters + stdfileName, this->level + 1)); } + cont = dir.GetNext(&fileName); } @@ -220,9 +223,9 @@ const std::string& modelCDMPackage::GetDescription() const return this->description; } -const std::vector& modelCDMPackage::GetBlackBoxes() const +modelCDMPackageSrc* modelCDMPackage::GetSrc() const { - return this->blackBoxes; + return this->src; } bool modelCDMPackage::SetAuthors(const std::string& authors, std::string*& result) @@ -464,7 +467,7 @@ const bool modelCDMPackage::Refresh(std::string*& result) std::vector checked(this->children.size(), false); - std::vector checkedBlackBoxes(this->blackBoxes.size(), false); + bool checkedSrc = false; //check all folders wxDir dir(crea::std2wx((this->path).c_str())); @@ -477,10 +480,26 @@ const bool modelCDMPackage::Refresh(std::string*& result) std::string stdfileName = crea::wx2std(fileName); - + //detect black boxes in src if(stdfileName == "src") { - wxDir srcF(crea::std2wx((path + "/" + "src").c_str())); + //check if box already exist + bool found = false; + if (this->src != NULL) + { + found = true; + int pos = std::find(this->children.begin(), this->children.end(), this->src) - this->children.begin(); + checked[pos] = true; + checkedSrc = true; + if(!this->src->Refresh(result)) + return false; + } + else + { + this->src = new modelCDMPackageSrc(path + "/" + "src", this->level +1); + this->children.push_back(this->src); + } + /*wxDir srcF(crea::std2wx((path + "/" + "src").c_str())); if (srcF.IsOpened()) { wxString srcName; @@ -513,13 +532,13 @@ const bool modelCDMPackage::Refresh(std::string*& result) } innerCont = srcF.GetNext(&srcName); } - } + }*/ } - //if not src else { - //check if they already exist + + //check if folder already exist bool found = false; for (int i = 0;!found && i < this->children.size(); i++) { @@ -536,8 +555,9 @@ const bool modelCDMPackage::Refresh(std::string*& result) modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1); this->children.push_back(folder); } - cont = dir.GetNext(&fileName); } + cont = dir.GetNext(&fileName); + } cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES); @@ -587,15 +607,11 @@ const bool modelCDMPackage::Refresh(std::string*& result) } } - for (int i = 0; i < checkedBlackBoxes.size(); i++) + if(!checkedSrc) { - if(!checkedBlackBoxes[i]) - { - this->blackBoxes.erase(this->blackBoxes.begin()+i); - checkedBlackBoxes.erase(checkedBlackBoxes.begin()+i); - i--; - } + this->src = NULL; } + for (int i = 0; i < checked.size(); i++) { if(!checked[i])