]> Creatis software - clitk.git/blobdiff - vv/vvToolWidgetBase.h
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvToolWidgetBase.h
index 225b5f2ea4f5a0392d2c12255ed5d5ccd7d394f5..7a3a5dfdc6e6ac692b58641e628250c72f4cb535 100644 (file)
@@ -1,68 +1,88 @@
 /*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-  Program:   vv
-  Module:    $RCSfile: vvToolWidgetBase.h,v $
-  Language:  C++
-  Date:      $Date: 2010/02/24 11:43: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) 2010
-  Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
-  CREATIS                   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.
+  It is distributed under dual licence
 
-  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/>.
-
-  =========================================================================*/
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
 
 #ifndef VVTOOLWIDGETBASE_H
 #define VVTOOLWIDGETBASE_H
 
+#include <QtGlobal>
+#if QT_VERSION >= 0x050000
+#include <QtUiPlugin/QDesignerExportWidget>
+#else
 #include <QtDesigner/QDesignerExportWidget>
+#endif
 #include "ui_vvToolWidgetBase.h"
 #include "clitkImageToImageGenericFilter.h"
+
+// qt
+ #include <QCloseEvent>
+
 class vvMainWindowBase;
 
 //------------------------------------------------------------------------------
 class vvToolWidgetBase:
-  public QDialog
+  public QWidget
   public Ui::vvToolWidgetBase 
 {
   Q_OBJECT
   public:
 
-  vvToolWidgetBase(vvMainWindowBase * parent=0, Qt::WindowFlags f=0);
-  ~vvToolWidgetBase();
+  vvToolWidgetBase(vvMainWindowBase * parent=0, Qt::WindowFlags f=Qt::Dialog, bool initialize=true); // default is a dialog
+  virtual ~vvToolWidgetBase();
 
-  virtual void InputIsSelected(vvSlicerManager *m) = 0;
+  virtual void InputIsSelected(vvSlicerManager *m);
+  virtual void InputIsSelected(std::vector<vvSlicerManager*> & l);
+  void AddInputSelector(QString s, clitk::ImageToImageGenericFilterBase * f, bool allowSkip=false);
+  void AddInputSelector(QString s, bool allowSkip=false);
+  void HideInputSelector();
+  void accept();
+  void reject();
 
 public slots:
   virtual void apply() = 0;
+  virtual bool close();
   void InputIsSelected();
-  void AnImageIsBeingClosed(vvSlicerManager * m);
+  virtual void AnImageIsBeingClosed(vvSlicerManager * m);
+  virtual void SelectedImageHasChanged(vvSlicerManager * m);
   void show();
-  virtual bool close();
+  virtual void keyPressEvent(QKeyEvent *event);
 
 protected:
+  virtual void Initialization();
   void InitializeInputs();
   Ui::vvToolWidgetBase ui;
-  clitk::ImageToImageGenericFilterBase * mFilter;
-  vvMainWindowBase * mMainWindowBase;
+  clitk::ImageToImageGenericFilterBase::Pointer mFilter;
+  vvMainWindowBase * mMainWindow;
   std::vector<vvSlicerManager*> mSlicerManagersCompatible;
   vvSlicerManager * mCurrentSlicerManager;
   int mCurrentCompatibleIndex;
   vvImage * mCurrentImage;
   bool mIsInitialized;
+  QWidget * mWidgetForTab;
+  
+  // The static members manage all tool instances
+  static QWidget * mStaticWidgetForTab; // <-- MUST BE CHANGED IN VECTOR 
+  static int mTabNumber;
+  static QVBoxLayout * mStaticVerticalLayout;  // <-- MUST BE CHANGED IN VECTOR 
+  static bool mIsAnotherToolWaitInput;
+  virtual void CheckInputList(std::vector<vvSlicerManager*> & l, int & index) { }
+  virtual void closeEvent(QCloseEvent *event);
+  void SwapCurrentWidget();
+  bool mPreventToUseTwoToolsOnSameInput;
 
 }; // end class vvToolWidgetBase
 //------------------------------------------------------------------------------