/*=========================================================================
Program: vv
Module: $RCSfile: vvToolManager.h,v $
Language: C++
Date: $Date: 2010/02/24 11:42:42 $
Version: $Revision: 1.3 $
Author : David Sarrut (david.sarrut@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 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 .
=========================================================================*/
#ifndef VVTOOLMANAGER_H
#define VVTOOLMANAGER_H
#include "clitkCommon.h"
class vvToolCreatorBase;
class vvMainWindowBase;
//------------------------------------------------------------------------------
// Manage a list of ToolCreator. Each tool will be automagically
// inserted into a list at construction time, before main. Then the
// MainWindow will call the 'Initialize' to insert the tool in the
// menu bar.
class vvToolManager {
public:
/// 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);
/// Called in MainWindow, insert all tools into the menu
static void InsertToolsInMenu(vvMainWindowBase * m);
protected:
/// Singleton object pointer
static vvToolManager * mSingleton;
/// list of all tool creators
std::vector mListOfTools;
};
//------------------------------------------------------------------------------
#endif