]> Creatis software - clitk.git/blobdiff - vv/vvToolManager.h
Merge branch 'master' of git://git.creatis.insa-lyon.fr/clitk
[clitk.git] / vv / vvToolManager.h
index 8d8c1da9a50bf05812044520bf783ee9b5901e08..26b99c00f4f729f54b1783bacf36972f0389fac9 100644 (file)
@@ -1,38 +1,28 @@
 /*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-  Program:   vv
-  Module:    $RCSfile: vvToolManager.h,v $
-  Language:  C++
-  Date:      $Date: 2010/02/03 10:54:08 $
-  Version:   $Revision: 1.2 $
-  Author :   David Sarrut (david.sarrut@creatis.insa-lyon.fr)
+  Authors belong to: 
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
+  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
-  Copyright (C) 2008
-  Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
-  CREATIS-LRMN http://www.creatis.insa-lyon.fr
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the copyright notices for more information.
 
-  This program is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, version 3 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-  =========================================================================*/
+  It is distributed under dual licence
 
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
 #ifndef VVTOOLMANAGER_H
 #define VVTOOLMANAGER_H
-
-#include "vvToolCreatorBase.h"
 #include "clitkCommon.h"
 
 class vvToolCreatorBase;
-class vvMainWindow;
+class vvMainWindowBase;
+class QString;
+class vvToolBaseBase;
 
 //------------------------------------------------------------------------------
 // Manage a list of ToolCreator. Each tool will be automagically
@@ -40,15 +30,32 @@ class vvMainWindow;
 // MainWindow will call the 'Initialize' to insert the tool in the
 // menu bar.
 class vvToolManager {
+
 public:
-  // Functions
+
+  /// Get or build unique instance with this method
   static vvToolManager * GetInstance();  
+
+  /// Add a tool creator in the list (called before main, via static member initialization)
   static void AddTool(vvToolCreatorBase * v);
-  static void Initialize(vvMainWindow * m);
-  static void UpdateEnabledTool();
-  // Variables
-   std::vector<vvToolCreatorBase *> mListOfTools;
+
+  /// Called in MainWindow, insert all tools into the menu
+  static void InsertToolsInMenu(vvMainWindowBase * m);
+  
+  /// Called in MainWindow, make the tools enabled/disabled
+  static void EnableToolsInMenu(vvMainWindowBase * m, bool enable);
+
+  std::vector<vvToolCreatorBase *> & GetListOfTools() { return mListOfTools; }
+
+  vvToolCreatorBase * GetToolCreatorFromName(QString toolTypeName);
+
+protected:
+
+  /// Singleton object pointer
   static vvToolManager * mSingleton;
+
+  /// list of all tool creators
+  std::vector<vvToolCreatorBase *> mListOfTools;
 };
 //------------------------------------------------------------------------------