]> Creatis software - clitk.git/blobdiff - vv/vvToolManager.h
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvToolManager.h
index afd5936a484319702103ca5c04b3a958bf8749a8..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/01/29 13:54:37 $
-  Version:   $Revision: 1.1 $
-  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,25 +30,34 @@ 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
-  static 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;
+};
 //------------------------------------------------------------------------------
-// Static instances initialization (to put in main)
-#define TOOL_MANAGER_INITIALIZATION                                     \
-  vvToolManager* vvToolManager::mSingleton=0;                           \
-  std::vector<vvToolCreatorBase *> vvToolManager::mListOfTools;
-//------------------------------------------------------------------------------
-
 
 #endif