#define __creaImageIOGimmick_h_INCLUDED__
#include <creaImageIOSQLiteTreeHandler.h>
+#include <creaImageIOTreeHandlerImageAdder.h>
+#include <creaImageIOTimestampDatabaseHandler.h>
+#include <creaImageIOSynchron.h>
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
/// 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.)
- bool Initialize();
+ void Initialize();
/// Finalize (closes databases, etc.)
- bool Finalize();
+ void Finalize();
/// Sets level for messages "Gimmick!"
- void SetMessageLevel(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);
+
+ /// Removes a file from the given TreeHandler
+ void RemoveFile(const std::string& d,
+ const tree::Node* & filename);
+
+ ///Synchronizes the loaded data with the database. If remove is true the database will be updated, otherwise
+ ///only a warning sign will be issued
+ std::string Synchronize(bool repair, bool checkAttributes);
+
+ /// 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_name, 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();
- bool CreateUserSettingsDirectory();
+ 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
//=======================================================================