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