]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOTreeHandlerImageAdder.cpp
correction sur la sélection.
[creaImageIO.git] / src2 / creaImageIOTreeHandlerImageAdder.cpp
index 057f16eb51e994563a107e3d0f7bfd374c17ba37..800a8b8f08ae65223edc8a4b0ebc4e02eaa87f64 100644 (file)
@@ -1,9 +1,10 @@
 #include <creaImageIOTreeHandlerImageAdder.h>
-#include <creaWx.h>
-#include <wx/dir.h>
-#include <wx/filename.h>
+#include <creaImageIOSystem.h>
+#include "boost/filesystem.hpp"
 
-using namespace crea;
+namespace fs = boost::filesystem;
+
+//using namespace crea;
 
 namespace creaImageIO
 {
@@ -42,6 +43,7 @@ namespace creaImageIO
     std::vector<std::string>::const_iterator i;
     for (i=filenames.begin();i!=filenames.end();++i)
       {
+                 
        mProgress.IncNumberScannedFiles();
        if (IsHandledFile(*i)) 
          {
@@ -60,16 +62,13 @@ namespace creaImageIO
   {
     mProgress.Reset();
     AddDirectoryRecursor( directory, recurse );
+    GimmickDebugMessage(3,mProgress<<std::endl);
   }
-  //=====================================================================
-
-
-
 
   //=====================================================================
   void TreeHandlerImageAdder::AddFile( const std::string& filename )
   {
-    
+    GimmickDebugMessage(4,"Adding '"<<filename<<"'"<<std::endl);
     std::map< std::string, std::string>  attr;
     mTreeHandler->GetTree().GetDescriptor().BuildAttributeMap(attr);
 
@@ -87,53 +86,37 @@ namespace creaImageIO
   void TreeHandlerImageAdder::AddDirectoryRecursor(const std::string &dirpath, 
                                                   bool recursive)
   {
+    GimmickDebugMessage(4,"Scanning '"<<dirpath<<"'"<<std::endl);
     mProgress.IncNumberScannedDirs();
 
-    std::string fileName;
-    std::string dirName = dirpath;
-
-    wxDir dir( std2wx(dirpath) );
-
-    if ( !dir.IsOpened() )
-      {
-        // deal with the error here - wxDir would already log an error message
-        // explaining the exact reason of the failure
-        return;
-      }
-
-    wxString filename;
-
-    bool cont = dir.GetFirst(&filename, wxEmptyString, 
-                            wxDIR_FILES | wxDIR_HIDDEN );
-    while ( cont )
+    if ( !fs::exists( dirpath ) ) return;
+    
+    fs::directory_iterator end_itr; // default construction yields past-the-end
+    for ( fs::directory_iterator itr( dirpath );
+         itr != end_itr;
+         ++itr )
       {
-       mProgress.IncNumberScannedFiles();
-
-       wxFileName wxffn(dir.GetName(),filename);
-       std::string ffn = wx2std(wxffn.GetFullPath());
-       if (IsHandledFile(ffn)) 
+       // If is directory & recurse : do recurse
+       if ( fs::is_directory(itr->status()) )
          {
-           mProgress.IncNumberHandledFiles();
-           AddFile( ffn );
+           if (recursive) AddDirectoryRecursor( itr->string(), recursive);
          }
-       mProgressSignal(mProgress);
-       cont = ( dir.GetNext(&filename) && (!mProgress.GetStop()) );
-      }
-    
-    // Recurse into subdirs
-    if ( recursive )
-      {
-       cont = dir.GetFirst(&filename, wxEmptyString, 
-                           wxDIR_DIRS | wxDIR_HIDDEN );
-       while ( cont )
+       else 
          {
-           wxFileName wxffn(dir.GetName(),filename);
-           std::string ffn = wx2std(wxffn.GetFullPath());
-           AddDirectoryRecursor( ffn, recursive);
-           cont = dir.GetNext(&filename);
+           mProgress.IncNumberScannedFiles();
+           if (IsHandledFile(itr->string()))
+             {
+               mProgress.IncNumberHandledFiles();
+               AddFile( itr->string() );
+             }
+           mProgressSignal(mProgress);
+           if (mProgress.GetStop()) 
+             {
+               //itr = end_itr;
+               break;
+             }
          }
       }
-    
   }
   //=======================================================================