]> Creatis software - clitk.git/blobdiff - vv/vvToolWidgetBase.cxx
- new multiple input selector
[clitk.git] / vv / vvToolWidgetBase.cxx
index 080e29857e45e999aedd82a415f9c30c0aee7323..e08d54f9b3b6ef85a1cb38f497b84d2caefe38a3 100644 (file)
@@ -3,8 +3,8 @@
   Program:   vv
   Module:    $RCSfile: vvToolWidgetBase.cxx,v $
   Language:  C++
-  Date:      $Date: 2010/03/01 15:38:09 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2010/03/17 11:22:18 $
+  Version:   $Revision: 1.3 $
   Author :   David Sarrut (david.sarrut@creatis.insa-lyon.fr)
 
   Copyright (C) 2008
@@ -41,6 +41,7 @@ vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f)
   mMainWindowBase = parent;
   setModal(false);
   setAttribute(Qt::WA_DeleteOnClose);
+  mCurrentSlicerManager = 0;
   
   // GUI Initialization
   setupUi(this);
@@ -66,10 +67,59 @@ vvToolWidgetBase::~vvToolWidgetBase() {
 //------------------------------------------------------------------------------
 
 
+//------------------------------------------------------------------------------
+// void vvToolWidgetBase::SetNumberOfNeededInputs(int nb) {
+//   mNumberOfInputs = nb;
+//   mListOfFilters.resize(nb);
+//   for(int i=0; i<mNumberOfInputs; i++) mListOfFilters[i] = 0;
+// }
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolWidgetBase::AddInputSelector(clitk::ImageToImageGenericFilterBase * f) {
+  DD("AddInputSelector with filter");
+  DD(mMainWindowBase->GetSlicerManagers().size());
+  int j=0;
+  mFilter = f;
+  mSlicerManagersCompatible.clear();
+  //  mToolInputSelectionWidget->setToolTip(QString("%1").arg(mFilter->GetAvailableImageTypes().c_str()));
+  for(unsigned int i=0; i<mMainWindowBase->GetSlicerManagers().size(); i++) {
+    DD(i);
+    vvImage * s = mMainWindowBase->GetSlicerManagers()[i]->GetImage();
+    if (mFilter->CheckImageType(s->GetNumberOfDimensions(), 
+                               s->GetNumberOfScalarComponents(), 
+                               s->GetScalarTypeAsString())) {
+      mSlicerManagersCompatible.push_back(mMainWindowBase->GetSlicerManagers()[i]);
+      if ((int)i == mMainWindowBase->GetSlicerManagerCurrentIndex()) mCurrentCompatibleIndex = j;
+      j++;
+    }
+  }
+  mToolInputSelectionWidget->AddInputSelector(mSlicerManagersCompatible, mCurrentCompatibleIndex);
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolWidgetBase::AddInputSelector() {
+  DD("AddInput without filter");
+  DD(mMainWindowBase->GetSlicerManagers().size());
+  mSlicerManagersCompatible.clear();
+  for(unsigned int i=0; i<mMainWindowBase->GetSlicerManagers().size(); i++) {
+    mSlicerManagersCompatible.push_back(mMainWindowBase->GetSlicerManagers()[i]);
+  }
+  mToolInputSelectionWidget->AddInputSelector(mMainWindowBase->GetSlicerManagers(),
+                                             mMainWindowBase->GetSlicerManagerCurrentIndex());
+}
+//------------------------------------------------------------------------------
+
+
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::show() {
  if (!mIsInitialized) {
-   InitializeInputs();
+   DD("show -> init");
+   mToolInputSelectionWidget->Initialize();
+   mIsInitialized = true;
  }
  QDialog::show();
 }
@@ -78,6 +128,7 @@ void vvToolWidgetBase::show() {
 
 //------------------------------------------------------------------------------
 bool vvToolWidgetBase::close() {
+  DD("vvToolWidgetBase::close()");
   return QDialog::close();
 }
 //------------------------------------------------------------------------------
@@ -85,6 +136,7 @@ bool vvToolWidgetBase::close() {
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::AnImageIsBeingClosed(vvSlicerManager * m) {
+   mToolInputSelectionWidget->AnImageIsBeingClosed(m);
   if (m == mCurrentSlicerManager) {
     close();
   }
@@ -94,17 +146,18 @@ void vvToolWidgetBase::AnImageIsBeingClosed(vvSlicerManager * m) {
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::InitializeInputs() {
+  /*
   if (mFilter) {
     int j=0;
     mToolInputSelectionWidget->setToolTip(QString("%1").arg(mFilter->GetAvailableImageTypes().c_str()));
     for(unsigned int i=0; i<mMainWindowBase->GetSlicerManagers().size(); i++) {
       vvImage * s = mMainWindowBase->GetSlicerManagers()[i]->GetImage();
       if (mFilter->CheckImageType(s->GetNumberOfDimensions(), 
-                                  s->GetNumberOfScalarComponents(), 
-                                  s->GetScalarTypeAsString())) {
-        mSlicerManagersCompatible.push_back(mMainWindowBase->GetSlicerManagers()[i]);
-        if ((int)i == mMainWindowBase->GetSlicerManagerCurrentIndex()) mCurrentCompatibleIndex = j;
-        j++;
+                                 s->GetNumberOfScalarComponents(), 
+                                 s->GetScalarTypeAsString())) {
+       mSlicerManagersCompatible.push_back(mMainWindowBase->GetSlicerManagers()[i]);
+       if ((int)i == mMainWindowBase->GetSlicerManagerCurrentIndex()) mCurrentCompatibleIndex = j;
+       j++;
       }
     }
   }
@@ -113,21 +166,53 @@ void vvToolWidgetBase::InitializeInputs() {
     mCurrentCompatibleIndex = mMainWindowBase->GetSlicerManagerCurrentIndex();
   }
   mToolInputSelectionWidget->Initialize(mSlicerManagersCompatible, 
-                                        mCurrentCompatibleIndex);
+                                       mCurrentCompatibleIndex);
   mIsInitialized = true;
+  */
 }
 //------------------------------------------------------------------------------
 
 
+//------------------------------------------------------------------------------
+// void vvToolWidgetBase::SetNumberOfNeededInputs(int i) {
+//   DD("SetNumberOfNeededInputs");
+//   DD(i);
+// }
+//------------------------------------------------------------------------------
+
+
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::InputIsSelected() {
-  // Common
-  int index = mToolInputSelectionWidget->GetSelectedInputIndex();
-  mCurrentSlicerManager = mSlicerManagersCompatible[index];
+  DD("InputIsSelected");
+  buttonBox->setEnabled(true);
+  std::vector<vvSlicerManager*> & l = mToolInputSelectionWidget->GetSelectedInputs();
+  mCurrentSlicerManager = l[0];
   mCurrentImage = mCurrentSlicerManager->GetImage();
   mToolWidget->setEnabled(true);
   if (!mCurrentSlicerManager) close();
-  InputIsSelected(mCurrentSlicerManager);
+  if (l.size() == 1) InputIsSelected(mCurrentSlicerManager);
+  else InputIsSelected(l);
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolWidgetBase::InputIsSelected(vvSlicerManager * m) {
+  std::cerr << "You MUST overwrite this method vvToolWidgetBase::InputIsSelected(vvSlicerManager * m) if you use one single input" << std::endl;
+  exit(0);
 }
 //------------------------------------------------------------------------------
 
+
+//------------------------------------------------------------------------------
+void vvToolWidgetBase::InputIsSelected(std::vector<vvSlicerManager*> & l) {
+  buttonBox->setEnabled(true);
+  DD("InputIsSelected(vector)");
+  DD(l.size());
+  if (l.size() == 1) InputIsSelected(l[0]);
+  else {
+  std::cerr << "You MUST overwrite this method vvToolWidgetBase::InputIsSelected(vector<vvSlicerManager *> m) if you use several input" << std::endl;
+  exit(0);
+  }
+}
+//------------------------------------------------------------------------------