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