]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmick.h
Added Add DataBase event.
[creaImageIO.git] / src2 / creaImageIOGimmick.h
index cebcbd5870602d58eb82e6b094fd3ee963456f2b..b7fd64741dd2a1edd37fdb7da7f7c7f947fce298 100644 (file)
@@ -2,6 +2,9 @@
 #define __creaImageIOGimmick_h_INCLUDED__
 
 #include <creaImageIOSQLiteTreeHandler.h>
+#include <creaImageIOTreeHandlerImageAdder.h>
+#include <creaImageIOTimestampDatabaseHandler.h>
+#include <creaImageIOSynchronizer.h>
 
 namespace creaImageIO
 {
@@ -14,6 +17,18 @@ namespace creaImageIO
        /**
        * \defgroup Model Model
        */
+       /**
+       * \defgroup GUI Top level graphical user interfaces
+       */
+       /**
+       * \defgroup IO Image I/O classes
+       */
+       /**
+       * \defgroup Tree Attributed tree management
+       */
+       /**
+       * \defgroup Previewer Preview related
+       */
 
        /**
        * \ingroup Controller
@@ -29,6 +44,24 @@ namespace creaImageIO
     /// Dtor
     ~Gimmick();
     
+    ///
+    typedef TreeHandlerImageAdder::Progress AddProgress;
+    typedef TreeHandlerImageAdder::ProgressCallbackType AddProgressCallbackType;
+    
+    /// Adds the function f to the list of functions to call 
+    /// when addition operations progres.
+    /// f is of type AddProgressCallbackType which is:
+    /// void (*AddProgressCallbackType)(AddProgress&)
+    /// To pass a member function 'f' of an instance 'c' of a class 'C' 
+    /// as callback you have to 'bind' it, i.e. call:
+    /// ConnectAddProgressObserver ( boost::bind( &C::f , c, _1 ) );
+     void ConnectAddProgressObserver( AddProgressCallbackType callback )
+    { mImageAdder.ConnectProgressObserver(callback); }
+    
+
+    ///
+    const AddProgress& GetAddProgress() const { return mImageAdder.GetProgress(); }
+
     /// Initialize (read/creates databases, etc.)
     void Initialize();
     
@@ -36,37 +69,76 @@ namespace creaImageIO
     void Finalize();
 
     /// Sets level for messages "Gimmick!" 
-    void SetMessageLevel(int level);
-   /// Sets level for debug messages "Gimmick! DEBUG" 
-    void SetDebugMessageLevel(int level);
+    static void SetMessageLevel(int level);
+    /// Sets level for debug messages "Gimmick! DEBUG" 
+    static void SetDebugMessageLevel(int level);
+    
+    /// Type of map from TreeHandler name to TreeHandler*
+    typedef std::map<std::string, TreeHandler*> TreeHandlerMapType;
+
+    /// Returns the TreeHandlerMap (ref)
+    TreeHandlerMapType& GetTreeHandlerMap() { return mTreeHandlerMap; }
+    /// Returns the TreeHandlerMap (const ref)
+    const TreeHandlerMapType& GetTreeHandlerMap() const
+    { return mTreeHandlerMap; }
+    
 
-    /// Add a file to the local database
-    void AddFileToLocalDatabase(const std::string&);
-    /// Add a dir to the local database
-    void AddDirToLocalDatabase(const std::string&, bool recurse);
+    /// Add the files to the given TreeHandler
+    void AddFiles(const std::string& handler,
+                 const std::vector<std::string>& filenames);
 
-    ///
-    void PrintLocalDatabase();
+    /// Add a dir to the given TreeHandler
+    void AddDir(const std::string& handler, const std::string& path, 
+               bool recurse);
+
+       ///Synchronizes the loaded data with the database. If remove is true the database will be updated, otherwise 
+       ///only a warning sign will be issued
+       void Synchronize(bool update, TreeHandler* handler);
+
+    /// Prints the tree handled by the handler
+    void Print(const std::string& handler);
+       
+       ///create a DB from a given descriptor file and for a specific location
+       SQLiteTreeHandler *createDB(std::string &i_locDesc, std::string &i_locDB);
+
+       // add an existent DB 
+       void addDB(std::string &i_nameDB, std::string &i_locationDB);
+
+    /// Returns the TreeHandler with a given name
+    TreeHandler* GetTreeHandler(const std::string& name) const;
 
+       /// Returns the TimestampDatabase
+       TimestampDatabaseHandler* GetTimestampDatabase() const;
     /// 
     SQLiteTreeHandler* GetLocalDatabase() { return mLocalDatabase; }
 
-    const SQLiteTreeHandler* GetLocalDatabase() const { return mLocalDatabase; }
+    const SQLiteTreeHandler* GetLocalDatabase() const 
+    { return mLocalDatabase; }
+
+    
 
     /// 
     const std::string& GetHomeDirectory();
     const std::string& GetUserSettingsDirectory();
     void CreateUserSettingsDirectory();
     const std::string& GetLocalDatabasePath();
+       const std::string& GetTimestampDatabasePath();
+
 
+    //=============================================
   private:
     SQLiteTreeHandler* mLocalDatabase;
+       TimestampDatabaseHandler* mTimestampDatabase;
+    TreeHandlerMapType mTreeHandlerMap;
+       Synchronizer* mSynchronizer;
+
     std::string mCurrentDirectory;
     std::string mHomeDirectory;
     std::string mUserSettingsDirectory;
     std::string mLocalDatabasePath;
-    
+       std::string mTimestampDatabasePath;
+
+    TreeHandlerImageAdder mImageAdder;
   };
   // EO class Gimmick
   //=======================================================================