X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolWidgetBase.cxx;h=d5632dca6eaa71ed8099fd8e2e6daade568247a4;hb=f850d8dae4e49985f1ba0d69662206cd02e36064;hp=080e29857e45e999aedd82a415f9c30c0aee7323;hpb=98bdb72d057c122863776f8c3fb74659e8c87beb;p=clitk.git
diff --git a/vv/vvToolWidgetBase.cxx b/vv/vvToolWidgetBase.cxx
index 080e298..d5632dc 100644
--- a/vv/vvToolWidgetBase.cxx
+++ b/vv/vvToolWidgetBase.cxx
@@ -1,33 +1,25 @@
/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
- Program: vv
- Module: $RCSfile: vvToolWidgetBase.cxx,v $
- Language: C++
- Date: $Date: 2010/03/01 15:38:09 $
- Version: $Revision: 1.2 $
- 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) 2008
- Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
- CREATIS-LRMN 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 .
-
- =========================================================================*/
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+======================================================================-====*/
#include "vvToolWidgetBase.h"
#include "vvMainWindowBase.h"
#include "vvSlicerManager.h"
+#include
//------------------------------------------------------------------------------
vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f)
@@ -38,15 +30,16 @@ vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f)
// parent is set at construction
mIsInitialized = false;
mFilter = 0;
- mMainWindowBase = parent;
+ mMainWindow = parent;
setModal(false);
setAttribute(Qt::WA_DeleteOnClose);
+ mCurrentSlicerManager = 0;
// GUI Initialization
setupUi(this);
// Connect signals & slots
- connect(mMainWindowBase, SIGNAL(AnImageIsBeingClosed(vvSlicerManager*)),
+ connect(mMainWindow, SIGNAL(AnImageIsBeingClosed(vvSlicerManager*)),
this, SLOT(AnImageIsBeingClosed(vvSlicerManager*)));
connect(mToolInputSelectionWidget, SIGNAL(accepted()), this, SLOT(InputIsSelected()));
connect(mToolInputSelectionWidget, SIGNAL(rejected()), this, SLOT(close()));
@@ -66,18 +59,79 @@ 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 = mMainWindow->GetSlicerManagers()[i]->GetImage();
+ // DD(s->GetScalarTypeAsString());
+ if (mFilter->CheckImageType(s->GetNumberOfDimensions(),
+ s->GetNumberOfScalarComponents(),
+ s->GetScalarTypeAsString())) {
+ mSlicerManagersCompatible.push_back(mMainWindow->GetSlicerManagers()[i]);
+ if ((int)i == mMainWindow->GetSlicerManagerCurrentIndex()) mCurrentCompatibleIndex = j;
+ j++;
+ }
+ }
+ if (mSlicerManagersCompatible.size() == 0) {
+ QMessageBox::information(this, "No image","Sorry, could not perform operation. No (compatible) opened image type.");
+ close();
+ return;
+ }
+ mToolInputSelectionWidget->AddInputSelector(s, mSlicerManagersCompatible, mCurrentCompatibleIndex, allowSkip);
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolWidgetBase::AddInputSelector(QString s, bool allowSkip) {
+ // DD("AddInput without filter");
+ // DD(mMainWindow->GetSlicerManagers().size());
+ mSlicerManagersCompatible.clear();
+ for(unsigned int i=0; iGetSlicerManagers().size(); i++) {
+ mSlicerManagersCompatible.push_back(mMainWindow->GetSlicerManagers()[i]);
+ }
+ if (mMainWindow->GetSlicerManagers().size() == 0) {
+ QMessageBox::information(this, "No image","Sorry, could not perform operation. No opened image type.");
+ close();
+ return;
+ }
+ mToolInputSelectionWidget->AddInputSelector(s, mMainWindow->GetSlicerManagers(),
+ mMainWindow->GetSlicerManagerCurrentIndex(), allowSkip);
+}
+//------------------------------------------------------------------------------
+
+
//------------------------------------------------------------------------------
void vvToolWidgetBase::show() {
- if (!mIsInitialized) {
- InitializeInputs();
- }
- QDialog::show();
+ if (!mIsInitialized) {
+ // DD("show -> init");
+ mToolInputSelectionWidget->Initialize();
+ mIsInitialized = true;
+ }
+ QDialog::show();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool vvToolWidgetBase::close() {
+ // DD("vvToolWidgetBase::close()");
return QDialog::close();
}
//------------------------------------------------------------------------------
@@ -85,6 +139,7 @@ bool vvToolWidgetBase::close() {
//------------------------------------------------------------------------------
void vvToolWidgetBase::AnImageIsBeingClosed(vvSlicerManager * m) {
+ mToolInputSelectionWidget->AnImageIsBeingClosed(m);
if (m == mCurrentSlicerManager) {
close();
}
@@ -94,40 +149,73 @@ void vvToolWidgetBase::AnImageIsBeingClosed(vvSlicerManager * m) {
//------------------------------------------------------------------------------
void vvToolWidgetBase::InitializeInputs() {
- if (mFilter) {
+ /*
+ 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++;
- }
+ for(unsigned int i=0; iGetSlicerManagers().size(); i++) {
+ vvImage * s = mMainWindow->GetSlicerManagers()[i]->GetImage();
+ if (mFilter->CheckImageType(s->GetNumberOfDimensions(),
+ s->GetNumberOfScalarComponents(),
+ s->GetScalarTypeAsString())) {
+ mSlicerManagersCompatible.push_back(mMainWindow->GetSlicerManagers()[i]);
+ if ((int)i == mMainWindow->GetSlicerManagerCurrentIndex()) mCurrentCompatibleIndex = j;
+ j++;
}
- }
- else {
- mSlicerManagersCompatible = mMainWindowBase->GetSlicerManagers();
- mCurrentCompatibleIndex = mMainWindowBase->GetSlicerManagerCurrentIndex();
- }
- mToolInputSelectionWidget->Initialize(mSlicerManagersCompatible,
- mCurrentCompatibleIndex);
- mIsInitialized = true;
+ }
+ }
+ else {
+ mSlicerManagersCompatible = mMainWindow->GetSlicerManagers();
+ mCurrentCompatibleIndex = mMainWindow->GetSlicerManagerCurrentIndex();
+ }
+ mToolInputSelectionWidget->Initialize(mSlicerManagersCompatible,
+ 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);
+ }
+}
+//------------------------------------------------------------------------------