]> Creatis software - clitk.git/blobdiff - vv/vvToolWidgetBase.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvToolWidgetBase.cxx
index d258aafe5106ad23e0cabbcbcfb9e4b124c6dfe2..9c85336e2ab4f9a174b693850af92908b85f3710 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
 
 // vv
 #include "vvToolWidgetBase.h"
@@ -25,6 +25,7 @@
 #include <QMessageBox>
 #include <QKeyEvent>
 #include <QDockWidget>
+#include <QTabWidget>
 
 //------------------------------------------------------------------------------
 // Static initialisation
@@ -37,11 +38,10 @@ bool vvToolWidgetBase::mIsAnotherToolWaitInput = false;
 vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f, bool initialize):
   QWidget(parent, f),
   Ui::vvToolWidgetBase()
-{
+{ 
   mMainWindow = parent;
   setAttribute(Qt::WA_DeleteOnClose);
   if (initialize) Initialization();
-  // DD(isWindow());
   if (isWindow()) { // In this case, the tool is a floating windows
     // this->grabKeyboard();   // for the ESC key to close the dialog
     mPreventToUseTwoToolsOnSameInput = false;
@@ -108,7 +108,7 @@ vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f,
       mToolWidget->setEnabled(true);
     }
     parent->GetTab()->setCurrentIndex(mTabNumber); 
-    buttonBox->hide(); // No OK/Cancel by default in this case
+    mMainButtonBox->hide(); // No OK/Cancel by default in this case
   }
 }
 //------------------------------------------------------------------------------
@@ -116,7 +116,7 @@ vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f,
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::Initialization() 
-{
+{ 
   mCurrentSlicerManager = 0;
   mIsInitialized = false;
   mFilter = 0;
@@ -128,8 +128,8 @@ void vvToolWidgetBase::Initialization()
   connect(mMainWindow, SIGNAL(SelectedImageHasChanged(vvSlicerManager*)), this, SLOT(SelectedImageHasChanged(vvSlicerManager*)));
   connect(mToolInputSelectionWidget, SIGNAL(accepted()), this, SLOT(InputIsSelected()));
   connect(mToolInputSelectionWidget, SIGNAL(rejected()), this, SLOT(close()));
-  connect(buttonBox, SIGNAL(accepted()), this, SLOT(apply()));
-  connect(buttonBox, SIGNAL(rejected()), this, SLOT(close()));
+  connect(mMainButtonBox, SIGNAL(accepted()), this, SLOT(apply()));
+  connect(mMainButtonBox, SIGNAL(rejected()), this, SLOT(close()));
 
   // Disable main widget while input image is not selected
   mToolWidget->setEnabled(false);
@@ -139,15 +139,14 @@ void vvToolWidgetBase::Initialization()
 
 //------------------------------------------------------------------------------
 vvToolWidgetBase::~vvToolWidgetBase()
-{
+{ 
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::keyPressEvent(QKeyEvent *event) 
-{
- //  DD("KEYPRESSEVENT");
+{ 
   if (event->key() == Qt::Key_Escape) {
     reject();
     event->accept();
@@ -165,7 +164,7 @@ void vvToolWidgetBase::keyPressEvent(QKeyEvent *event)
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::accept()
-{
+{ 
   apply();
 }
 //------------------------------------------------------------------------------
@@ -173,7 +172,7 @@ void vvToolWidgetBase::accept()
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::reject()
-{
+{ 
   close();
 }
 //------------------------------------------------------------------------------
@@ -181,23 +180,27 @@ void vvToolWidgetBase::reject()
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::AddInputSelector(QString s, clitk::ImageToImageGenericFilterBase * f, bool allowSkip)
-{
+{ 
   int j=0;
   mFilter = f;
   mSlicerManagersCompatible.clear();
   mToolInputSelectionWidget->setToolTip(QString("%1").arg(mFilter->GetAvailableImageTypes().c_str()));
+  mCurrentCompatibleIndex = 0;
   for(unsigned int i=0; i<mMainWindow->GetSlicerManagers().size(); i++) {
     vvImage * s = mMainWindow->GetSlicerManagers()[i]->GetImage();
     if (mFilter->CheckImageType(s->GetNumberOfDimensions(),
                                 s->GetNumberOfScalarComponents(),
-                                s->GetScalarTypeAsString())) {
+                                s->GetScalarTypeAsITKString())) {
       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) image.");
+    std::ostringstream osstream;
+    osstream << "Sorry, could not perform operation. No (compatible) image. "
+             << mFilter->GetAvailableImageTypes();
+    QMessageBox::information(this, "No image", osstream.str().c_str());
     reject();
     return;
   }
@@ -216,7 +219,7 @@ void vvToolWidgetBase::AddInputSelector(QString s, clitk::ImageToImageGenericFil
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::AddInputSelector(QString s, bool allowSkip)
-{
+{ 
   mSlicerManagersCompatible.clear();
   for(unsigned int i=0; i<mMainWindow->GetSlicerManagers().size(); i++) {
     mSlicerManagersCompatible.push_back(mMainWindow->GetSlicerManagers()[i]);
@@ -242,18 +245,15 @@ void vvToolWidgetBase::AddInputSelector(QString s, bool allowSkip)
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::HideInputSelector()
-{
-  QList<int> s;
-  s.push_back(0);
-  s.push_back(1);
-  splitter->setSizes(s);
+{ 
+  mToolInputSelectionWidget->hide();
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::show()
-{
+{ 
   if (!mIsInitialized) {
     mToolInputSelectionWidget->Initialize();
     mIsInitialized = true;
@@ -265,8 +265,7 @@ void vvToolWidgetBase::show()
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::closeEvent(QCloseEvent *event) 
-{
- //  DD("closeEvent");
+{ 
   mIsAnotherToolWaitInput = false;
   if (isWindow()) {
     event->accept();//return QWidget::close();
@@ -293,8 +292,8 @@ void vvToolWidgetBase::closeEvent(QCloseEvent *event)
 
 //------------------------------------------------------------------------------
 bool vvToolWidgetBase::close()
-{
-  // DD("vvToolWidgetBase::close()");
+{ 
+  QApplication::restoreOverrideCursor();
   return QWidget::close();
 }
 //------------------------------------------------------------------------------
@@ -302,7 +301,7 @@ bool vvToolWidgetBase::close()
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::AnImageIsBeingClosed(vvSlicerManager * m)
-{
+{ 
   mToolInputSelectionWidget->AnImageIsBeingClosed(m);
   if (m == mCurrentSlicerManager) {
     close();
@@ -313,7 +312,7 @@ void vvToolWidgetBase::AnImageIsBeingClosed(vvSlicerManager * m)
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::SwapCurrentWidget()
-{
+{ 
   mStaticWidgetForTab->setUpdatesEnabled(false);
   QList<QObject*> l =mStaticWidgetForTab->children(); 
   for(int i=1; i<l.size(); i++) {
@@ -332,7 +331,7 @@ void vvToolWidgetBase::SwapCurrentWidget()
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::SelectedImageHasChanged(vvSlicerManager * m)
-{
+{ 
   if (!isWindow()) { // When the tool is not in a window, it is in a tab : we only display if needed
     if (mCurrentSlicerManager == NULL) return;
     if (mToolWidget == NULL) return;
@@ -350,20 +349,15 @@ void vvToolWidgetBase::SelectedImageHasChanged(vvSlicerManager * m)
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::InitializeInputs()
-{
+{ 
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::InputIsSelected()
-{
-  //  DD("vvToolWidgetBase::InputIsSelected()");
-  //DD(mWidgetForTab->isVisible());
-  //DD(mToolWidget->isVisible());
-  //DD(mStaticWidgetForTab->isVisible());
-
-  buttonBox->setEnabled(true);
+{ 
+  mMainButtonBox->setEnabled(true);
   std::vector<vvSlicerManager*> & l = mToolInputSelectionWidget->GetSelectedInputs();
   mCurrentSlicerManager = l[0];
   mCurrentImage = mCurrentSlicerManager->GetImage();
@@ -378,7 +372,7 @@ void vvToolWidgetBase::InputIsSelected()
 
 //------------------------------------------------------------------------------
 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);
 }
@@ -387,8 +381,8 @@ void vvToolWidgetBase::InputIsSelected(vvSlicerManager * m)
 
 //------------------------------------------------------------------------------
 void vvToolWidgetBase::InputIsSelected(std::vector<vvSlicerManager*> & l)
-{
-  buttonBox->setEnabled(true);
+{ 
+  mMainButtonBox->setEnabled(true);
   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;