]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/IO/ImageReader.cxx
...
[cpPlugins.git] / lib / cpPlugins / Plugins / IO / ImageReader.cxx
index 4b1d365f59e9c96729b7eb826c5631914e42e633..e18c98709f58f2654e9b6f431a91b07c94941512 100644 (file)
@@ -1,63 +1,66 @@
 #include "ImageReader.h"
 #include <cpPlugins/Interface/Image.h>
 
-#include <set>
-
 #include <itkImageFileReader.h>
 #include <itkImageSeriesReader.h>
 
-#ifdef cpPlugins_Interface_QT4
-#include <QFileDialog>
-#endif // cpPlugins_Interface_QT4
+/* TODO
+   #ifdef cpPlugins_Interface_QT4
+   #include <QFileDialog>
+   #endif // cpPlugins_Interface_QT4
 
-// -------------------------------------------------------------------------
-bool cpPlugins::IO::ImageReader::
-ExecConfigurationDialog( QWidget* parent )
-{
-  bool r = false;
+   // -------------------------------------------------------------------------
+   cpPlugins::IO::ImageReader::
+   DialogResult cpPlugins::IO::ImageReader::
+   ExecConfigurationDialog( QWidget* parent )
+   {
+   DialogResult r = Self::DialogResult_Cancel;
 
-#ifdef cpPlugins_Interface_QT4
+   #ifdef cpPlugins_Interface_QT4
 
-  // Show dialog and check if it was accepted
-  QFileDialog dialog( parent );
-  dialog.setFileMode( QFileDialog::ExistingFiles );
-  dialog.setDirectory( QFileDialog::tr( "." ) );
-  dialog.setNameFilter( QFileDialog::tr( "All files (*)" ) );
-  if( dialog.exec( ) )
-  {
-    this->m_Parameters = this->m_DefaultParameters;
-    QStringList names = dialog.selectedFiles( );
-    QStringList::const_iterator qIt = names.begin( );
-    for( ; qIt != names.end( ); ++qIt )
-      this->m_Parameters.AddValueToStringList(
-        "FileNames", qIt->toStdString( )
-        );
-    this->m_Parameters.SetValueAsBool( "VectorType", false );
-    r = true;
+   QStringList filters;
+   filters
+   << "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
+   << "Any files (*)";
 
-  } // fi
+   TStringList names = this->m_Parameters->GetFileNameList( "FileNames" );
+   std::string name = ( names.size( ) > 0 )? names[ 0 ]: ".";
 
-#endif // cpPlugins_Interface_QT4
+   // Show dialog and check if it was accepted
+   QFileDialog dialog( parent );
+   dialog.setFileMode( QFileDialog::ExistingFiles );
+   dialog.setDirectory( QFileDialog::tr( name.c_str( ) ) );
+   dialog.setNameFilters( filters );
+   dialog.setAcceptMode( QFileDialog::AcceptOpen );
+   if( dialog.exec( ) )
+   {
+   QStringList names = dialog.selectedFiles( );
+   QStringList::const_iterator qIt = names.begin( );
+   for( ; qIt != names.end( ); ++qIt )
+   this->m_Parameters->AddToStringList(
+   "FileNames", qIt->toStdString( )
+   );
+   this->m_Parameters->SetBool( "VectorType", false );
+   r = Self::DialogResult_NoModal;
 
-  return( r );
-}
+   } // fi
+
+   #endif // cpPlugins_Interface_QT4
+
+   return( r );
+   }
+*/
 
 // -------------------------------------------------------------------------
 cpPlugins::IO::ImageReader::
 ImageReader( )
   : Superclass( )
 {
-  this->m_ClassName = "cpPlugins::IO::ImageReader";
-  this->m_ClassCategory = "ImageReader";
-
-  this->SetNumberOfOutputs( 1 );
-  this->_MakeOutput< cpPlugins::Interface::Image >( 0 );
+  this->_MakeOutput< cpPlugins::Interface::Image >( "Output" );
 
-  using namespace cpPlugins::Interface;
-  this->m_DefaultParameters.Configure( Parameters::StringList, "FileNames" );
-  this->m_DefaultParameters.Configure( Parameters::Bool, "VectorType" );
-  this->m_DefaultParameters.SetValueAsBool( "VectorType", false );
-  this->m_Parameters = this->m_DefaultParameters;
+  this->m_Parameters->ConfigureAsFileNameList( "FileNames" );
+  this->m_Parameters->ConfigureAsBool( "VectorType" );
+  this->m_Parameters->SetBool( "VectorType", false );
 }
 
 // -------------------------------------------------------------------------
@@ -71,8 +74,7 @@ std::string cpPlugins::IO::ImageReader::
 _GenerateData( )
 {
   // Get filenames
-  TStringList names;
-  this->m_Parameters.GetValueAsStringList( names, "FileNames" );
+  TStringList names = this->m_Parameters->GetFileNameList( "FileNames" );
 
   std::string r = "";
   if( names.size( ) >= 1 )
@@ -105,7 +107,7 @@ _GenerateData( )
       r = "ImageReader: Could not CreateImageIO for \"" + names[ 0 ] + "\"";
   }
   else
-    r = "No image files given";
+    r = "ImageReader: No image files given";
   return( r );
 }
 
@@ -347,7 +349,7 @@ template< class P, unsigned int D >
 std::string cpPlugins::IO::ImageReader::
 _GD1( const TStringList& names )
 {
-  if( this->m_Parameters.GetValueAsBool( "VectorType" ) )
+  if( this->m_Parameters->GetBool( "VectorType" ) )
     return( this->_RealGD< itk::VectorImage< P, D > >( names ) );
   else
     return( this->_RealGD< itk::Image< P, D > >( names ) );
@@ -359,7 +361,7 @@ std::string cpPlugins::IO::ImageReader::
 _RealGD( const TStringList& names )
 {
   cpPlugins::Interface::Image* out =
-    this->GetOutput< cpPlugins::Interface::Image >( 0 );
+    this->GetOutput< cpPlugins::Interface::Image >( "Output" );
   if( out == NULL )
     return( "ImageReader: No output object properly created." );
 
@@ -368,59 +370,40 @@ _RealGD( const TStringList& names )
   {
     // Read single image
     typedef itk::ImageFileReader< I > _SR;
-    _SR* reader =
-      dynamic_cast< _SR* >( this->m_RealProcessObject.GetPointer( ) );
-    if( reader == NULL )
-    {
-      this->m_RealProcessObject = _SR::New( );
-      reader =
-        dynamic_cast< _SR* >( this->m_RealProcessObject.GetPointer( ) );
-
-    } // fi
+    _SR* reader = this->_CreateITK< _SR >( );
     reader->SetFileName( names[ 0 ] );
     try
     {
       reader->Update( );
-      out->SetITKImage< I >( reader->GetOutput( ) );
+      out->SetITK< I >( reader->GetOutput( ) );
+      out->SetName( names[ 0 ] );
     }
     catch( itk::ExceptionObject& err )
     {
       r = "ImageReader: " + std::string( err.GetDescription( ) );
-      out->SetITKImage< I >( NULL );
+      out->SetITK< I >( NULL );
+      out->SetName( "" );
 
     } // yrt
   }
   else if( names.size( ) > 1 )
   {
     // Read image series
-    std::set< std::string > ordered_names;
-    for( unsigned int i = 0; i < names.size( ); ++i )
-      ordered_names.insert( names[ i ] );
-
     typedef itk::ImageSeriesReader< I > _MR;
-    _MR* reader =
-      dynamic_cast< _MR* >( this->m_RealProcessObject.GetPointer( ) );
-    if( reader == NULL )
-    {
-      this->m_RealProcessObject = _MR::New( );
-      reader =
-        dynamic_cast< _MR* >( this->m_RealProcessObject.GetPointer( ) );
-
-    } // fi
-    std::set< std::string >::const_iterator fnIt = ordered_names.begin( );
-    for( ; fnIt != ordered_names.end( ); ++fnIt )
-    {
-      reader->AddFileName( *fnIt );
-    }
+    _MR* reader = this->_CreateITK< _MR >( );
+    for( unsigned int i = 0; i < names.size( ); ++i )
+      reader->AddFileName( names[ i ] );
     try
     {
       reader->Update( );
-      out->SetITKImage< I >( reader->GetOutput( ) );
+      out->SetITK< I >( reader->GetOutput( ) );
+      out->SetName( names[ 0 ] );
     }
     catch( itk::ExceptionObject& err )
     {
       r = "ImageReader: " + std::string( err.GetDescription( ) );
-      out->SetITKImage< I >( NULL );
+      out->SetITK< I >( NULL );
+      out->SetName( "" );
 
     } // yrt
   }