#ifndef __creaImageIOGimmick_h_INCLUDED__ #define __creaImageIOGimmick_h_INCLUDED__ #include #include #include #include namespace creaImageIO { /** * \defgroup Controller Controller */ /** * \defgroup View View */ /** * \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 */ //======================================================================= /// Central controler of the gimmick application class Gimmick { public: /// Ctor Gimmick(); /// 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(); /// Finalize (closes databases, etc.) void Finalize(); /// Sets level for messages "Gimmick!" 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 TreeHandlerMapType; /// Returns the TreeHandlerMap (ref) TreeHandlerMapType& GetTreeHandlerMap() { return mTreeHandlerMap; } /// Returns the TreeHandlerMap (const ref) const TreeHandlerMapType& GetTreeHandlerMap() const { return mTreeHandlerMap; } /// Add the files to the given TreeHandler void AddFiles(const std::string& handler, const std::vector& filenames); /// 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 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 //======================================================================= } // EO namespace creaImageIO // EOF #endif