]> Creatis software - cpPlugins.git/blobdiff - appli/ImageMPR/ImageMPR.cxx
...
[cpPlugins.git] / appli / ImageMPR / ImageMPR.cxx
index 412b9ed48819c5a2974a21a2d3179e209a054c4b..24cfd389fe26e4882db063a79f1c76ded0e89b39 100644 (file)
@@ -47,6 +47,10 @@ ImageMPR::ImageMPR( QWidget* parent )
     this->m_UI->actionOpenInputImage, SIGNAL( triggered( ) ),
     this, SLOT( _triggered_actionOpenInputImage( ) )
     );
+  QObject::connect(
+    this->m_UI->actionOpenSegmentation, SIGNAL( triggered( ) ),
+    this, SLOT( _triggered_actionOpenSegmentation( ) )
+    );
   QObject::connect(
     this->m_UI->actionOpenInputPolyData, SIGNAL( triggered( ) ),
     this, SLOT( _triggered_actionOpenInputPolyData( ) )
@@ -227,6 +231,75 @@ _triggered_actionOpenInputImage( )
       );
 }
 
+// -------------------------------------------------------------------------
+void ImageMPR::
+_triggered_actionOpenSegmentation( )
+{
+  // Show dialog and check if it was accepted
+  QFileDialog dialog( this );
+  dialog.setFileMode( QFileDialog::ExistingFiles );
+  dialog.setDirectory( tr( "." ) );
+  dialog.setNameFilter(
+    tr( "Medical image files (*.mhd *.bin *.dcm);;All files (*)" )
+    );
+  dialog.setDefaultSuffix( tr( "mhd" ) );
+  if( !( dialog.exec( ) ) )
+    return;
+  
+  this->m_InputImage = NULL;
+
+  // Get a reader from plugins
+  TPluginFilter::Pointer reader =
+    this->m_Plugins.CreateProcessObject( this->m_ImageReaderClass );
+
+  // Configure reader
+  TParameters reader_params = reader->GetDefaultParameters( );
+  QStringList q_fnames = dialog.selectedFiles( );
+  QStringList::const_iterator qIt = q_fnames.begin( );
+  for( ; qIt != q_fnames.end( ); ++qIt )
+    reader_params.AddValueToStringList( "FileNames", qIt->toStdString( ) );
+  reader->SetParameters( reader_params );
+
+  // Execute and get error message, if any
+  QApplication::setOverrideCursor( Qt::WaitCursor );
+  this->setEnabled( false );
+  std::string err = reader->Update( );
+  QApplication::restoreOverrideCursor( );
+  this->setEnabled( true );
+
+  // Assign fresh image, if any
+  if( err == "" )
+  {
+    this->m_InputSegmentation = reader->GetOutput< TPluginImage >( 0 );
+    reader->DisconnectOutputs( );
+    if( this->m_InputSegmentation.IsNotNull( ) )
+    {
+      vtkImageData* vtk_id = this->m_InputSegmentation->GetVTKImageData( );
+      if( vtk_id != NULL )
+      {
+        /*
+          this->m_MPRObjects->SetImage( vtk_id );
+          this->m_MPRObjects->ResetCameras( );
+          this->m_MPRObjects->RenderAll( );
+        */
+      }
+      else
+        QMessageBox::critical(
+          this,
+          tr( "Error message" ),
+          tr( "Read image does not have a valid VTK converter." )
+          );
+
+    } // fi
+  }
+  else
+    QMessageBox::critical(
+      this,
+      tr( "Error reading single image" ),
+      tr( err.c_str( ) )
+      );
+}
+
 // -------------------------------------------------------------------------
 void ImageMPR::
 _triggered_actionOpenInputPolyData( )