]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOTreeHandlerImageAdder.cpp
Fixed number of children algorithm and repetition of nodes on add directory.
[creaImageIO.git] / src2 / creaImageIOTreeHandlerImageAdder.cpp
index e384e99c7f3c1b674f939b80f668f3e87aaa7c34..b9291e1f31b0e3269f37ba1d70c7ac1624e0ffcb 100644 (file)
@@ -46,6 +46,7 @@ namespace creaImageIO
     std::vector<std::string>::const_iterator i;
     for (i=filenames.begin();i!=filenames.end();++i)
       {
+                 
        mProgress.IncNumberScannedFiles();
        if (IsHandledFile(*i)) 
          {
@@ -55,6 +56,7 @@ namespace creaImageIO
        mProgressSignal(mProgress);
        if (mProgress.GetStop()) break;
       }
+         SetNumberOfChildren();
   }
   //=====================================================================
 
@@ -64,12 +66,38 @@ namespace creaImageIO
   {
     mProgress.Reset();
     AddDirectoryRecursor( directory, recurse );
+       SetNumberOfChildren();
     GimmickDebugMessage(3,mProgress<<std::endl);
   }
-  //=====================================================================
 
+  //=====================================================================
 
+  void TreeHandlerImageAdder::SetNumberOfChildren()
+  {
+       std::vector<tree::Node*> children = mTreeHandler->GetTree().GetChildrenList();
+       std::vector<tree::Node*>::iterator it;
+       for(it=children.begin();it!=children.end();++it)
+       {
+       SetNumberOfChildrenRecursor(*it);
+       }
+  }
+  //=====================================================================
 
+  void TreeHandlerImageAdder::SetNumberOfChildrenRecursor(tree::Node* node)
+  {
+         std::stringstream out;
+         out << node->GetChildrenList().size();
+         mTreeHandler->SetAttribute(node,"D1111_0011",out.str());
+         if(node->GetLevel()<mTreeHandler->GetTree().GetNumberOfLevels()-2)
+         {
+                 std::vector<tree::Node*> children = node->GetChildrenList();
+                 std::vector<tree::Node*>::iterator it;
+          for(it=children.begin();it!=children.end();++it)
+                 {
+                         SetNumberOfChildrenRecursor(*it);
+                 }
+         }
+  }
 
   //=====================================================================
   void TreeHandlerImageAdder::AddFile( const std::string& filename )
@@ -110,7 +138,7 @@ namespace creaImageIO
        else 
          {
            mProgress.IncNumberScannedFiles();
-           if (IsHandledFile(itr->string()))
+               if (IsHandledFile(itr->string()))
              {
                mProgress.IncNumberHandledFiles();
                AddFile( itr->string() );
@@ -119,6 +147,7 @@ namespace creaImageIO
            if (mProgress.GetStop()) break;
          }
       }
+        
   }
 
     /*