#include #include #include #include #include #ifdef cpPlugins_QT4 #include #include // ------------------------------------------------------------------------- cpPluginsIO::ImageWriterQDialog:: ImageWriterQDialog( QWidget* parent ) : QFileDialog( parent ), m_ProcessObject( NULL ) { this->connect( this, SIGNAL( accepted( ) ), this, SLOT( _dlg_Accepted( ) ) ); this->setWindowTitle( "Save an image" ); } // ------------------------------------------------------------------------- cpPluginsIO::ImageWriterQDialog:: ~ImageWriterQDialog( ) { } // ------------------------------------------------------------------------- void cpPluginsIO::ImageWriterQDialog:: setProcessObject( cpPlugins::BaseObjects::ProcessObject* obj ) { if( obj == NULL ) return; this->m_ProcessObject = obj; auto parameters = this->m_ProcessObject->GetParameters( ); auto extensions = parameters->GetAcceptedFileExtensions( "FileName" ); auto filename = parameters->GetSaveFileName( "FileName" ); QStringList filters; if( extensions != "" ) filters << extensions.c_str( ); filters << "Any file (*)"; this->setFileMode( QFileDialog::AnyFile ); this->setNameFilters( filters ); this->setAcceptMode( QFileDialog::AcceptSave ); if( filename != "" ) { QFileInfo info( filename.c_str( ) ); if( info.exists( ) ) this->setDirectory( info.canonicalPath( ) ); else this->setDirectory( "." ); } else this->setDirectory( "." ); } // ------------------------------------------------------------------------- void cpPluginsIO::ImageWriterQDialog:: _dlg_Accepted( ) { if( this->m_ProcessObject != NULL ) { auto param = this->m_ProcessObject->GetParameters( ); auto files = this->selectedFiles( ); if( files.size( ) > 0 ) param->SetSaveFileName( "FileName", files.begin( )->toStdString( ) ); } // fi } #endif // cpPlugins_QT4 // ------------------------------------------------------------------------- QDialog* cpPluginsIO::ImageWriter:: CreateQDialog( ) { #ifdef cpPlugins_QT4 ImageWriterQDialog* dlg = NULL; if( QApplication::instance( ) != NULL ) { dlg = new ImageWriterQDialog( ); dlg->setProcessObject( this ); } // fi return( dlg ); #else // cpPlugins_QT4 return( NULL ); #endif // cpPlugins_QT4 } // ------------------------------------------------------------------------- cpPluginsIO::ImageWriter:: ImageWriter( ) : Superclass( ) { this->_ConfigureInput< cpPlugins::DataObjects::Image >( "Input", true, false ); this->m_Parameters.Clear( ); this->m_Parameters.ConfigureAsSaveFileName( "FileName" ); this->m_Parameters.SetAcceptedFileExtensions( "FileName", "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)" ); } // ------------------------------------------------------------------------- cpPluginsIO::ImageWriter:: ~ImageWriter( ) { } // ------------------------------------------------------------------------- void cpPluginsIO::ImageWriter:: _GenerateData( ) { auto o = this->GetInputData( "Input" ); cpPlugins_Demangle_ImageScalars_Dims( o, _GD0 ); else this->_Error( "Invalid input image." ); } // ------------------------------------------------------------------------- template< class _TImage > void cpPluginsIO::ImageWriter:: _GD0( _TImage* image ) { typedef itk::ImageFileWriter< _TImage > _TFilter; auto f = this->_CreateITK< _TFilter >( ); f->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) ); f->SetInput( image ); try { f->Update( ); } catch( itk::ExceptionObject& err ) { this->_Error( err.GetDescription( ) ); } // yrt } // eof - $RCSfile$