]> Creatis software - creaImageIO.git/blob - src2/creaImageIOGimmick.h
81273b75b964a1cd8bbfd3262f7f501df42f1c8f
[creaImageIO.git] / src2 / creaImageIOGimmick.h
1 #ifndef __creaImageIOGimmick_h_INCLUDED__
2 #define __creaImageIOGimmick_h_INCLUDED__
3
4 #include <creaImageIOSQLiteTreeHandler.h>
5 #include <creaImageIOTreeHandlerImageAdder.h>
6
7 namespace creaImageIO
8 {
9         /**
10         * \defgroup Controller Controller
11         */
12         /**
13         * \defgroup View View
14         */
15         /**
16         * \defgroup Model Model
17         */
18         /**
19         * \defgroup GUI Top level graphical user interfaces
20         */
21
22         /**
23         * \ingroup Controller
24         */
25
26   //=======================================================================
27   /// Central controler of the gimmick application
28   class Gimmick
29   {
30   public:
31     /// Ctor
32     Gimmick();
33     /// Dtor
34     ~Gimmick();
35     
36     ///
37     typedef TreeHandlerImageAdder::Progress AddProgress;
38     typedef TreeHandlerImageAdder::ProgressCallbackType AddProgressCallbackType;
39     
40     /// Adds the function f to the list of functions to call 
41     /// when addition operations progres.
42     /// f is of type AddProgressCallbackType which is:
43     /// void (*AddProgressCallbackType)(AddProgress&)
44     /// To pass a member function 'f' of an instance 'c' of a class 'C' 
45     /// as callback you have to 'bind' it, i.e. call:
46     /// ConnectAddProgressObserver ( boost::bind( &C::f , c, _1 ) );
47      void ConnectAddProgressObserver( AddProgressCallbackType callback )
48     { mImageAdder.ConnectProgressObserver(callback); }
49     
50
51     ///
52     const AddProgress& GetAddProgress() const { return mImageAdder.GetProgress(); }
53
54     /// Initialize (read/creates databases, etc.)
55     void Initialize();
56     
57     /// Finalize (closes databases, etc.)
58     void Finalize();
59
60     /// Sets level for messages "Gimmick!" 
61     static void SetMessageLevel(int level);
62     /// Sets level for debug messages "Gimmick! DEBUG" 
63     static void SetDebugMessageLevel(int level);
64     
65     /// Type of map from TreeHandler name to TreeHandler*
66     typedef std::map<std::string, TreeHandler*> TreeHandlerMapType;
67
68     /// Returns the TreeHandlerMap (ref)
69     TreeHandlerMapType& GetTreeHandlerMap() { return mTreeHandlerMap; }
70     /// Returns the TreeHandlerMap (const ref)
71     const TreeHandlerMapType& GetTreeHandlerMap() const
72     { return mTreeHandlerMap; }
73     
74
75     /// Add the files to the given TreeHandler
76     void AddFiles(const std::string& handler,
77                   const std::vector<std::string>& filenames);
78
79     /// Add a dir to the given TreeHandler
80     void AddDir(const std::string& handler, const std::string& path, 
81                 bool recurse);
82
83     /// Prints the tree handled by the handler
84     void Print(const std::string& handler);
85
86
87     /// Returns the TreeHandler with a given name
88     TreeHandler* GetTreeHandler(const std::string& name) const;
89     /// 
90     SQLiteTreeHandler* GetLocalDatabase() { return mLocalDatabase; }
91
92     const SQLiteTreeHandler* GetLocalDatabase() const 
93     { return mLocalDatabase; }
94
95     
96
97     /// 
98     const std::string& GetHomeDirectory();
99     const std::string& GetUserSettingsDirectory();
100     void CreateUserSettingsDirectory();
101     const std::string& GetLocalDatabasePath();
102
103
104     //=============================================
105   private:
106     SQLiteTreeHandler* mLocalDatabase;
107     TreeHandlerMapType mTreeHandlerMap;
108
109     std::string mCurrentDirectory;
110     std::string mHomeDirectory;
111     std::string mUserSettingsDirectory;
112     std::string mLocalDatabasePath;
113
114     TreeHandlerImageAdder mImageAdder;
115   };
116   // EO class Gimmick
117   //=======================================================================
118
119
120 } // EO namespace creaImageIO
121
122 // EOF
123 #endif  
124
125