#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( );
"FileNames", qIt->toStdString( )
);
this->m_Parameters->SetBool( "VectorType", false );
- r = true;
+ r = Self::DialogResult_NoModal;
} // fi
r = "ImageReader: Could not CreateImageIO for \"" + names[ 0 ] + "\"";
}
else
- r = "No image files given";
+ r = "ImageReader: No image files given";
return( r );
}
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 )
{