]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmick.cpp
no message
[creaImageIO.git] / src2 / creaImageIOGimmick.cpp
index 2ed5b0c72f115c9e4bbdb593b93e67cf57220c58..5aa2c105cb4b5985cdc797719bd622403cd3038b 100644 (file)
@@ -4,6 +4,10 @@
 #include <boost/filesystem.hpp>
 #include <boost/algorithm/string.hpp>
 
+#ifndef PATH_MAX // If not defined yet : do it 
+#  define PATH_MAX 2048
+#endif
+
 namespace creaImageIO
 {
 
@@ -39,7 +43,7 @@ namespace creaImageIO
   //==============================================================
   void Gimmick::Initialize()
   {
-         std::string i_nameDB = "Local database";
+       std::string i_nameDB = "Local database";
     // Create the UserSettings dir if does not exist
     CreateUserSettingsDirectory();
     // Sets the current directory to the home dir
@@ -51,7 +55,11 @@ namespace creaImageIO
 
        std::string dbpath = GetLocalDatabasePath();
     // Create or open local database
-       mLocalDatabase = createDB(i_nameDB, mCurrentDirectory + "\\.gimmick\\localdatabase_Descriptor.txt", dbpath);
+       std::string dpath= mCurrentDirectory + "/.gimmick/localdatabase_Descriptor.txt";
+       boost::algorithm::replace_all( dpath,
+                                      INVALID_FILE_SEPARATOR , 
+                                      VALID_FILE_SEPARATOR);
+       mLocalDatabase = createDB(i_nameDB, dpath, dbpath);
     // Add it to the TreeHandlerMap
     mTreeHandlerMap[i_nameDB] = mLocalDatabase;
     
@@ -201,6 +209,7 @@ namespace creaImageIO
   }
   //================================================================
 
+
   //================================================================
   const std::string& Gimmick::GetLocalDatabasePath()
   {
@@ -245,6 +254,28 @@ namespace creaImageIO
            GimmickError("ERROR CREATING '"<<GetUserSettingsDirectory()<<"'");
          }
       }
+
+       std::string setDir=GetUserSettingsDirectory();
+       boost::algorithm::replace_all( setDir,
+                                      INVALID_FILE_SEPARATOR , 
+                                      VALID_FILE_SEPARATOR);
+       setDir+="localdatabase_Descriptor.txt";
+       //if(!boost::filesystem::is_regular_file(setDir))  //JPRX
+       if(!boost::filesystem::is_regular(setDir))
+       {
+               char name[PATH_MAX];
+//EED          int err = GetBinaryDirectory(name, PATH_MAX);
+               crea::System::GetAppPath(name,PATH_MAX);
+               
+               std::string path=name;
+               path=path.substr(0,path.size()-1);
+               path=path.substr(0,path.find_last_of("/"));
+               path+="/data/localdatabase_Descriptor.txt";
+               boost::algorithm::replace_all( path,
+                                               INVALID_FILE_SEPARATOR , 
+                                               VALID_FILE_SEPARATOR);
+               boost::filesystem::copy_file(path,setDir);
+       }
   }
   //========================================================================
 
@@ -362,6 +393,62 @@ namespace creaImageIO
     GetTreeHandler(d)->GetTree().Print();
   }
   //========================================================================
+
+  void Gimmick::GetSetting(const std::string& name, std::string& value)
+  {
+         value = mSettings->getValue(name);
+  }
+  //========================================================================
+
+  //========================================================================
+
+  void Gimmick::GetAttributes(const std::string& d, 
+         const std::string& filename, 
+         const std::vector<std::string>& params, 
+         std::vector<std::string>& results)
+  {
+         TreeHandler * handler=GetTreeHandler(d);
+         mImageAdder.SetCurrentDatabase(d);
+         mImageAdder.SetTreeHandler(handler);
+         mImageAdder.SetTimestampHandler(mTimestampDatabase);
+         mImageAdder.SetSynchronizer(mSynchronizer);
+         mImageAdder.GetAttributes(params, filename, results);
+  }
+  //========================================================================
+
+  //========================================================================
+
+  void Gimmick::UpdateSetting(const std::string& name, const std::string& value)
+  {
+         mSettings->updateSetting(name,value);
+         mSettings->writeSettingsFile();
+  }
+  //========================================================================
+
+  void Gimmick::DeleteDrive(const std::string& drive)
+  {
+         for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
+           it!= mTreeHandlerMap.end(); ++it)
+          {
+                  mImageAdder.SetTreeHandler(it->second);
+                  mImageAdder.DeleteDriveFromMainDB(drive);
+          }
+         mImageAdder.SetTimestampHandler(mTimestampDatabase);
+         mImageAdder.SetSynchronizer(mSynchronizer);
+         mImageAdder.DeleteDriveFromOtherDB(drive);
+  }
+
+  //========================================================================
+  void Gimmick::EditField(tree::Node* node, const std::string& d, const std::string& name, const std::string& key, const std::string& val)
+  {
+         TreeHandler * handler=GetTreeHandler(d);
+         mImageAdder.SetCurrentDatabase(d);
+         mImageAdder.SetTreeHandler(handler);
+         mImageAdder.EditField(node,name,key,val);
+  }
+  //========================================================================
+
+
   /////////////////////////////////////////////////////////////////////////
   // add DB from Settings file                                                                              //
   // @param : -                                                                                                                         //