X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolInputSelectorWidget.cxx;h=35de7bfb33c9f01f42393b1156c468c5860347d8;hb=505d6fd964a8813101ebcf1829b2d55968142f2c;hp=0cb8c01f528a700e653d308f12e99da3a96aeacc;hpb=f7dee5f397e4efa933ef32507698ff1c1e573c2e;p=clitk.git diff --git a/vv/vvToolInputSelectorWidget.cxx b/vv/vvToolInputSelectorWidget.cxx index 0cb8c01..35de7bf 100644 --- a/vv/vvToolInputSelectorWidget.cxx +++ b/vv/vvToolInputSelectorWidget.cxx @@ -1,120 +1,164 @@ /*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Program: vv - Module: $RCSfile: vvToolInputSelectorWidget.cxx,v $ - Language: C++ - Date: $Date: 2010/01/29 13:54: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://oncora1.lyon.fnclcc.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) { - DD("Initialize"); DD(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) +{ + // DD("ICICICICICICICIC AddInputSelector ADD layout"); + // DD(index); + //DD(l.size()); + vvToolSimpleInputSelectorWidget * input = new vvToolSimpleInputSelectorWidget; + mListOfSimpleInputWidget.push_back(input); + mSkipInput.push_back(false); + + input->SetText(s); + input->EnableAllowSkip(allowSkip); + + // 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(input, SIGNAL(accepted()), this, SLOT(accept())); + connect(input, SIGNAL(rejected()), this, SLOT(reject())); + connect(input, SIGNAL(sigskip()), this, SLOT(skip())); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolInputSelectorWidget::Initialize() +{ + // setWindowModality(Qt::WindowModal); + for(unsigned int i=0; iInitialize(); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvToolInputSelectorWidget::SetToolTip(QString s) { - // mLabelSelection->setToolTip(s); - //mInputSequenceBox->setToolTip(s); - setToolTip(s); +void vvToolInputSelectorWidget::accept() +{ + // setWindowModality(Qt::NonModal); + // 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::accept() { - mInputSelectionButtonBox->setEnabled(false); - mInputSequenceBox->setEnabled(false); - emit accepted(); +void vvToolInputSelectorWidget::reject() +{ + // 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::reject() { - emit rejected(); +void vvToolInputSelectorWidget::skip() +{ + // DD("SKIP"); + mSkipInput[mNumberOfAcceptedInputs] = true; + accept();//mNumberOfAcceptedInputs++; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -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