]> Creatis software - clitk.git/blobdiff - vv/vvToolCreatorBase.cxx
script to easily create new clitk tools. Does not do vv tools yet
[clitk.git] / vv / vvToolCreatorBase.cxx
index 90c95a033d3abe768d56f6c54be3b5bb7ef9335e..e5d60bde56758cbde8adf32252e004563d7e1877 100644 (file)
@@ -1,3 +1,21 @@
+/*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
+
+  Authors belong to: 
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - CREATIS CNRS laboratory         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.
+
+  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
+======================================================================-====*/
+
 #include "vvToolCreatorBase.h"
 #include "vvToolManager.h"
 #include <QAction>
 
 //------------------------------------------------------------------------------
 vvToolCreatorBase::vvToolCreatorBase(QString name): mExperimental(false) { 
+  mUseContextMenu = false;
   mToolName = name;
   vvToolManager::GetInstance()->AddTool(this); 
 }
 //------------------------------------------------------------------------------
 
+//------------------------------------------------------------------------------
+void vvToolCreatorBase::MenuToolSlot() { 
+  mSender = QObject::sender(); 
+  MenuSpecificToolSlot(); 
+}
+//------------------------------------------------------------------------------
+
 
 //------------------------------------------------------------------------------
 void vvToolCreatorBase::InsertToolInMenu(vvMainWindowBase * m) { 
   mMainWindow = m; 
+  if (mUseContextMenu) {
+    InsertToolInContextMenu();
+    return; 
+  }
   // Create main action
   if (mToolIconFilename == "noicon") 
     mAction = new QAction(QString("&").append(mToolMenuName), this);
@@ -30,3 +60,23 @@ void vvToolCreatorBase::InsertToolInMenu(vvMainWindowBase * m) {
 } 
 //------------------------------------------------------------------------------
 
+
+//------------------------------------------------------------------------------
+void vvToolCreatorBase::InsertToolInContextMenu() { 
+  mMainWindow->GetContextMenu()->addMenu(mToolMenu);
+  for(unsigned int i=0; i<mListOfActions.size(); i++) {
+    connect(mListOfActions[i], SIGNAL(triggered()), this, SLOT(MenuToolSlot()));
+  }
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolCreatorBase::addMenuToContextMenu(QMenu * m) {
+  mToolMenu = m;
+  for(int i=0; i<m->actions().size(); i++) {
+    mListOfActions.push_back(m->actions()[i]);
+  }
+  mUseContextMenu = true;
+}
+//------------------------------------------------------------------------------