]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmick.cpp
Fixed a bug on destroying Gimmick
[creaImageIO.git] / src2 / creaImageIOGimmick.cpp
index b30fbc18ba9a4fa5d9704fae24640b158b75cb1b..2ed5b0c72f115c9e4bbdb593b93e67cf57220c58 100644 (file)
@@ -13,6 +13,8 @@ namespace creaImageIO
     : mImageAdder(0)
   {    
     RegisterGimmickMessageTypes();
+       mSettings=0;
+       mSynchronizer=0;
   }
   //==============================================================
 
@@ -21,9 +23,15 @@ namespace creaImageIO
   //==============================================================
   Gimmick::~Gimmick()
   {
+        if(mSettings!=0)
+         {
          mSettings->writeSettingsFile();
       delete mSettings;
+         }
+         if(mSynchronizer!=0)
+         {
          delete mSynchronizer;
+         }
   }
   //==============================================================
   
@@ -285,6 +293,7 @@ namespace creaImageIO
   {
     GimmickMessage(2,"Adding files to '"<<d<<"'"<<std::endl);
  
+       mImageAdder.SetCurrentDatabase(d);
     mImageAdder.SetTreeHandler(GetTreeHandler(d));
        mImageAdder.SetTimestampHandler(mTimestampDatabase);
        mImageAdder.SetSynchronizer(mSynchronizer);
@@ -302,6 +311,7 @@ namespace creaImageIO
                   <<recurse<<std::endl);
 
        TreeHandler * handler=GetTreeHandler(d);
+       mImageAdder.SetCurrentDatabase(d);
     mImageAdder.SetTreeHandler(handler);
        mImageAdder.SetTimestampHandler(mTimestampDatabase);
        mImageAdder.SetSynchronizer(mSynchronizer);
@@ -314,17 +324,31 @@ namespace creaImageIO
   void Gimmick::RemoveFile(const std::string& d, 
                           tree::Node* node)
   {
+         mImageAdder.SetCurrentDatabase(d);
          mImageAdder.SetSynchronizer(mSynchronizer);
-         mTimestampDatabase->RemoveNode("PATH",node);
+         mTimestampDatabase->RemoveNode("PATH",node,d);
          mImageAdder.RemoveFile(node);
   }
   //========================================================================
 
   //========================================================================
  
-  std::string Gimmick::Synchronize(bool repair, bool checkAttributes)
+  void Gimmick::CopyFiles(const std::vector<std::string>& filenames, const std::string& d )
+  {
+         TreeHandler * handler=GetTreeHandler(d);
+         mImageAdder.SetCurrentDatabase(d);
+         mImageAdder.SetTreeHandler(handler);
+         mImageAdder.SetTimestampHandler(mTimestampDatabase);
+         mImageAdder.SetSynchronizer(mSynchronizer);
+         mImageAdder.CopyFiles(filenames, mSettings->getValue(SETTINGS_COPY_PATH));
+  }
+
+  //========================================================================
+  std::string Gimmick::Synchronize(const std::string& d, bool repair, bool checkAttributes)
   {
-         TreeHandler * handler=GetTreeHandler("Local database");
+         TreeHandler * handler=GetTreeHandler(d);
+         mImageAdder.SetCurrentDatabase(d);
          mImageAdder.SetTreeHandler(handler);
          mImageAdder.SetTimestampHandler(mTimestampDatabase);
          mImageAdder.SetSynchronizer(mSynchronizer);