]> Creatis software - clitk.git/blobdiff - vv/vvSegmentationDialog.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvSegmentationDialog.cxx
index bd910aed0187acfd1e129bb9080a6687c2aeae16..b538b9d6919e7bbaa57bbfd6549ddd5bfb48b3b0 100644 (file)
@@ -1,29 +1,22 @@
-#ifndef _vvSegmentationDialog_CXX
-#define _vvSegmentationDialog_CXX
-
 /*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-Program:   vv
-Language:  C++
-Author :   David Sarrut (david.sarrut@gmail.com)
-
-Copyright (C) 2008
-Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
-CREATIS-LRMN http://www.creatis.insa-lyon.fr
-
-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.
+  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
 
-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.
+  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.
 
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  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 _vvSegmentationDialog_CXX
+#define _vvSegmentationDialog_CXX
 #include <QtGui>
 #include <Qt>
 
@@ -34,6 +27,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "vvInteractorStyleNavigator.h"
 #include "vvSlicer.h"
 
+#include <vtkVersion.h>
+#include <vtkStreamingDemandDrivenPipeline.h>
+#include <vtkInformation.h>
 #include "vtkMarchingCubes.h"
 #include "vtkMarchingSquares.h"
 #include "vtkImageClip.h"
@@ -63,74 +59,85 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <vtkPolyDataWriter.h>
 
 #include <QMessageBox>
+#include <QFileDialog>
+
+#ifdef Q_OS_OSX
+# include "vvOSXHelper.h"
+#endif
 
 //====================================================================
 vvSegmentationDialog::vvSegmentationDialog(QWidget * parent, Qt::WindowFlags f)
-        :QDialog(parent,f), Ui::vvSegmentationDialog() {
-
-    // initialization
-    setupUi(this);
-    mManager = new vvSlicerManager(1);
-
-    mClipper = vtkImageClip::New();
-    mSquares1 = vtkMarchingSquares::New();
-    mSquaresMapper1 = vtkPolyDataMapper::New();
-    mSquaresActor1 = vtkActor::New();
-
-    mSquares2 = vtkMarchingSquares::New();
-    mSquaresMapper2 = vtkPolyDataMapper::New();
-    mSquaresActor2 = vtkActor::New();
-
-    //m3DMapper = vtkPolyDataMapper::New();
-    //m3DActor = vtkActor::New();
-    m3DExtractor = vtkMarchingCubes::New();
-    m3DMappers.clear();
-    m3DActors.clear();
-
-    mBinaireImages.clear();
-    mKernelValue = 2;
-
-    connect(clipping1Slider,SIGNAL(valueChanged(int)),this,SLOT(clippingvaluechanged(int)));
-    connect(clipping2Slider,SIGNAL(valueChanged(int)),this,SLOT(clippingvaluechanged(int)));
-    connect(binaryButton,SIGNAL(clicked()),this,SLOT(BinariseSurface()));
-    connect(saveButton,SIGNAL(clicked()),this,SLOT(Save()));
-    connect(erodeButton,SIGNAL(clicked()),this,SLOT(Erode()));
-    connect(dilateButton,SIGNAL(clicked()),this,SLOT(Dilate()));
-    connect(dimButton,SIGNAL(clicked()),this,SLOT(ChangeDimRendering()));
-    connect(kernelSpinBox,SIGNAL(valueChanged(int)),this,SLOT(KernelValueChanged(int)));
-
-    binaryButton->setEnabled(0);
-    erodeButton->setEnabled(0);
-    dilateButton->setEnabled(0);
-    infoLabel->setText("Select Up and Down threshold before clicking binarise !");
+  :QDialog(parent,f), Ui::vvSegmentationDialog()
+{
+
+  // initialization
+  setupUi(this);
+  mManager = new vvSlicerManager(1);
+
+  mClipper = vtkImageClip::New();
+  mSquares1 = vtkMarchingSquares::New();
+  mSquaresMapper1 = vtkPolyDataMapper::New();
+  mSquaresActor1 = vtkActor::New();
+
+  mSquares2 = vtkMarchingSquares::New();
+  mSquaresMapper2 = vtkPolyDataMapper::New();
+  mSquaresActor2 = vtkActor::New();
+
+  //m3DMapper = vtkPolyDataMapper::New();
+  //m3DActor = vtkActor::New();
+  m3DExtractor = vtkMarchingCubes::New();
+  m3DExtractor->ComputeScalarsOff();
+  m3DMappers.clear();
+  m3DActors.clear();
+
+  mBinaireImages.clear();
+  mKernelValue = 2;
+
+  connect(clipping1Slider,SIGNAL(valueChanged(int)),this,SLOT(clippingvaluechanged(int)));
+  connect(clipping2Slider,SIGNAL(valueChanged(int)),this,SLOT(clippingvaluechanged(int)));
+  connect(binaryButton,SIGNAL(clicked()),this,SLOT(BinariseSurface()));
+  connect(saveButton,SIGNAL(clicked()),this,SLOT(Save()));
+  connect(erodeButton,SIGNAL(clicked()),this,SLOT(Erode()));
+  connect(dilateButton,SIGNAL(clicked()),this,SLOT(Dilate()));
+  connect(dimButton,SIGNAL(clicked()),this,SLOT(ChangeDimRendering()));
+  connect(kernelSpinBox,SIGNAL(valueChanged(int)),this,SLOT(KernelValueChanged(int)));
+
+  binaryButton->setEnabled(0);
+  erodeButton->setEnabled(0);
+  dilateButton->setEnabled(0);
+  infoLabel->setText("Select Up and Down threshold before clicking binarise !");
+
+#ifdef Q_OS_OSX
+  disableGLHiDPI(viewWidget->winId());
+#endif
 }
 
 vvSegmentationDialog::~vvSegmentationDialog()
 {
-    mClipper->Delete();
+  mClipper->Delete();
 
-    mSquaresActor1->Delete();
-    mSquaresMapper1->Delete();
-    mSquares1->Delete();
+  mSquaresActor1->Delete();
+  mSquaresMapper1->Delete();
+  mSquares1->Delete();
 
-    mSquaresActor2->Delete();
-    mSquaresMapper2->Delete();
-    mSquares2->Delete();
+  mSquaresActor2->Delete();
+  mSquaresMapper2->Delete();
+  mSquares2->Delete();
 
-    //m3DMapper->Delete();
-    //m3DActor->Delete();
-    m3DExtractor->Delete();
+  //m3DMapper->Delete();
+  //m3DActor->Delete();
+  m3DExtractor->Delete();
 
-    for (unsigned int i = 0; i < mBinaireImages.size(); i++)
-        mBinaireImages[i]->Delete();
+  for (unsigned int i = 0; i < mBinaireImages.size(); i++)
+    mBinaireImages[i]->Delete();
 
-    for (unsigned int i = 0; i < m3DActors.size(); i++)
-        m3DActors[i]->Delete();
+  for (unsigned int i = 0; i < m3DActors.size(); i++)
+    m3DActors[i]->Delete();
 
-    for (unsigned int i = 0; i < m3DMappers.size(); i++)
-        m3DMappers[i]->Delete();
+  for (unsigned int i = 0; i < m3DMappers.size(); i++)
+    m3DMappers[i]->Delete();
 
-    delete mManager;
+  delete mManager;
 }
 
 //----------------------------------------------------------------------------
@@ -140,483 +147,523 @@ template <class T>
 void vvImageBinarize(vtkImageData *in1Data, T *in1Ptr,
                      int outExt[6],int clampMin, int clampMax)
 {
-    int idxR, idxY, idxZ;
-    int maxY, maxZ;
-    vtkIdType inIncX, inIncY, inIncZ;
-    int rowLength;
-
-    // find the region to loop over
-    rowLength =
-        (outExt[1] - outExt[0]+1)*in1Data->GetNumberOfScalarComponents();
-    // What a pain. Maybe I should just make another filter.
-
-    maxY = outExt[3] - outExt[2];
-    maxZ = outExt[5] - outExt[4];
-
-    // Get increments to march through data
-    in1Data->GetContinuousIncrements(outExt, inIncX, inIncY, inIncZ);
-
-    for (idxZ = 0; idxZ <= maxZ; idxZ++)
-    {
-        for (idxY = 0; idxY <= maxY; idxY++)
-        {
-            for (idxR = 0; idxR < rowLength; idxR++)
-            {
-                if (static_cast<double>(*in1Ptr) > clampMin && static_cast<double>(*in1Ptr) <= clampMax)
-                    *in1Ptr = static_cast<T>(1);
-                else
-                    *in1Ptr = static_cast<T>(0);
-                in1Ptr++;
-            }
-            in1Ptr += inIncY;
-        }
-        in1Ptr += inIncZ;
+  int idxR, idxY, idxZ;
+  int maxY, maxZ;
+  vtkIdType inIncX, inIncY, inIncZ;
+  int rowLength;
+
+  // find the region to loop over
+  rowLength =
+    (outExt[1] - outExt[0]+1)*in1Data->GetNumberOfScalarComponents();
+  // What a pain. Maybe I should just make another filter.
+
+  maxY = outExt[3] - outExt[2];
+  maxZ = outExt[5] - outExt[4];
+
+  // Get increments to march through data
+  in1Data->GetContinuousIncrements(outExt, inIncX, inIncY, inIncZ);
+
+  for (idxZ = 0; idxZ <= maxZ; idxZ++) {
+    for (idxY = 0; idxY <= maxY; idxY++) {
+      for (idxR = 0; idxR < rowLength; idxR++) {
+        if (static_cast<double>(*in1Ptr) > clampMin && static_cast<double>(*in1Ptr) <= clampMax)
+          *in1Ptr = static_cast<T>(1);
+        else
+          *in1Ptr = static_cast<T>(0);
+        in1Ptr++;
+      }
+      in1Ptr += inIncY;
     }
+    in1Ptr += inIncZ;
+  }
 }
 
 void vvSegmentationDialog::SetImage(vvImage::Pointer image)
 {
 
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    mManager->SetImage(image);
-    mManager->SetSlicerWindow(0,viewWidget->GetRenderWindow());
-    vvInteractorStyleNavigator* style = vvInteractorStyleNavigator::New();
-    mManager->SetInteractorStyleNavigator(0,style);
-    style->Delete();
-
-    double range[2];
-    mManager->GetImage()->GetScalarRange(range);
-    mManager->GetSlicer(0)->SetColorWindow(range[1]-range[0]);
-    mManager->GetSlicer(0)->SetColorLevel((range[1]+range[0])/2);
-
-    clipping1Slider->setMinimum(range[0]);
-    clipping1Slider->setMaximum(range[1]);
-    clipping2Slider->setMinimum(range[0]);
-    clipping2Slider->setMaximum(range[1]);
-    clipping1Slider->setValue(range[0]);
-    clipping2Slider->setValue(range[1]);
-
-    mClipper->SetInput(mManager->GetSlicer(0)->GetInput());
-    mSquares1->SetValue(0,clipping1Slider->value());
-    mSquares2->SetValue(0,clipping2Slider->value());
-    mSquares1->SetInput(mClipper->GetOutput());
-    mSquares2->SetInput(mClipper->GetOutput());
-
-    mSquaresMapper1->SetInput(mSquares1->GetOutput());
-    mSquaresMapper2->SetInput(mSquares2->GetOutput());
-    mSquaresMapper1->ScalarVisibilityOff();
-    mSquaresMapper2->ScalarVisibilityOff();
-
-    mSquaresActor1->SetMapper(mSquaresMapper1);
-    mSquaresActor2->SetMapper(mSquaresMapper2);
-    mSquaresActor1->GetProperty()->SetColor(1.0,0,0);
-    mSquaresActor2->GetProperty()->SetColor(0,0,1.0);
-    mSquaresActor1->SetPickable(0);
-    mSquaresActor2->SetPickable(0);
-
-    mManager->GetSlicer(0)->GetRenderer()->AddActor(mSquaresActor1);
-    mManager->GetSlicer(0)->GetRenderer()->AddActor(mSquaresActor2);
-
-    mSquares1->Update();
-    mSquares2->Update();
-
-    UpdateSlice(0,mManager->GetSlicer(0)->GetSlice());
-
-    connect(mManager,SIGNAL(UpdateTSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
-    connect(mManager,SIGNAL(UpdateSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
-    connect(mManager,SIGNAL(UpdateSliceRange(int,int,int,int,int)),this,SLOT(UpdateSlice(int, int)));
-    connect(mManager,SIGNAL(LandmarkAdded()),this,SLOT(InsertSeed()));
-    QApplication::restoreOverrideCursor();
+  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+  mManager->SetImage(image);
+  mManager->SetSlicerWindow(0,viewWidget->GetRenderWindow());
+  vvInteractorStyleNavigator* style = vvInteractorStyleNavigator::New();
+  mManager->SetInteractorStyleNavigator(0,style);
+  style->Delete();
+
+  double range[2];
+  mManager->GetImage()->GetScalarRange(range);
+  mManager->GetSlicer(0)->SetColorWindow(range[1]-range[0]);
+  mManager->GetSlicer(0)->SetColorLevel((range[1]+range[0])/2);
+
+  clipping1Slider->setMinimum(range[0]);
+  clipping1Slider->setMaximum(range[1]);
+  clipping2Slider->setMinimum(range[0]);
+  clipping2Slider->setMaximum(range[1]);
+  clipping1Slider->setValue(range[0]);
+  clipping2Slider->setValue(range[1]);
+
+#if VTK_MAJOR_VERSION <= 5
+  mClipper->SetInput(mManager->GetSlicer(0)->GetInput());
+#else
+  mClipper->SetInputData(mManager->GetSlicer(0)->GetInput());
+#endif
+  mSquares1->SetValue(0,clipping1Slider->value());
+  mSquares2->SetValue(0,clipping2Slider->value());
+
+#if VTK_MAJOR_VERSION <= 5
+  mSquares1->SetInput(mClipper->GetOutput());
+  mSquares2->SetInput(mClipper->GetOutput());
+
+  mSquaresMapper1->SetInput(mSquares1->GetOutput());
+  mSquaresMapper2->SetInput(mSquares2->GetOutput());
+#else
+  mSquares1->SetInputData(mClipper->GetOutput());
+  mSquares2->SetInputData(mClipper->GetOutput());
+
+  mSquaresMapper1->SetInputData(mSquares1->GetOutput());
+  mSquaresMapper2->SetInputData(mSquares2->GetOutput());
+#endif
+  mSquaresMapper1->ScalarVisibilityOff();
+  mSquaresMapper2->ScalarVisibilityOff();
+
+  mSquaresActor1->SetMapper(mSquaresMapper1);
+  mSquaresActor2->SetMapper(mSquaresMapper2);
+  mSquaresActor1->GetProperty()->SetColor(1.0,0,0);
+  mSquaresActor2->GetProperty()->SetColor(0,0,1.0);
+  mSquaresActor1->SetPickable(0);
+  mSquaresActor2->SetPickable(0);
+
+  mManager->GetSlicer(0)->GetRenderer()->AddActor(mSquaresActor1);
+  mManager->GetSlicer(0)->GetRenderer()->AddActor(mSquaresActor2);
+
+  mSquares1->Update();
+  mSquares2->Update();
+
+  UpdateSlice(0,mManager->GetSlicer(0)->GetSlice());
+
+  connect(mManager,SIGNAL(UpdateTSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
+  connect(mManager,SIGNAL(UpdateSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
+  connect(mManager,SIGNAL(UpdateSliceRange(int,int,int,int,int)),this,SLOT(UpdateSlice(int, int)));
+  connect(mManager,SIGNAL(LandmarkAdded()),this,SLOT(InsertSeed()));
+  QApplication::restoreOverrideCursor();
 }
 
 void vvSegmentationDialog::UpdateSlice(int slicer,int slices)
 {
-    int slice = mManager->GetSlicer(0)->GetSlice();
-    int tslice = mManager->GetSlicer(0)->GetTSlice();
-    mClipper->SetInput(mManager->GetSlicer(0)->GetInput());
-    int* extent = mManager->GetSlicer(0)->GetImageActor()->GetDisplayExtent();
-    mClipper->SetOutputWholeExtent(extent[0],extent[1],extent[2],extent[3],extent[4],extent[5]);
-    int i;
-    for (i = 0; i < 6;i = i+2)
-    {
-        if (extent[i] == extent[i+1])
-        {
-            break;
-        }
+  int slice = mManager->GetSlicer(0)->GetSlice();
+  int tslice = mManager->GetSlicer(0)->GetTSlice();
+#if VTK_MAJOR_VERSION <= 5
+  mClipper->SetInput(mManager->GetSlicer(0)->GetInput());
+#else
+  mClipper->SetInputData(mManager->GetSlicer(0)->GetInput());
+#endif
+  int* extent = mManager->GetSlicer(0)->GetImageActor()->GetDisplayExtent();
+  mClipper->SetOutputWholeExtent(extent[0],extent[1],extent[2],extent[3],extent[4],extent[5]);
+  int i;
+  for (i = 0; i < 6; i = i+2) {
+    if (extent[i] == extent[i+1]) {
+      break;
     }
-
-    switch (i)
-    {
-    case 0:
-        if (mManager->GetSlicer(0)->GetRenderer()->GetActiveCamera()->GetPosition()[0] > slice)
-        {
-            mSquaresActor1->SetPosition(1,0,0);
-            mSquaresActor2->SetPosition(1,0,0);
-        }
-        else
-        {
-            mSquaresActor1->SetPosition(-1,0,0);
-            mSquaresActor2->SetPosition(-1,0,0);
-        }
-        break;
-    case 2:
-        if (mManager->GetSlicer(0)->GetRenderer()->GetActiveCamera()->GetPosition()[1] > slice)
-        {
-            mSquaresActor1->SetPosition(0,1,0);
-            mSquaresActor2->SetPosition(0,1,0);
-        }
-        else
-        {
-            mSquaresActor1->SetPosition(0,-1,0);
-            mSquaresActor2->SetPosition(0,-1,0);
-        }
-        break;
-    case 4:
-        if (mManager->GetSlicer(0)->GetRenderer()->GetActiveCamera()->GetPosition()[2] > slice)
-        {
-            mSquaresActor1->SetPosition(0,0,1);
-            mSquaresActor2->SetPosition(0,0,1);
-        }
-        else
-        {
-            mSquaresActor1->SetPosition(0,0,-1);
-            mSquaresActor2->SetPosition(0,0,-1);
-        }
-        break;
+  }
+
+  switch (i) {
+  case 0:
+    if (mManager->GetSlicer(0)->GetRenderer()->GetActiveCamera()->GetPosition()[0] > slice) {
+      mSquaresActor1->SetPosition(1,0,0);
+      mSquaresActor2->SetPosition(1,0,0);
+    } else {
+      mSquaresActor1->SetPosition(-1,0,0);
+      mSquaresActor2->SetPosition(-1,0,0);
     }
-    mSquares1->Update();
-    mSquares2->Update();
-
-    if (m3DActors.size())
-    {
-        for (unsigned int i =0; i < m3DActors.size(); i++)
-        {
-            if (m3DActors[i]->GetVisibility())
-            {
-                m3DActors[i]->VisibilityOff();
-            }
-        }
-        std::cout << "display " << tslice << " on " << m3DActors.size()  << std::endl;
-        m3DActors[tslice]->VisibilityOn();
+    break;
+  case 2:
+    if (mManager->GetSlicer(0)->GetRenderer()->GetActiveCamera()->GetPosition()[1] > slice) {
+      mSquaresActor1->SetPosition(0,1,0);
+      mSquaresActor2->SetPosition(0,1,0);
+    } else {
+      mSquaresActor1->SetPosition(0,-1,0);
+      mSquaresActor2->SetPosition(0,-1,0);
+    }
+    break;
+  case 4:
+    if (mManager->GetSlicer(0)->GetRenderer()->GetActiveCamera()->GetPosition()[2] > slice) {
+      mSquaresActor1->SetPosition(0,0,1);
+      mSquaresActor2->SetPosition(0,0,1);
+    } else {
+      mSquaresActor1->SetPosition(0,0,-1);
+      mSquaresActor2->SetPosition(0,0,-1);
     }
+    break;
+  }
+  mSquares1->Update();
+  mSquares2->Update();
+
+  if (m3DActors.size()) {
+    for (unsigned int i =0; i < m3DActors.size(); i++) {
+      if (m3DActors[i]->GetVisibility()) {
+        m3DActors[i]->VisibilityOff();
+      }
+    }
+    std::cout << "display " << tslice << " on " << m3DActors.size()  << std::endl;
+    m3DActors[tslice]->VisibilityOn();
+  }
 
-    mManager->Render();
+  mManager->Render();
 }
 
 
 void vvSegmentationDialog::clippingvaluechanged(int value)
 {
-    binaryButton->setEnabled(1);
-    int min = (clipping1Slider->value() < clipping2Slider->value() ) ?
-              clipping1Slider->value():clipping2Slider->value();
-    int max = (clipping1Slider->value() > clipping2Slider->value() ) ?
-              clipping1Slider->value():clipping2Slider->value();
-    mSquares1->SetValue(0,min);
-    mSquares2->SetValue(0,max);
-
-    QString textMin = "<b> Min : </b>";
-    textMin += QString::number(min);
-    QString textMax = "\n <b> Max : </b>";
-    textMax += QString::number(max);
-    minLabel->setText(textMin);
-    maxLabel->setText(textMax);
-
-    if (mSquares1->GetInput())
-    {
-        mSquares1->Update();
-        mSquares2->Update();
-        mManager->Render();
-    }
+  binaryButton->setEnabled(1);
+  int min = (clipping1Slider->value() < clipping2Slider->value() ) ?
+            clipping1Slider->value():clipping2Slider->value();
+  int max = (clipping1Slider->value() > clipping2Slider->value() ) ?
+            clipping1Slider->value():clipping2Slider->value();
+  mSquares1->SetValue(0,min);
+  mSquares2->SetValue(0,max);
+
+  QString textMin = "<b> Min : </b>";
+  textMin += QString::number(min);
+  QString textMax = "\n <b> Max : </b>";
+  textMax += QString::number(max);
+  minLabel->setText(textMin);
+  maxLabel->setText(textMax);
+
+  if (mSquares1->GetInput()) {
+    mSquares1->Update();
+    mSquares2->Update();
+    mManager->Render();
+  }
 }
 
 
 void vvSegmentationDialog::BinariseSurface()
 {
-    infoLabel->setText("Click erode then space on desired organ !");
-
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    int clampMin = (clipping1Slider->value() < clipping2Slider->value() ) ?
-                   clipping1Slider->value():clipping2Slider->value();
-    int clampMax = (clipping1Slider->value() > clipping2Slider->value() ) ?
-                   clipping1Slider->value():clipping2Slider->value();
-    vtkImageData* outputImage = vtkImageData::New();
-
-    for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++)
-    {
-        vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
-        int ext[6];
-        image->GetWholeExtent(ext);
-        void *in1Ptr;
-        in1Ptr = image->GetScalarPointerForExtent(ext);
-
-        switch (image->GetScalarType())
-        {
-            vtkTemplateMacro(
-                vvImageBinarize(image, static_cast<VTK_TT *>(in1Ptr),
-                                ext,clampMin,clampMax));
-        default:
-            std::cerr << "Error, unknown pixel format : " << image->GetScalarTypeAsString() << std::endl;
-            return;
-        }
-
-        outputImage->Initialize();
-        outputImage->SetExtent(ext);
-        outputImage->SetOrigin(image->GetOrigin());
-        outputImage->SetSpacing(image->GetSpacing());
-        outputImage->SetScalarTypeToUnsignedChar();
-        outputImage->CopyAndCastFrom(image,ext);
-        outputImage->Update();
-
-        image->DeepCopy(outputImage);
-        image->UpdateInformation();
-        image->PropagateUpdateExtent();
-
-        vtkImageData* imageBin = vtkImageData::New();
-        imageBin->DeepCopy(image);
-        imageBin->Update();
-        mBinaireImages.push_back(imageBin);
+  infoLabel->setText("Click erode then space on desired organ !");
+
+  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+  int clampMin = (clipping1Slider->value() < clipping2Slider->value() ) ?
+                 clipping1Slider->value():clipping2Slider->value();
+  int clampMax = (clipping1Slider->value() > clipping2Slider->value() ) ?
+                 clipping1Slider->value():clipping2Slider->value();
+  vtkImageData* outputImage = vtkImageData::New();
+
+  for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++) {
+    vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
+    int ext[6];
+#if VTK_MAJOR_VERSION <= 5
+    image->GetWholeExtent(ext);
+#else
+    image->GetExtent(ext);
+#endif
+    void *in1Ptr;
+    in1Ptr = image->GetScalarPointerForExtent(ext);
+
+    switch (image->GetScalarType()) {
+      vtkTemplateMacro(
+        vvImageBinarize(image, static_cast<VTK_TT *>(in1Ptr),
+                        ext,clampMin,clampMax));
+    default:
+      std::cerr << "Error, unknown pixel format : " << image->GetScalarTypeAsString() << std::endl;
+      return;
     }
 
-    outputImage->Delete();
-    erodeButton->setEnabled(1);
-    QApplication::restoreOverrideCursor();
-    mManager->SetColorWindow(2);
-    mManager->SetColorLevel(0.5);
-    mManager->Render();
+    outputImage->Initialize();
+    outputImage->SetExtent(ext);
+    outputImage->SetOrigin(image->GetOrigin());
+    outputImage->SetSpacing(image->GetSpacing());
+#if VTK_MAJOR_VERSION <= 5
+    outputImage->SetScalarTypeToUnsignedChar();
+#else
+    outputImage->AllocateScalars(VTK_UNSIGNED_CHAR, 1);
+#endif
+    outputImage->CopyAndCastFrom(image,ext);
+#if VTK_MAJOR_VERSION <= 5
+    outputImage->Update();
+#else
+    //outputImage->Update();
+#endif
+
+    image->DeepCopy(outputImage);
+#if VTK_MAJOR_VERSION <= 5
+    image->UpdateInformation();
+    image->PropagateUpdateExtent();
+#else
+    //image->UpdateInformation();
+    //image->PropagateUpdateExtent();
+#endif
+
+    vtkImageData* imageBin = vtkImageData::New();
+    imageBin->DeepCopy(image);
+#if VTK_MAJOR_VERSION <= 5
+    imageBin->Update();
+#else
+    //imageBin->Update();
+#endif
+    mBinaireImages.push_back(imageBin);
+  }
+
+  outputImage->Delete();
+  erodeButton->setEnabled(1);
+  QApplication::restoreOverrideCursor();
+  mManager->SetColorWindow(2);
+  mManager->SetColorLevel(0.5);
+  mManager->Render();
 }
 
 void vvSegmentationDialog::Erode()
 {
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    vtkImageContinuousErode3D* erode = vtkImageContinuousErode3D::New();
-    erode->SetKernelSize(mKernelValue,mKernelValue,mKernelValue);
-    for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++)
-    {
-        vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
-        erode->SetInput(image);
-        erode->Update();
-        image->DeepCopy(erode->GetOutput());
-        image->Update();
-    }
-    erode->Delete();
-    dilateButton->setEnabled(1);
-    mManager->Render();
-    QApplication::restoreOverrideCursor();
+  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+  vtkImageContinuousErode3D* erode = vtkImageContinuousErode3D::New();
+  erode->SetKernelSize(mKernelValue,mKernelValue,mKernelValue);
+  for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++) {
+    vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
+#if VTK_MAJOR_VERSION <= 5
+    erode->SetInput(image);
+    erode->Update();
+#else
+    erode->SetInputData(image);
+    //erode->Update();
+#endif
+    image->DeepCopy(erode->GetOutput());
+#if VTK_MAJOR_VERSION <= 5
+    image->Update();
+#else
+    //image->Update();
+#endif
+  }
+  erode->Delete();
+  dilateButton->setEnabled(1);
+  mManager->Render();
+  QApplication::restoreOverrideCursor();
 }
 
 void vvSegmentationDialog::Dilate()
 {
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    vtkImageContinuousDilate3D* dilate = vtkImageContinuousDilate3D::New();
-    vtkImageLogic* And = vtkImageLogic::New();
-    And->SetOperationToAnd();
-    dilate->SetKernelSize(mKernelValue,mKernelValue,mKernelValue);
-    for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++)
-    {
-        vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
-        dilate->SetInput(image);
-        vtkImageData* mask = mBinaireImages[numImage];
-        And->SetInput1(dilate->GetOutput());
-        And->SetInput2(mask);
-        And->Update();
-        image->DeepCopy(And->GetOutput());
-        image->Update();
-    }
-    And->Delete();
-    dilate->Delete();
-    mManager->Render();
-    QApplication::restoreOverrideCursor();
+  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+  vtkImageContinuousDilate3D* dilate = vtkImageContinuousDilate3D::New();
+  vtkImageLogic* And = vtkImageLogic::New();
+  And->SetOperationToAnd();
+  dilate->SetKernelSize(mKernelValue,mKernelValue,mKernelValue);
+  for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++) {
+    vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
+#if VTK_MAJOR_VERSION <= 5
+    dilate->SetInput(image);
+#else
+    dilate->SetInputData(image);
+#endif
+    vtkImageData* mask = mBinaireImages[numImage];
+#if VTK_MAJOR_VERSION <= 5
+    And->SetInput1(dilate->GetOutput());
+    And->SetInput2(mask);
+#else
+    And->SetInput1Data(dilate->GetOutput());
+    And->SetInput2Data(mask);
+#endif
+    And->Update();
+    image->DeepCopy(And->GetOutput());
+#if VTK_MAJOR_VERSION <= 5
+    image->Update();
+#else
+    //image->Update();
+#endif
+  }
+  And->Delete();
+  dilate->Delete();
+  mManager->Render();
+  QApplication::restoreOverrideCursor();
 }
 
 void vvSegmentationDialog::InsertSeed()
 {
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    int point4D[4];
-    point4D[0] = mManager->GetLandmarks()->GetCoordinates(
-                     mManager->GetLandmarks()->GetNumberOfPoints()-1)[0];
-    point4D[1] = mManager->GetLandmarks()->GetCoordinates(
-                     mManager->GetLandmarks()->GetNumberOfPoints()-1)[1];
-    point4D[2] = mManager->GetLandmarks()->GetCoordinates(
-                     mManager->GetLandmarks()->GetNumberOfPoints()-1)[2];
-    point4D[3] = mManager->GetLandmarks()->GetCoordinates(
-                     mManager->GetLandmarks()->GetNumberOfPoints()-1)[3];
-
-    point4D[0] = point4D[0]/mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetSpacing()[0];
-    point4D[1] = point4D[1]/mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetSpacing()[1];
-    point4D[2] = point4D[2]/mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetSpacing()[2];
-
-    vtkImageSeedConnectivity* seed = vtkImageSeedConnectivity::New();
-    seed->SetInputConnectValue(1);
-    seed->SetOutputConnectedValue(1);
-    seed->SetOutputUnconnectedValue(0);
-    seed->AddSeed(point4D[0],point4D[1],point4D[2]);
-
-    for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++)
-    {
-        vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
-        seed->SetInput(image);
-        seed->Update();
-        image->DeepCopy(seed->GetOutput());
-        image->Update();
-    }
-
-    seed->Delete();
-    QApplication::restoreOverrideCursor();
+  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+  int point4D[4];
+  point4D[0] = mManager->GetLandmarks()->GetCoordinates(
+                 mManager->GetLandmarks()->GetNumberOfPoints()-1)[0];
+  point4D[1] = mManager->GetLandmarks()->GetCoordinates(
+                 mManager->GetLandmarks()->GetNumberOfPoints()-1)[1];
+  point4D[2] = mManager->GetLandmarks()->GetCoordinates(
+                 mManager->GetLandmarks()->GetNumberOfPoints()-1)[2];
+  point4D[3] = mManager->GetLandmarks()->GetCoordinates(
+                 mManager->GetLandmarks()->GetNumberOfPoints()-1)[3];
+
+  point4D[0] = (point4D[0]-mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetOrigin()[0])/mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetSpacing()[0];
+  point4D[1] = (point4D[1]-mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetOrigin()[1])/mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetSpacing()[1];
+  point4D[2] = (point4D[2]-mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetOrigin()[2])/mManager->GetSlicer(0)->GetImage()->GetVTKImages()[0]->GetSpacing()[2];
+
+  vtkImageSeedConnectivity* seed = vtkImageSeedConnectivity::New();
+  seed->SetInputConnectValue(1);
+  seed->SetOutputConnectedValue(1);
+  seed->SetOutputUnconnectedValue(0);
+  seed->AddSeed(point4D[0],point4D[1],point4D[2]);
+
+  for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++) {
+    vtkImageData* image = mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage];
+#if VTK_MAJOR_VERSION <= 5
+    seed->SetInput(image);
+#else
+    seed->SetInputData(image);
+#endif
+    seed->Update();
+    image->DeepCopy(seed->GetOutput());
+#if VTK_MAJOR_VERSION <= 5
+    image->Update();
+#else
+    //image->Update();
+#endif
+  }
+
+  seed->Delete();
+  QApplication::restoreOverrideCursor();
 }
 
 void vvSegmentationDialog::ChangeDimRendering()
 {
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-    if (dimButton->text() == "3D")
-    {
-        if (m3DActors.size() == 0)
-        {
-            m3DExtractor->SetValue(0,0.5);
-            for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++)
-            {
-                vtkActor* actor = vtkActor::New();
-                m3DExtractor->SetInput(mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage]);
-                m3DExtractor->Update();
-
-                vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
-                mapper->SetInput(m3DExtractor->GetOutput());
-                m3DMappers.push_back(mapper);
-
-                actor->SetMapper(mapper);
-                actor->GetProperty()->SetColor(1.0,0.7,0.2);
-                actor->VisibilityOff();
-
-                mManager->GetSlicer(0)->GetRenderer()->AddActor(actor);
-                m3DActors.push_back(actor);
-            }
-        }
+  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+  if (dimButton->text() == "3D") {
+    if (m3DActors.size() == 0) {
+      m3DExtractor->SetValue(0,0.5);
+      for (unsigned int numImage = 0; numImage < mManager->GetSlicer(0)->GetImage()->GetVTKImages().size(); numImage++) {
+        vtkActor* actor = vtkActor::New();
+#if VTK_MAJOR_VERSION <= 5
+        m3DExtractor->SetInput(mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage]);
+#else
+        m3DExtractor->SetInputData(mManager->GetSlicer(0)->GetImage()->GetVTKImages()[numImage]);
+#endif
+        m3DExtractor->Update();
+
+        vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
+#if VTK_MAJOR_VERSION <= 5
+        mapper->SetInput(m3DExtractor->GetOutput());
+#else
+        mapper->SetInputData(m3DExtractor->GetOutput());
+#endif
+        m3DMappers.push_back(mapper);
+
+        actor->SetMapper(mapper);
+        actor->GetProperty()->SetColor(1.0,0.7,0.2);
+        actor->VisibilityOff();
+
+        mManager->GetSlicer(0)->GetRenderer()->AddActor(actor);
+        m3DActors.push_back(actor);
+      }
+    }
 
-        mManager->GetSlicer(0)->GetRenderer()->SetBackground(0.5,0.6,0.9);
-        m3DActors[0]->VisibilityOn();
+    mManager->GetSlicer(0)->GetRenderer()->SetBackground(0.5,0.6,0.9);
+    m3DActors[0]->VisibilityOn();
 
-        vtkInteractorStyleTrackballCamera* style = vtkInteractorStyleTrackballCamera::New();
-        mManager->SetInteractorStyleNavigator(0,style);
-        style->Delete();
+    vtkInteractorStyleTrackballCamera* style = vtkInteractorStyleTrackballCamera::New();
+    mManager->SetInteractorStyleNavigator(0,style);
+    style->Delete();
 
-        mManager->GetSlicer(0)->GetImageActor()->VisibilityOff();
-        mSquaresActor1->VisibilityOff();
-        mSquaresActor2->VisibilityOff();
-        mManager->Render();
-        dimButton->setText("2D");
-    }
-    else
-    {
-        mManager->GetSlicer(0)->GetRenderer()->SetBackground(0.0,0.0,0.0);
-        vvInteractorStyleNavigator* style = vvInteractorStyleNavigator::New();
-        mManager->SetInteractorStyleNavigator(0,style);
-        style->Delete();
-
-        mManager->GetSlicer(0)->SetSliceOrientation(2);
-        m3DActors[mManager->GetSlicer(0)->GetTSlice()]->VisibilityOff();
-
-        mManager->GetSlicer(0)->GetImageActor()->VisibilityOn();
-        mSquaresActor1->VisibilityOn();
-        mSquaresActor2->VisibilityOn();
-        dimButton->setText("3D");
-    }
-    QApplication::restoreOverrideCursor();
+    mManager->GetSlicer(0)->GetImageActor()->VisibilityOff();
+    mSquaresActor1->VisibilityOff();
+    mSquaresActor2->VisibilityOff();
+    mManager->Render();
+    dimButton->setText("2D");
+  } else {
+    mManager->GetSlicer(0)->GetRenderer()->SetBackground(0.0,0.0,0.0);
+    vvInteractorStyleNavigator* style = vvInteractorStyleNavigator::New();
+    mManager->SetInteractorStyleNavigator(0,style);
+    style->Delete();
+
+    mManager->GetSlicer(0)->SetSliceOrientation(2);
+    m3DActors[mManager->GetSlicer(0)->GetTSlice()]->VisibilityOff();
+
+    mManager->GetSlicer(0)->GetImageActor()->VisibilityOn();
+    mSquaresActor1->VisibilityOn();
+    mSquaresActor2->VisibilityOn();
+    dimButton->setText("3D");
+  }
+  QApplication::restoreOverrideCursor();
 }
 
 void vvSegmentationDialog::KernelValueChanged(int kernel)
 {
-    mKernelValue = kernel;
+  mKernelValue = kernel;
 }
 
 void vvSegmentationDialog::Save()
 {
-    if (dimButton->text() == "2D") //If in *3D* mode, save the mesh
-    {
-        QString fileName = QFileDialog::getSaveFileName(this,
-                tr("Save Mesh As"),
-                QDir::home().dirName(),
-                "Mesh Files (*.vtk *.vtp)");
-        if (!fileName.isEmpty())
-        {
-            vtkSmartPointer<vtkPolyDataWriter> w = vtkSmartPointer<vtkPolyDataWriter>::New();
-            w->SetInput(m3DExtractor->GetOutput());
-            w->SetFileName(fileName.toStdString().c_str());
-            w->Write();
-        }
+  if (dimButton->text() == "2D") { //If in *3D* mode, save the mesh
+    QString fileName = QFileDialog::getSaveFileName(this,
+                       tr("Save Mesh As"),
+                       QDir::home().dirName(),
+                       "Mesh Files (*.vtk *.vtp)");
+    if (!fileName.isEmpty()) {
+      vtkSmartPointer<vtkPolyDataWriter> w = vtkSmartPointer<vtkPolyDataWriter>::New();
+#if VTK_MAJOR_VERSION <= 5
+      w->SetInput(m3DExtractor->GetOutput());
+#else
+      w->SetInputData(m3DExtractor->GetOutput());
+#endif
+      w->SetFileName(fileName.toStdString().c_str());
+      w->Write();
     }
-    else {
-        QStringList OutputListeFormat;
-        OutputListeFormat.clear();
-        int dimension = mManager->GetDimension();
-        if (dimension == 1)
-        {
-            OutputListeFormat.push_back(".mhd");
-        }
-        if (dimension == 2)
-        {
-            OutputListeFormat.push_back(".bmp");
-            OutputListeFormat.push_back(".png");
-            OutputListeFormat.push_back(".jpeg");
-            OutputListeFormat.push_back(".tif");
-            OutputListeFormat.push_back(".mhd");
-            OutputListeFormat.push_back(".hdr");
-            OutputListeFormat.push_back(".vox");
-        }
-        else if (dimension == 3)
-        {
-            OutputListeFormat.push_back(".mhd");
-            OutputListeFormat.push_back(".hdr");
-            OutputListeFormat.push_back(".vox");
-        }
-        else if (dimension == 4)
-        {
-            OutputListeFormat.push_back(".mhd");
-        }
-        QString Extensions = "AllFiles(*.*)";
-        for (int i = 0; i < OutputListeFormat.count(); i++)
-        {
-            Extensions += ";;Images ( *";
-            Extensions += OutputListeFormat[i];
-            Extensions += ")";
-        }
-        QString fileName = QFileDialog::getSaveFileName(this,
-                tr("Save As"),
-                QDir::home().dirName(),
-                Extensions);
-        if (!fileName.isEmpty())
-        {
-            std::string fileformat = vtksys::SystemTools::GetFilenameLastExtension(fileName.toStdString());
-            if (OutputListeFormat.contains(
-                        fileformat.c_str()))
-            {
-                QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-                vvProgressDialog progress("Saving "+fileName.toStdString());
-                qApp->processEvents();
-                vvImageWriter *writer = new vvImageWriter;
-                writer->SetOutputFileName(fileName.toStdString());
-                writer->SetInput(mManager->GetSlicer(0)->GetImage());
-                writer->Update(dimension,"unsigned_char");
-                QApplication::restoreOverrideCursor();
-                if (writer->GetLastError().size())
-                {
-                    QString error = "Saving did not succeed\n";
-                    error += writer->GetLastError().c_str();
-                    QMessageBox::information(this,tr("Saving Problem"),error);
-                    Save();
-                }
-            }
-            else
-            {
-                QString error = fileformat.c_str();
-                if (error.isEmpty())
-                    error += "no file format specified !";
-                else
-                    error += " format unknown !!!\n";
-                QMessageBox::information(this,tr("Saving Problem"),error);
-                Save();
-            }
+  } else {
+    QStringList OutputListeFormat;
+    OutputListeFormat.clear();
+    int dimension = mManager->GetDimension();
+    if (dimension == 1) {
+      OutputListeFormat.push_back(".mhd");
+      OutputListeFormat.push_back(".mha");
+    }
+    if (dimension == 2) {
+      OutputListeFormat.push_back(".bmp");
+      OutputListeFormat.push_back(".png");
+      OutputListeFormat.push_back(".jpeg");
+      OutputListeFormat.push_back(".tif");
+      OutputListeFormat.push_back(".mha");
+      OutputListeFormat.push_back(".mhd");
+      OutputListeFormat.push_back(".hdr");
+      OutputListeFormat.push_back(".vox");
+    } else if (dimension == 3) {
+      OutputListeFormat.push_back(".mha");
+      OutputListeFormat.push_back(".mhd");
+      OutputListeFormat.push_back(".hdr");
+      OutputListeFormat.push_back(".vox");
+    } else if (dimension == 4) {
+      OutputListeFormat.push_back(".mha");
+      OutputListeFormat.push_back(".mhd");
+    }
+    QString Extensions = "AllFiles(*.*)";
+    for (int i = 0; i < OutputListeFormat.count(); i++) {
+      Extensions += ";;Images ( *";
+      Extensions += OutputListeFormat[i];
+      Extensions += ")";
+    }
+    QString fileName = QFileDialog::getSaveFileName(this,
+                       tr("Save As"),
+                       QDir::home().dirName(),
+                       Extensions);
+    if (!fileName.isEmpty()) {
+      std::string fileformat = vtksys::SystemTools::GetFilenameLastExtension(fileName.toStdString());
+      if (OutputListeFormat.contains(
+            fileformat.c_str())) {
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        vvProgressDialog progress("Saving "+fileName.toStdString());
+        qApp->processEvents();
+        vvImageWriter::Pointer writer = vvImageWriter::New();
+        writer->SetOutputFileName(fileName.toStdString());
+        writer->SetInput(mManager->GetSlicer(0)->GetImage());
+        writer->Update(dimension,"unsigned_char");
+        QApplication::restoreOverrideCursor();
+        if (writer->GetLastError().size()) {
+          QString error = "Saving did not succeed\n";
+          error += writer->GetLastError().c_str();
+          QMessageBox::information(this,tr("Saving Problem"),error);
+          Save();
         }
+      } else {
+        QString error = fileformat.c_str();
+        if (error.isEmpty())
+          error += "no file format specified !";
+        else
+          error += " format unknown !!!\n";
+        QMessageBox::information(this,tr("Saving Problem"),error);
+        Save();
+      }
     }
+  }
 }
 
 #endif /* end #define _vvSegmentationDialog_CXX */