]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxGimmickView.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIOWxGimmickView.cpp
index 21c9a98b8b8cb618136e7a37086a6c7614f28145..5b87845400cd574b220c6011c5294055a1d05f05 100644 (file)
@@ -12,6 +12,7 @@ using namespace crea;
 #include "icons/help.xpm"
 
 #include <wx/imaglist.h>
+#include<boost/filesystem/operations.hpp>
 
 namespace creaImageIO
 {
@@ -156,6 +157,8 @@ namespace creaImageIO
   /// Destructor
   WxGimmickView::~WxGimmickView()
   {
+       // stop the viewer before application exit.
+       mViewer->StopPlayer();
     GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView"
                        <<std::endl);
   }
@@ -203,13 +206,13 @@ namespace creaImageIO
  
   //======================================================================
   /// Create the tree view for TreeHandler provided
-  void WxGimmickView::CreateTreeView( TreeHandler* h)
+  void WxGimmickView::CreateTreeView( TreeHandler* h, TimestampDatabaseHandler* tdh)
   {
     std::string name(h->GetTree().GetAttribute("Name"));
     GimmickMessage(2,"Creating the tree view for '"<<
                   name<<"'"<<std::endl);
     // Create the WxTreeView
-    WxTreeView* view = new WxTreeView(h,this,mNotebook,-1);
+    WxTreeView* view = new WxTreeView(h,tdh,this,mNotebook,-1);
 
     // TO DO : TEST THAT A VIEW WITH SAME NAME IS NOT
     // ALREADY IN THE MAP
@@ -286,6 +289,7 @@ namespace creaImageIO
   //=================================================
   void WxGimmickView::OnAddFiles(wxCommandEvent& event)
   {
+    mViewer->StopPlayer();
    long style = wxOPEN | wxFILE_MUST_EXIST | wxFD_MULTIPLE;
     std::string wc("*.*");
     wxFileDialog* FD = new wxFileDialog( 0, 
@@ -328,14 +332,16 @@ namespace creaImageIO
        UpdateTreeViewLevel("Local database",1);
        delete mProgressDialog;
        DisplayAddSummary();    
+
       }
-       
+       mViewer->StartPlayer(); 
   }
   //=================================================
 
   //=================================================
   void WxGimmickView::OnAddDir(wxCommandEvent& event)
   {
+    mViewer->StopPlayer();
     long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST;
     wxDirDialog* FD = 
       new wxDirDialog( 0, 
@@ -345,40 +351,58 @@ namespace creaImageIO
     
     if (FD->ShowModal()==wxID_OK)
       {
+
        
-       bool recurse = false;
-       if (wxMessageBox(_T("Recurse into sub-directories ?"),
-                        _T("Scan directory"),
-                        wxYES_NO,this ) == wxYES)
-         {
-           recurse = true;
+                 std::string dirname = wx2std (FD->GetPath());
+                 bool recurse =  isNeedRecursive(dirname);
+                 if (recurse)
+                {
+             recurse = wxMessageBox(_T("Recurse into sub-directories ?"),  _T("Scan directory"),        wxYES_NO,this ) == wxYES ? true : false;
+                }
+               
+               wxBusyCursor busy;
+               wxString title(_T("Adding directory"));
+               if (recurse) 
+               title = _T("Adding directory (recursive)");
+               mProgressDialog = 
+               new wxProgressDialog(_T("Adding directory"),
+                                       _T(""),
+                                       1000,
+                                       this,
+                                       wxPD_ELAPSED_TIME |
+                                       //                             wxPD_ESTIMATED_TIME | 
+                                       //                             wxPD_REMAINING_TIME |
+                                       wxPD_CAN_ABORT );
+               
+               mCurrentDirectory = FD->GetPath();  
+               
+               // TO DO : select the current tree handler
+               mGimmick->AddDir("Local database",dirname,recurse);
+               
+               mProgressDialog->Pulse(_T("Updating view..."));
+               
+               UpdateTreeViewLevel("Local database",1);
+               delete mProgressDialog;
+               DisplayAddSummary();
+
          }
-       
-       wxBusyCursor busy;
-       wxString title(_T("Adding directory"));
-       if (recurse) 
-         title = _T("Adding directory (recursive)");
-       mProgressDialog = 
-         new wxProgressDialog(_T("Adding directory"),
-                              _T(""),
-                              1000,
-                              this,
-                              wxPD_ELAPSED_TIME |
-                              //                              wxPD_ESTIMATED_TIME | 
-                              //                              wxPD_REMAINING_TIME |
-                              wxPD_CAN_ABORT );
-       std::string dirname = wx2std (FD->GetPath()) ;
-       mCurrentDirectory = FD->GetPath();  
-       
-       // TO DO : select the current tree handler
-       mGimmick->AddDir("Local database",dirname,recurse);
-       
-       mProgressDialog->Pulse(_T("Updating view..."));
-       
-       UpdateTreeViewLevel("Local database",1);
-       delete mProgressDialog;
-       DisplayAddSummary();
-      }
+    mViewer->StartPlayer();
+  }
+
+    //=================================================
+   // Test a directory to know if contains sub-directory to analyze
+  bool WxGimmickView::isNeedRecursive(std::string i_name)
+  {
+      boost::filesystem::directory_iterator iter(i_name), end_iter;
+         bool bfindir = false;
+                 for(; iter != end_iter; ++iter)
+                 {
+                         if(boost::filesystem::is_directory(*iter))
+                         {
+                                 return true;
+                         }
+                 }
+                 return false;
   }
   //=================================================
 
@@ -557,7 +581,7 @@ namespace creaImageIO
   //=================================================
   void WxGimmickView::OnRemove(wxCommandEvent& event)
   {
-       //TODO Select current tree handler       
+       //TODO Select current tree handler       
     wxBusyCursor busy;
     GetTreeViewMap()["Local database"]->RemoveSelected();
 
@@ -571,7 +595,8 @@ namespace creaImageIO
   {
 
     char mess[200];
-    sprintf(mess,"%i dirs - %i files - %i handled - %i added",
+   
+       sprintf(mess,"%i dirs : %i files :\n            %i handled - %i added",
           p.GetNumberScannedDirs(),
           p.GetNumberScannedFiles(),
           p.GetNumberHandledFiles(),