]> Creatis software - creaImageIO.git/commitdiff
Fixed number of children algorithm and repetition of nodes on add directory.
authorcaballero <caballero>
Fri, 3 Apr 2009 13:00:05 +0000 (13:00 +0000)
committercaballero <caballero>
Fri, 3 Apr 2009 13:00:05 +0000 (13:00 +0000)
src2/creaImageIOSQLiteTreeHandler.cpp
src2/creaImageIOTreeHandlerImageAdder.cpp
src2/creaImageIOTreeHandlerImageAdder.h
src2/creaImageIOTreeNode.cpp
src2/creaImageIOWxTreeView.cpp

index a7185fdd3abeb4e73d943982f6c80bb4d418761a..4363e7c0a99de19d39fc44b4e0570f0598a9496d 100644 (file)
@@ -126,20 +126,13 @@ namespace creaImageIO
   }
   //===================================================================== 
 
-
   //===================================================================== 
   int SQLiteTreeHandler::AddBranch( const AttributeMapType& attr )
   {
     tree::Node* parent = DBGetParent(attr);
     DBGraftToParent(parent,attr);
-       int nChildren = GetNumberOfChildren(parent);
-       std::stringstream out;
-       out << nChildren;
-       if(parent->GetLevel()>0&&parent->GetLevel()<GetTree().GetNumberOfLevels())
-       {
-       DBSetAttribute(parent,"D1111_0011",out.str());
-       }
     return (parent->GetLevel()+1);
+         
   }
   //===================================================================== 
  
@@ -667,14 +660,16 @@ namespace creaImageIO
     if (node->GetChildrenLoaded()) 
       {
        // Iterate the children 
-       tree::Node::ChildrenListType::iterator i;
+
+       /*tree::Node::ChildrenListType::iterator i;
        for (i = node->GetChildrenList().begin();
             i!= node->GetChildrenList().end();
             ++i)
          {
            nbloaded += DBLoadChildren(*i,numberoflevels-1);
-         }
+         }*/
        return nbloaded;
+
       }
     
     /// If children not loaded : do it and recurse
@@ -694,6 +689,7 @@ namespace creaImageIO
 
     while (!q.eof())
       {
+       //        std::cout<<"Name in q: "<<q.fieldName(3)<<" Value: "<<q.getStringField(3)<<std::endl;
        nbloaded++;
        Node* n = new Node(node);
        for (int fld = 0; fld < q.numFields(); fld++)
@@ -711,7 +707,7 @@ namespace creaImageIO
        if ( numberoflevels != 1 ) 
          {
            //  msw[2].Pause();
-           nbloaded += DBLoadChildren(n, numberoflevels-1);
+       //    nbloaded += DBLoadChildren(n, numberoflevels-1);
            //      msw[2].Resume();
          }
        // next entry in db
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;
          }
       }
+        
   }
 
     /*
index 72ae35055258394b0304b6ed26a2635fa8aa2ba3..fc22d18a1b8ffe6fa202dcb7692b4ce82a21683f 100644 (file)
@@ -111,6 +111,12 @@ namespace creaImageIO
     /// Recursive method which does the main job for AddDirectory
     void AddDirectoryRecursor( const std::string& directory, 
                               bool recurse );
+
+       ///Sets the number of children for the tree
+       void SetNumberOfChildren();
+  
+       ///Sets the number of children recursively for the given node
+       void SetNumberOfChildrenRecursor(tree::Node* node);
     
 
     TreeHandler* mTreeHandler;
@@ -118,6 +124,8 @@ namespace creaImageIO
     
     Progress mProgress;
     ProgressSignalType mProgressSignal;
+
+
   };
   // EO class TreeHandlerImageAdder
   //=======================================================================
index e34b31facbfc6f7bc93f304c64ba7c75973f98b1..954a7144da7216080efd4eae54551f26a8155714 100644 (file)
@@ -20,8 +20,8 @@ namespace creaImageIO
          GimmickDebugMessage(6,"Default Node constructor (level "<<GetLevel()<<")"
                         << std::endl);
          // Insert into parent's children list
-         parent->GetChildrenList().push_back(this);
-         InitializeAttributeMap();
+         //parent->GetChildrenList().push_back(this);
+         //InitializeAttributeMap();
        }
       else
        {
index c5eab8f3f8a553a9a834bc6e7079eb94d50c9129..47123b8e96e06b50193a4ad9689b11dedbb4f4fd 100644 (file)
@@ -101,6 +101,10 @@ namespace creaImageIO
        if (i>1) sparent = mLevelList[i-2].wxSplitter;
 
        level.wxSplitter = new wxSplitterWindow( sparent , -1);
+       if(i!=1)
+       {
+       level.wxSplitter->Show(false);
+       }
        //          level.wxSplitter->SetMinimumPaneSize(100);
        
        wxListCtrl* ctrl = new wxListCtrl(level.wxSplitter,