]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/modelCDMPackage.cpp
Black Box view and folder structure implemented
[crea.git] / lib / creaDevManagerLib / modelCDMPackage.cpp
index 82a514c3f0d354d32af72758108fd201ad364dad..097c360c11265b9db3b73dcbfae25cf744925516 100644 (file)
@@ -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<modelCDMBlackBox*>& 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<bool> checked(this->children.size(), false);
-  std::vector<bool> 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])