From: dsarrut Date: Wed, 17 Mar 2010 11:22:18 +0000 (+0000) Subject: new multiple input selector for default vvToolWidget X-Git-Tag: v1.2.0~762 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=1c8e61413a024c1f3a15f344dcceec45399911b5;p=clitk.git new multiple input selector for default vvToolWidget --- diff --git a/vv/CMakeLists.txt b/vv/CMakeLists.txt index 25b2770..b50d889 100644 --- a/vv/CMakeLists.txt +++ b/vv/CMakeLists.txt @@ -107,6 +107,7 @@ SET(vv_SRCS # vvToolFooWithWidgetBase.cxx vvToolCropImage.cxx vvToolBinarize.cxx + vvToolSimpleInputSelectorWidget.cxx vvToolInputSelectorWidget.cxx vvImageContour.cxx ) @@ -134,6 +135,7 @@ QT4_WRAP_CPP(vv_SRCS # vvToolFoo.h # vvToolFooWithWidgetBase.h vvToolBinarize.h + vvToolSimpleInputSelectorWidget.h vvToolInputSelectorWidget.h vvToolWidgetBase.h vvToolCropImage.h @@ -160,6 +162,7 @@ QT4_WRAP_UI(vv_UI_CXX # qt_ui/vvToolFoo.ui qt_ui/vvToolCropImage.ui qt_ui/vvToolBinarize.ui + qt_ui/vvToolSimpleInputSelectorWidget.ui qt_ui/vvToolInputSelectorWidget.ui ) diff --git a/vv/qt_ui/vvToolInputSelectorWidget.ui b/vv/qt_ui/vvToolInputSelectorWidget.ui index 775591a..96ae5ac 100644 --- a/vv/qt_ui/vvToolInputSelectorWidget.ui +++ b/vv/qt_ui/vvToolInputSelectorWidget.ui @@ -6,8 +6,8 @@ 0 0 - 276 - 98 + 676 + 381 @@ -21,64 +21,7 @@ false - - - 2 - - - - - Select input image - - - - 2 - - - - - - - - 11 - - - - - - - - - - - - - 11 - - - - QFrame::NoFrame - - - 3D image -Pixel type short -bla bla - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - + diff --git a/vv/qt_ui/vvToolWidgetBase.ui b/vv/qt_ui/vvToolWidgetBase.ui index 0effdb5..567b595 100644 --- a/vv/qt_ui/vvToolWidgetBase.ui +++ b/vv/qt_ui/vvToolWidgetBase.ui @@ -25,6 +25,9 @@ + + false + Qt::Horizontal @@ -34,10 +37,6 @@ - splitter - buttonBox - mToolInputSelectionWidget - groupBox diff --git a/vv/vvToolBinarize.cxx b/vv/vvToolBinarize.cxx index 09016f0..343350c 100644 --- a/vv/vvToolBinarize.cxx +++ b/vv/vvToolBinarize.cxx @@ -3,8 +3,8 @@ Program: vv Module: $RCSfile: vvToolBinarize.cxx,v $ Language: C++ - Date: $Date: 2010/03/05 10:32:33 $ - Version: $Revision: 1.11 $ + Date: $Date: 2010/03/17 11:22:18 $ + Version: $Revision: 1.12 $ Author : David Sarrut (david.sarrut@creatis.insa-lyon.fr) Copyright (C) 2008 @@ -76,7 +76,10 @@ vvToolBinarize::vvToolBinarize(vvMainWindowBase * parent, Qt::WindowFlags f) mBGSlider->SetText("Background value"); // Main filter - mFilter = new clitk::BinarizeImageGenericFilter; //DS PUT IN BASECLASS ? + mFilter = new clitk::BinarizeImageGenericFilter; + + // Set how many inputs are needed for this tool + AddInputSelector(mFilter); } //------------------------------------------------------------------------------ @@ -96,7 +99,8 @@ void vvToolBinarize::InteractiveDisplayToggled(bool b) { else { for(unsigned int i=0; ishowActors(); - mImageContourLower[i]->showActors(); + if (mRadioButtonLowerThan->isChecked()) + mImageContourLower[i]->showActors(); } if (mCurrentSlicerManager) mCurrentSlicerManager->Render(); @@ -127,6 +131,7 @@ bool vvToolBinarize::close() { //------------------------------------------------------------------------------ void vvToolBinarize::reject() { + DD("vvToolBinarize::reject"); RemoveVTKObjects(); return vvToolWidgetBase::reject(); } @@ -163,6 +168,10 @@ void vvToolBinarize::useFGBGtoggled(bool) { //------------------------------------------------------------------------------ +// void vvToolBinarize::InputIsSelected(std::vector & m) { +// DD("vvToolBinarize::InputIsSelected vector in binarize"); +// DD(m.size()); +// } void vvToolBinarize::InputIsSelected(vvSlicerManager * m) { mCurrentSlicerManager = m; diff --git a/vv/vvToolBinarize.h b/vv/vvToolBinarize.h index 4b0721f..fbc5a24 100644 --- a/vv/vvToolBinarize.h +++ b/vv/vvToolBinarize.h @@ -3,8 +3,8 @@ Program: vv Module: $RCSfile: vvToolBinarize.h,v $ Language: C++ - Date: $Date: 2010/03/05 10:32:33 $ - Version: $Revision: 1.8 $ + Date: $Date: 2010/03/17 11:22:18 $ + Version: $Revision: 1.9 $ Author : David Sarrut (david.sarrut@creatis.insa-lyon.fr) Copyright (C) 2010 @@ -51,6 +51,8 @@ class vvToolBinarize: static void Initialize(); void InputIsSet(bool b); void GetArgsInfoFromGUI(); + virtual void InputIsSelected(vvSlicerManager * m); + // virtual void InputIsSelected(std::vector & m); //----------------------------------------------------- public slots: @@ -60,7 +62,6 @@ class vvToolBinarize: void valueChangedT1(double v); void valueChangedT2(double v); void UpdateSlice(int slicer,int slices); - void InputIsSelected(vvSlicerManager * m); void enableLowerThan(bool b); void useFGBGtoggled(bool); void InteractiveDisplayToggled(bool b); diff --git a/vv/vvToolCropImage.cxx b/vv/vvToolCropImage.cxx index ba97489..b50e332 100644 --- a/vv/vvToolCropImage.cxx +++ b/vv/vvToolCropImage.cxx @@ -3,8 +3,8 @@ Program: vv Module: $RCSfile: vvToolCropImage.cxx,v $ Language: C++ - Date: $Date: 2010/03/01 15:38:09 $ - Version: $Revision: 1.3 $ + Date: $Date: 2010/03/17 11:22:18 $ + Version: $Revision: 1.4 $ Author : David Sarrut (david.sarrut@creatis.insa-lyon.fr) Copyright (C) 2008 @@ -51,6 +51,8 @@ vvToolCropImage::vvToolCropImage(vvMainWindowBase * parent, Qt::WindowFlags f): // GUI Initialization Ui_vvToolCropImage::setupUi(mToolWidget); + // Set how many inputs are needed for this tool + AddInputSelector(); } //------------------------------------------------------------------------------ @@ -191,6 +193,9 @@ void vvToolCropImage::InputIsSelected(vvSlicerManager * slicer) { mReducedExtent = mCurrentSlicerManager->GetImage()->GetFirstVTKImageData()->GetWholeExtent(); for(int i=0; i<6; i++) mInitialExtent[i] = mReducedExtent[i]; for(int i=0; iNumberOfSlicers(); i++) { + DD(i); + DD(mReducedExtent[i]); + DD(mInitialExtent[i]); mCurrentSlicerManager->GetSlicer(i)->EnableReducedExtent(true); } @@ -251,6 +256,7 @@ void vvToolCropImage::InputIsSelected(vvSlicerManager * slicer) { // connect(tmaxSlider, SIGNAL(valueChanged(int)), this, SLOT(sliderTMaxValueChanged(int))); // connect(mIntensitySlider, SIGNAL(valueChanged(double)), this, SLOT(autoCropValueChanged(double))); + UpdateExtent(); } //------------------------------------------------------------------------------ diff --git a/vv/vvToolInputSelectorWidget.cxx b/vv/vvToolInputSelectorWidget.cxx index 482c241..2579660 100644 --- a/vv/vvToolInputSelectorWidget.cxx +++ b/vv/vvToolInputSelectorWidget.cxx @@ -3,8 +3,8 @@ Program: vv Module: $RCSfile: vvToolInputSelectorWidget.cxx,v $ Language: C++ - Date: $Date: 2010/03/01 15:38:09 $ - Version: $Revision: 1.3 $ + Date: $Date: 2010/03/17 11:22:18 $ + Version: $Revision: 1.4 $ Author : David Sarrut (david.sarrut@creatis.insa-lyon.fr) Copyright (C) 2010 @@ -28,6 +28,7 @@ #ifndef VVTOOLINPUTSELECTORWIDGET_CXX #define VVTOOLINPUTSELECTORWIDGET_CXX +#include "vvToolSimpleInputSelectorWidget.h" #include "vvToolInputSelectorWidget.h" #include "vvSlicerManager.h" @@ -35,76 +36,112 @@ vvToolInputSelectorWidget::vvToolInputSelectorWidget(QWidget * parent, Qt::WindowFlags f): QWidget(parent, f) { setupUi(this); - setEnabled(true); + mNumberOfAcceptedInputs = 0; +} +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +int vvToolInputSelectorWidget::GetNumberOfInput() { + return mListOfSimpleInputWidget.size(); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolInputSelectorWidget::AddInputSelector(const std::vector & l, int index) { + DD("ICICICICICICICIC AddInputSelector ADD layout"); + DD(index); + DD(l.size()); + vvToolSimpleInputSelectorWidget * input = new vvToolSimpleInputSelectorWidget; + mListOfSimpleInputWidget.push_back(input); + + // copy list + std::vector * ll = new std::vector; + for(unsigned int i=0; ipush_back(l[i]); + + // add + input->SetInputList(*ll, index); + input->setObjectName(QString::fromUtf8("TOTO")); + mVerticalLayout->addWidget(input); + + // Enable or disable + if (GetNumberOfInput() == 1) input->setEnabled(true); + else input->setEnabled(false); + DD(GetNumberOfInput()); // Connect signals & slots - connect(mInputSelectionButtonBox, SIGNAL(accepted()), this, SLOT(accept())); - connect(mInputSelectionButtonBox, SIGNAL(rejected()), this, SLOT(reject())); - connect(mInputSequenceBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeInput(int))); + connect(input, SIGNAL(accepted()), this, SLOT(accept())); + connect(input, SIGNAL(rejected()), this, SLOT(reject())); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvToolInputSelectorWidget::Initialize(std::vector l, int index) { - mInputSequenceBox->clear(); - mSlicerManagerList = l; - mCurrentIndex = index; - for (unsigned int i = 0; i < mSlicerManagerList.size(); i++) { - mInputSequenceBox->addItem(mSlicerManagerList[i]->GetFileName().c_str()); - } - mInputSequenceBox->setCurrentIndex(mCurrentIndex); - if (mSlicerManagerList.size() == 0) { - // TODO !!! - DD("no input > error message"); - reject(); - } - if (mSlicerManagerList.size() == 1) { - accept(); - } +void vvToolInputSelectorWidget::Initialize() { + for(unsigned int i=0; iInitialize(); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void vvToolInputSelectorWidget::accept() { - mInputSelectionButtonBox->setEnabled(false); - mInputSequenceBox->setEnabled(false); - emit accepted(); + DD("vvToolInputSelectorWidget::accept"); + DD(mNumberOfAcceptedInputs); + mNumberOfAcceptedInputs++; + if (mNumberOfAcceptedInputs == GetNumberOfInput()) { + setEnabled(false); + emit accepted(); + } + else { + DD("accepted"); + // for(unsigned int i=mNumberOfAcceptedInputs; iInitialize(); + mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(true); + //} + } } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void vvToolInputSelectorWidget::reject() { - emit rejected(); + DD("vvToolInputSelectorWidget::reject"); + if (mNumberOfAcceptedInputs != 0) { + // for(unsigned int i=mNumberOfAcceptedInputs; iInitialize(); + DD(mNumberOfAcceptedInputs); + mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(false); + mListOfSimpleInputWidget[mNumberOfAcceptedInputs-1]->setEnabled(true); + mNumberOfAcceptedInputs--; + //} + } + else { + emit rejected(); + } } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvToolInputSelectorWidget::changeInput(int index) { - mCurrentIndex = index; - vvImage * mCurrentImage = mSlicerManagerList[index]->GetImage(); - unsigned int d = mCurrentImage->GetNumberOfDimensions(); - QString size; - QString spacing; - for(unsigned int i=0; iGetSize()[i])); - size.append("x"); - spacing.append(QString("%1").arg(mCurrentImage->GetSpacing()[i])); - spacing.append("x"); - } - size.append(QString("%1").arg(mCurrentImage->GetSize()[d-1])); - spacing.append(QString("%1").arg(mCurrentImage->GetSpacing()[d-1])); - mLabelInputInfo->setText(QString("Image: %1D %2 %3 %4") - .arg(d) - .arg(mCurrentImage->GetScalarTypeAsString().c_str()) - .arg(size) - .arg(spacing)); +std::vector & vvToolInputSelectorWidget::GetSelectedInputs() { + std::vector * l = new std::vector; + for(unsigned int i=0; ipush_back(mListOfSimpleInputWidget[i]->GetSelectedInput()); + return *l; } //------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +void vvToolInputSelectorWidget::AnImageIsBeingClosed(vvSlicerManager * m) { + DD("TODO : verify that the image still exist !!"); + // for(int i=0; i< +} +//------------------------------------------------------------------------------ + + #endif diff --git a/vv/vvToolInputSelectorWidget.h b/vv/vvToolInputSelectorWidget.h index 80a6bde..8aef39d 100644 --- a/vv/vvToolInputSelectorWidget.h +++ b/vv/vvToolInputSelectorWidget.h @@ -3,8 +3,8 @@ Program: vv Module: $RCSfile: vvToolInputSelectorWidget.h,v $ Language: C++ - Date: $Date: 2010/03/01 15:38:09 $ - Version: $Revision: 1.4 $ + Date: $Date: 2010/03/17 11:22:18 $ + Version: $Revision: 1.5 $ Author : David Sarrut (david.sarrut@creatis.insa-lyon.fr) Copyright (C) 2010 @@ -31,9 +31,9 @@ #include #include #include "ui_vvToolInputSelectorWidget.h" -#include "vvImage.h" class vvSlicerManager; +class vvToolSimpleInputSelectorWidget; //------------------------------------------------------------------------------ class vvToolInputSelectorWidget: public QWidget, private Ui::vvToolInputSelectorWidget @@ -43,24 +43,29 @@ class vvToolInputSelectorWidget: public QWidget, private Ui::vvToolInputSelector vvToolInputSelectorWidget(QWidget * parent=0, Qt::WindowFlags f=0); ~vvToolInputSelectorWidget() {} - void Initialize(std::vector l, int index); - int GetSelectedInputIndex() { return mCurrentIndex; } + void AddInputSelector(const std::vector & l, int index); + void Initialize(); + std::vector & GetSelectedInputs(); + void AnImageIsBeingClosed(vvSlicerManager * m); + int GetNumberOfInput(); public slots: - void accept(); + void accept(); // to change ! in something like acceptOneMoreInput void reject(); - void changeInput(int i); signals: void accepted(); void rejected(); protected: + void AddInputSelector(vvToolSimpleInputSelectorWidget * input, + std::vector l, int index); Ui::vvToolInputSelectorWidget ui; std::vector mSlicerManagerList; int mCurrentIndex; vvSlicerManager * mCurrentSliceManager; - + int mNumberOfAcceptedInputs; + std::vector mListOfSimpleInputWidget; }; // end class vvToolInputSelectorWidget //------------------------------------------------------------------------------ diff --git a/vv/vvToolWidgetBase.cxx b/vv/vvToolWidgetBase.cxx index 080e298..e08d54f 100644 --- a/vv/vvToolWidgetBase.cxx +++ b/vv/vvToolWidgetBase.cxx @@ -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; iGetSlicerManagers().size()); + int j=0; + mFilter = f; + mSlicerManagersCompatible.clear(); + // mToolInputSelectionWidget->setToolTip(QString("%1").arg(mFilter->GetAvailableImageTypes().c_str())); + for(unsigned int i=0; iGetSlicerManagers().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; iGetSlicerManagers().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; iGetSlicerManagers().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 & 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 & 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 m) if you use several input" << std::endl; + exit(0); + } +} +//------------------------------------------------------------------------------ diff --git a/vv/vvToolWidgetBase.h b/vv/vvToolWidgetBase.h index 4c5ca4d..6f8e23f 100644 --- a/vv/vvToolWidgetBase.h +++ b/vv/vvToolWidgetBase.h @@ -3,8 +3,8 @@ Program: vv Module: $RCSfile: vvToolWidgetBase.h,v $ Language: C++ - Date: $Date: 2010/03/01 07:37:25 $ - 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) 2010 @@ -44,7 +44,10 @@ class vvToolWidgetBase: vvToolWidgetBase(vvMainWindowBase * parent=0, Qt::WindowFlags f=0); ~vvToolWidgetBase(); - virtual void InputIsSelected(vvSlicerManager *m) = 0; + virtual void InputIsSelected(vvSlicerManager *m); + virtual void InputIsSelected(std::vector & l); + void AddInputSelector(clitk::ImageToImageGenericFilterBase * f); + void AddInputSelector(); public slots: virtual void apply() = 0;