]> Creatis software - clitk.git/blob - vv/vvToolManager.h
bugfix in cluster jobs and submission script
[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://www.centreleonberard.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 class QString;
25 class vvToolBaseBase;
26
27 //------------------------------------------------------------------------------
28 // Manage a list of ToolCreator. Each tool will be automagically
29 // inserted into a list at construction time, before main. Then the
30 // MainWindow will call the 'Initialize' to insert the tool in the
31 // menu bar.
32 class vvToolManager {
33
34 public:
35
36   /// Get or build unique instance with this method
37   static vvToolManager * GetInstance();  
38
39   /// Add a tool creator in the list (called before main, via static member initialization)
40   static void AddTool(vvToolCreatorBase * v);
41
42   /// Called in MainWindow, insert all tools into the menu
43   static void InsertToolsInMenu(vvMainWindowBase * m);
44   
45   /// Called in MainWindow, make the tools enabled/disabled
46   static void EnableToolsInMenu(vvMainWindowBase * m, bool enable);
47
48   std::vector<vvToolCreatorBase *> & GetListOfTools() { return mListOfTools; }
49
50   vvToolCreatorBase * GetToolCreatorFromName(QString toolTypeName);
51
52 protected:
53
54   /// Singleton object pointer
55   static vvToolManager * mSingleton;
56
57   /// list of all tool creators
58   std::vector<vvToolCreatorBase *> mListOfTools;
59 };
60 //------------------------------------------------------------------------------
61
62 #endif
63