]> Creatis software - clitk.git/blob - vv/vvToolManager.h
added the new headers
[clitk.git] / vv / vvToolManager.h
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ======================================================================-====*/
18 #ifndef VVTOOLMANAGER_H
19 #define VVTOOLMANAGER_H
20 #include "clitkCommon.h"
21
22 class vvToolCreatorBase;
23 class vvMainWindowBase;
24
25 //------------------------------------------------------------------------------
26 // Manage a list of ToolCreator. Each tool will be automagically
27 // inserted into a list at construction time, before main. Then the
28 // MainWindow will call the 'Initialize' to insert the tool in the
29 // menu bar.
30 class vvToolManager {
31
32 public:
33
34   /// Get or build unique instance with this method
35   static vvToolManager * GetInstance();  
36
37   /// Add a tool creator in the list (called before main, via static member initialization)
38   static void AddTool(vvToolCreatorBase * v);
39
40   /// Called in MainWindow, insert all tools into the menu
41   static void InsertToolsInMenu(vvMainWindowBase * m);
42   
43 protected:
44
45   /// Singleton object pointer
46   static vvToolManager * mSingleton;
47
48   /// list of all tool creators
49   std::vector<vvToolCreatorBase *> mListOfTools;
50 };
51 //------------------------------------------------------------------------------
52
53 #endif
54