X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolInputSelectorWidget.cxx;h=ca1ed293ec30b5a30b948e43b4d3d85bb7de4922;hb=HEAD;hp=482c2410909d906ef230cd88de57b1a93a5e3133;hpb=98bdb72d057c122863776f8c3fb74659e8c87beb;p=clitk.git diff --git a/vv/vvToolInputSelectorWidget.cxx b/vv/vvToolInputSelectorWidget.cxx index 482c241..ca1ed29 100644 --- a/vv/vvToolInputSelectorWidget.cxx +++ b/vv/vvToolInputSelectorWidget.cxx @@ -1,110 +1,146 @@ /*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Program: vv - Module: $RCSfile: vvToolInputSelectorWidget.cxx,v $ - Language: C++ - Date: $Date: 2010/03/01 15:38:09 $ - Version: $Revision: 1.3 $ - 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. - - 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 . - - =========================================================================*/ + 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 +===========================================================================**/ #ifndef VVTOOLINPUTSELECTORWIDGET_CXX #define VVTOOLINPUTSELECTORWIDGET_CXX +#include "vvToolSimpleInputSelectorWidget.h" #include "vvToolInputSelectorWidget.h" #include "vvSlicerManager.h" //------------------------------------------------------------------------------ vvToolInputSelectorWidget::vvToolInputSelectorWidget(QWidget * parent, Qt::WindowFlags f): - QWidget(parent, f) { - setupUi(this); - + QWidget(parent, f) +{ + setupUi(this); setEnabled(true); + mNumberOfAcceptedInputs = 0; +} +//------------------------------------------------------------------------------ - // 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))); +//------------------------------------------------------------------------------ +int vvToolInputSelectorWidget::GetNumberOfInput() +{ + return mListOfSimpleInputWidget.size(); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -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::AddInputSelector(QString & s, + const std::vector & l, + int index, + bool allowSkip) +{ + // Create a input selector widget + vvToolSimpleInputSelectorWidget * input = new vvToolSimpleInputSelectorWidget; + mListOfSimpleInputWidget.push_back(input); + mSkipInput.push_back(false); + input->SetText(s); + input->EnableAllowSkip(allowSkip); + + // Copy the list of slicermanager + std::vector * ll = new std::vector; + for(unsigned int i=0; ipush_back(l[i]); + + // Add + input->SetInputList(*ll, index); + mVerticalLayout->addWidget(input); + + // Enable or disable + if (GetNumberOfInput() == 1) input->setEnabled(true); + else input->setEnabled(false); + + // Connect signals & slots + connect(input, SIGNAL(accepted()), this, SLOT(accept())); + connect(input, SIGNAL(rejected()), this, SLOT(reject())); + connect(input, SIGNAL(sigskip()), this, SLOT(skip())); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolInputSelectorWidget::Initialize() +{ + for(unsigned int i=0; iInitialize(); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolInputSelectorWidget::accept() +{ + mNumberOfAcceptedInputs++; + if (mNumberOfAcceptedInputs == GetNumberOfInput()) { + setEnabled(false); + emit accepted(); + } else if (mNumberOfAcceptedInputs < GetNumberOfInput()) { + mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(true); } } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvToolInputSelectorWidget::accept() { - mInputSelectionButtonBox->setEnabled(false); - mInputSequenceBox->setEnabled(false); - emit accepted(); +void vvToolInputSelectorWidget::reject() +{ + if (mNumberOfAcceptedInputs != 0) { + mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(false); + mListOfSimpleInputWidget[mNumberOfAcceptedInputs-1]->setEnabled(true); + mNumberOfAcceptedInputs--; + } else { + emit rejected(); + } } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvToolInputSelectorWidget::reject() { - emit rejected(); +void vvToolInputSelectorWidget::skip() +{ + mSkipInput[mNumberOfAcceptedInputs] = true; + accept(); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -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"); +std::vector & vvToolInputSelectorWidget::GetSelectedInputs() +{ + std::vector * l = new std::vector; + for(unsigned int i=0; ipush_back(mListOfSimpleInputWidget[i]->GetSelectedInput()); } - 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)); + return *l; } //------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +void vvToolInputSelectorWidget::AnImageIsBeingClosed(vvSlicerManager * m) +{ + // DD("TODO : verify that the image still exist !!"); + // for(int i=0; i< +} +//------------------------------------------------------------------------------ + + #endif