]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/IO/ImageReader.cxx
More on graph editor
[cpPlugins.git] / lib / cpPlugins / Plugins / IO / ImageReader.cxx
index 6068c88390f47c205978a09e4250e8c3cbb7482e..8866f7d2e6add18045f66f659667aeb40c916cd8 100644 (file)
@@ -1,8 +1,6 @@
 #include "ImageReader.h"
 #include <cpPlugins/Interface/Image.h>
 
-#include <set>
-
 #include <itkImageFileReader.h>
 #include <itkImageSeriesReader.h>
 
 #endif // cpPlugins_Interface_QT4
 
 // -------------------------------------------------------------------------
-bool cpPlugins::IO::ImageReader::
+cpPlugins::IO::ImageReader::
+DialogResult cpPlugins::IO::ImageReader::
 ExecConfigurationDialog( QWidget* parent )
 {
-  bool r = false;
+  DialogResult r = Self::DialogResult_Cancel;
 
 #ifdef cpPlugins_Interface_QT4
 
+  QStringList filters;
+  filters
+    << "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
+    << "Any files (*)";
+
+  std::vector< std::string > names;
+  this->m_Parameters->GetStringList( names, "FileNames" );
+  std::string name = ( names.size( ) > 0 )? names[ 0 ]: ".";
+
   // 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 (*)" ) );
+  dialog.setDirectory( QFileDialog::tr( name.c_str( ) ) );
+  dialog.setNameFilters( filters );
+  dialog.setAcceptMode( QFileDialog::AcceptOpen );
   if( dialog.exec( ) )
   {
     QStringList names = dialog.selectedFiles( );
@@ -32,7 +41,7 @@ ExecConfigurationDialog( QWidget* parent )
         "FileNames", qIt->toStdString( )
         );
     this->m_Parameters->SetBool( "VectorType", false );
-    r = true;
+    r = Self::DialogResult_NoModal;
 
   } // fi
 
@@ -97,7 +106,7 @@ _GenerateData( )
       r = "ImageReader: Could not CreateImageIO for \"" + names[ 0 ] + "\"";
   }
   else
-    r = "No image files given";
+    r = "ImageReader: No image files given";
   return( r );
 }
 
@@ -379,20 +388,15 @@ _RealGD( const TStringList& names )
   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 = this->_CreateITK< _MR >( );
-    std::set< std::string >::const_iterator fnIt = ordered_names.begin( );
-    for( ; fnIt != ordered_names.end( ); ++fnIt )
-      reader->AddFileName( *fnIt );
+    for( unsigned int i = 0; i < names.size( ); ++i )
+      reader->AddFileName( names[ i ] );
     try
     {
       reader->Update( );
       out->SetITK< I >( reader->GetOutput( ) );
-      out->SetName( *( ordered_names.begin( ) ) );
+      out->SetName( names[ 0 ] );
     }
     catch( itk::ExceptionObject& err )
     {