creaImageIOWxAnySimpleDlg.cpp

Go to the documentation of this file.
00001 #include "creaImageIOWxAnySimpleDlg.h"
00002 
00003 #include "creaImageIOWxGimmickReaderDialog.h"
00004 #include <itkAnalyzeImageIO.h>
00005 #include <itkImageFileReader.h>
00006 #include <itkImageSeriesReader.h>
00007 #include <itkImage.h>
00008 #include <itkImageSeriesWriter.h>
00009 #include <itkGDCMImageIO.h>
00010 #include <itkDICOMSeriesFileNames.h>
00011 #include <itkNumericSeriesFileNames.h>
00012 #include <itkVectorImage.h>
00013 #include <itkMetaImageIO.h>
00014 #include <itkOrientedImage.h>
00015 #include <vtkImageReader2.h>
00016 #include <vtkMetaImageReader.h>
00017 #include <boost/filesystem/path.hpp>
00018 #include <boost/filesystem.hpp>
00019 #include <boost/utility.hpp>
00020 #include <creaVtkBasicSlicer.h>
00021 #include "itkImageToVTKImageFilter.h"
00022 
00023 namespace creaImageIO
00024 {
00025 
00027    WxAnySimpleDlg::WxAnySimpleDlg(wxWindow *parent, 
00028                                   wxString i_title,  
00029                                   const std::string i_namedescp , 
00030                                   const std::string i_namedb)
00031     : wxDialog(parent, -1,_T("DISPLAY IMAGES"), wxDefaultPosition, wxSize(230,150))
00032    {
00033         namedescp    = i_namedescp; 
00034         namedb       = i_namedb;
00035 
00036        if(!i_title.empty())
00037        {
00038             this->SetTitle(i_title);  
00039        }
00040        // Button to select file(s)
00041        wxButton *fileBut = new wxButton(this, -1,_T("Select a file to display"), wxPoint(10,7) );
00042        Connect( fileBut->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WxAnySimpleDlg::OnReadFile ); 
00043 
00044        // Button to select directory
00045        wxButton *directoryBut = new wxButton(this, -1,_T("Select a directory to display"), wxPoint(10,40) );
00046        Connect( directoryBut->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WxAnySimpleDlg::OnReadDirectory ); 
00047 
00048        // button to select creaImageIO
00049        wxButton *gimmickBut = new wxButton(this, -1,_T("Select Gimmick"), wxPoint(10,70) );
00050        Connect( gimmickBut->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WxAnySimpleDlg::OnReadGimmick ); 
00051 
00053         m_dicom = true;
00054         Layout(); 
00055     }
00056 
00058 //                                                                  //
00060      
00061      void WxAnySimpleDlg::OnReadFile(wxCommandEvent& event)
00062       {
00063           int resultShowModal;
00064           wxFileDialog* fileDlg = new wxFileDialog( 0,  _T("Select file"), _T(""), _T(""), crea::std2wx("*"), wxOPEN |wxFD_MULTIPLE, wxDefaultPosition);
00065     
00066           resultShowModal = fileDlg->ShowModal();
00067           if ( resultShowModal==wxID_OK )
00068           {
00069                 wxArrayString wxArray;
00070                 fileDlg->GetPaths(wxArray);
00071                 if(wxArray.size() >0)
00072                 {
00073                     for( int i = 0; i < wxArray.GetCount(); i++)
00074                     {
00075                         std::string name = crea::wx2std(wxArray[i]);
00076                         // FOR THE MOMENT ONLY short 3D et short 4D
00077                         readImg(name);
00078                     }
00079                 } 
00080                 else {
00081                     // TO DO WARNING MESSAGES
00082                 }
00083           }
00084           SetReturnCode( resultShowModal );
00085 //         Close();
00086           EndModal( resultShowModal );
00087       }
00088         
00089      void WxAnySimpleDlg::setExts(std::vector<std::string> i_exts)
00090      {
00091          m_exts = i_exts;
00092      }
00094 //                                                                  //
00096 
00097       void WxAnySimpleDlg::OnReadDirectory(wxCommandEvent &event)
00098       {
00099          int resultShowModal;
00100          bool bvalid = false;
00101          long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST;
00102          wxDirDialog* dirDlg = new wxDirDialog( 0, _T("Select the directory to display"), _T(""), style);
00103          
00104          resultShowModal = dirDlg->ShowModal();
00105          if ( resultShowModal==wxID_OK )
00106          {  
00107             std::string path = crea::wx2std(dirDlg->GetPath());
00108             typedef boost::filesystem::directory_iterator dir_it;
00109             dir_it itr(path);
00110             dir_it end_itr;
00111             /*if (boost::filesystem::exists(path))
00112             {*/
00113                 for(;itr != end_itr; ++itr)
00114                 {
00115                        bvalid = m_exts.size() == 0? true : false;
00116                        std::vector<std::string>::iterator it = m_exts.begin();
00117                        std::string ext = itr->filename().substr(itr->filename().find_last_of("."));
00118                        for(; it != m_exts.end(); it++)
00119                        {
00120                            if(ext == (*it) )
00121                            {
00122                                bvalid = true;
00123                                break;
00124                            }
00125                        }
00126                        if (!boost::filesystem::is_directory(itr->status()) && bvalid)
00127                        {
00128                            readImg(itr->string().c_str());
00129                        }
00130                 }
00131          }
00132          SetReturnCode( resultShowModal );
00133 //         Close();
00134          EndModal( resultShowModal );
00135       }
00136 
00138 //                                                                    //
00140             
00141       void WxAnySimpleDlg::OnReadGimmick(wxCommandEvent &event)
00142       {
00143           // Run Gimmick
00144          WxGimmickReaderDialog dlg(0,-1, 
00145                    namedescp,
00146                    namedb, 
00147                    _T("Select image(s)        - Gimmick! (c) CREATIS-LRMN 2008"),
00148                    wxDefaultPosition,
00149                    wxSize(810,750),
00150                    GIMMICK_2D_IMAGE_SELECTION,
00151                    GIMMICK_3D_IMAGE_SELECTION,
00152                    _3D,
00153                    1);
00154          dlg.ShowModal();
00155          if (dlg.GetReturnCode() == wxID_OK)
00156          {
00157             std::vector<std::string> out;
00158             dlg.stopReading();
00159             dlg.GetSelectedFiles(out);
00160             if(m_dicom)
00161             {
00162                 readDicomImg( out);
00163             }
00164             else
00165             {
00166                 std::vector<std::string>::iterator ii = out.begin();
00167                 for (;ii != out.end();ii++)
00168                 {
00169                     readImg( (*ii).c_str() );
00170                 }
00171             }
00172             dlg.OnExit();
00173          }
00174          SetReturnCode( dlg.GetReturnCode() );
00175 //         Close();
00176          EndModal( dlg.GetReturnCode() );
00177        }
00178 
00179 
00180      
00181     wxString WxAnySimpleDlg::getInfoImage()
00182     {
00183         return infoimage;
00184     }
00185 
00186 
00187       // FCY : just to check but not needed, we hardly suppose that we load only same type and dim of images
00188     const std::type_info & WxAnySimpleDlg::getType(const std::string &i_name)
00189     {
00190             typedef itk::ImageIOBase::IOComponentType ScalarPixelType;
00191             itk::ImageIOBase::Pointer imageIO =  itk::ImageIOFactory::CreateImageIO(i_name.c_str(), itk::ImageIOFactory::ReadMode);
00192             imageIO->SetFileName(i_name.c_str());
00193             imageIO->ReadImageInformation();
00194             return imageIO->GetComponentTypeInfo();//AsString( imageIO->GetComponentType());
00195      }
00196 
00197      const size_t WxAnySimpleDlg::getNumberOfDimensions(const std::string &i_name)
00198      {
00199             typedef itk::ImageIOBase::IOComponentType ScalarPixelType;
00200             itk::ImageIOBase::Pointer imageIO =  itk::ImageIOFactory::CreateImageIO(i_name.c_str(), itk::ImageIOFactory::ReadMode);
00201             imageIO->SetFileName(i_name.c_str());
00202             imageIO->ReadImageInformation();
00203             return imageIO->GetNumberOfDimensions();
00204      }
00205 
00206      void WxAnySimpleDlg::readImg(const std::string &i_name)
00207      {
00208           size_t dims = getNumberOfDimensions(i_name);
00209           const std::type_info  *type= &getType(i_name);
00210           switch(dims)
00211           {
00212            case 3:
00213                if (getType(i_name) ==  typeid(unsigned char))
00214                {
00215                     typedef itk::Image<unsigned char, 3> TImage;
00216                     typedef itk::ImageFileReader<TImage> ReaderType; 
00217                     ReaderType::Pointer reader = ReaderType::New(); 
00218                     reader->SetFileName( i_name ); 
00219                     reader->Update(); 
00220                     reader->GetOutput()->Register();
00221                     m_AnyImages.push_back(reader->GetOutput());
00222                }
00223                else if (getType(i_name) ==  typeid(signed char)) 
00224                {
00225                     typedef itk::Image<signed char, 3> TImage;
00226                     typedef itk::ImageFileReader<TImage> ReaderType; 
00227                     ReaderType::Pointer reader = ReaderType::New(); 
00228                     reader->SetFileName( i_name ); 
00229                     reader->Update(); 
00230                     reader->GetOutput()->Register();
00231                     m_AnyImages.push_back(reader->GetOutput());
00232                }
00233                else if (getType(i_name) ==  typeid(short))
00234                {
00235                     typedef itk::Image<short, 3> TImage;
00236                     typedef itk::ImageFileReader<TImage> ReaderType; 
00237                     ReaderType::Pointer reader = ReaderType::New(); 
00238                     reader->SetFileName( i_name ); 
00239                     reader->Update(); 
00240                     reader->GetOutput()->Register();
00241                     m_AnyImages.push_back(reader->GetOutput());
00242                }
00243                else if (getType(i_name) ==  typeid(unsigned short)) 
00244                {
00245                     typedef itk::Image<unsigned short, 3> TImage;
00246                     typedef itk::ImageFileReader<TImage> ReaderType; 
00247                     ReaderType::Pointer reader = ReaderType::New(); 
00248                     reader->SetFileName( i_name ); 
00249                     reader->Update(); 
00250                     reader->GetOutput()->Register();
00251                     m_AnyImages.push_back(reader->GetOutput());
00252               }
00253               else if (getType(i_name) ==  typeid(unsigned int)) 
00254               {
00255                     typedef itk::Image<unsigned int, 3> TImage;
00256                     typedef itk::ImageFileReader<TImage> ReaderType; 
00257                     ReaderType::Pointer reader = ReaderType::New(); 
00258                     reader->SetFileName( i_name ); 
00259                     reader->Update(); 
00260                     reader->GetOutput()->Register();
00261                     m_AnyImages.push_back(reader->GetOutput());
00262               }
00263               else if (getType(i_name) ==  typeid(signed int)) 
00264               {
00265                     typedef itk::Image<signed int, 3> TImage;
00266                     typedef itk::ImageFileReader<TImage> ReaderType; 
00267                     ReaderType::Pointer reader = ReaderType::New(); 
00268                     reader->SetFileName( i_name ); 
00269                     reader->Update(); 
00270                     reader->GetOutput()->Register();
00271                     m_AnyImages.push_back(reader->GetOutput());
00272               }
00273               else if (getType(i_name) ==  typeid(unsigned long)) 
00274               {
00275                     typedef itk::Image<unsigned long, 3> TImage;
00276                     typedef itk::ImageFileReader<TImage> ReaderType; 
00277                     ReaderType::Pointer reader = ReaderType::New(); 
00278                     reader->SetFileName( i_name ); 
00279                     reader->Update(); 
00280                     reader->GetOutput()->Register();
00281                     m_AnyImages.push_back(reader->GetOutput());
00282               }
00283               else if (getType(i_name) ==  typeid(signed long)) 
00284               {
00285                     typedef itk::Image<signed long, 3> TImage;
00286                     typedef itk::ImageFileReader<TImage> ReaderType; 
00287                     ReaderType::Pointer reader = ReaderType::New(); 
00288                     reader->SetFileName( i_name ); 
00289                     reader->Update(); 
00290                     reader->GetOutput()->Register();
00291                     m_AnyImages.push_back(reader->GetOutput());
00292               }
00293               else if (getType(i_name) ==  typeid(float)) 
00294               {
00295                     typedef itk::Image<float, 3> TImage;
00296                     typedef itk::ImageFileReader<TImage> ReaderType; 
00297                     ReaderType::Pointer reader = ReaderType::New(); 
00298                     reader->SetFileName( i_name ); 
00299                     reader->Update(); 
00300                     reader->GetOutput()->Register();
00301                     m_AnyImages.push_back(reader->GetOutput());
00302               }
00303               else if (getType(i_name) ==  typeid(double)) 
00304               {
00305                     typedef itk::Image<double, 3> TImage;
00306                     typedef itk::ImageFileReader<TImage> ReaderType; 
00307                     ReaderType::Pointer reader = ReaderType::New(); 
00308                     reader->SetFileName( i_name ); 
00309                     reader->Update(); 
00310                     reader->GetOutput()->Register();
00311                     m_AnyImages.push_back(reader->GetOutput());
00312               }
00313               else
00314               {
00315                   //????FCY, so what the type????
00316               }
00317               break;
00318               //assume that we have only one 4D file
00319             case 4:
00320                 if (getType(i_name) ==  typeid(unsigned char))
00321                 {
00322                     typedef itk::Image<unsigned char, 4> TImage;
00323                     typedef itk::ImageFileReader<TImage> ReaderType; 
00324                     ReaderType::Pointer reader = ReaderType::New(); 
00325                     reader->SetFileName( i_name ); 
00326                     reader->Update(); 
00327                     reader->GetOutput()->Register();
00328                     m_AnyImages.push_back(reader->GetOutput());
00329                     split4Din3Dvtk<TImage>(reader->GetOutput());
00330                 }
00331                 else if (getType(i_name) ==  typeid(signed char)) 
00332                 {
00333                     typedef itk::Image<signed char, 4> TImage;
00334                     typedef itk::ImageFileReader<TImage> ReaderType; 
00335                     ReaderType::Pointer reader = ReaderType::New(); 
00336                     reader->SetFileName( i_name ); 
00337                     reader->Update(); 
00338                     reader->GetOutput()->Register();
00339                     m_AnyImages.push_back(reader->GetOutput());
00340                     split4Din3Dvtk<TImage>(reader->GetOutput());
00341                 }
00342                 else    if (getType(i_name) ==  typeid(unsigned short))
00343                 {
00344                     typedef itk::Image<unsigned short, 4> TImage;
00345                     typedef itk::ImageFileReader<TImage> ReaderType; 
00346                     ReaderType::Pointer reader = ReaderType::New(); 
00347                     reader->SetFileName( i_name ); 
00348                     reader->Update(); 
00349                     reader->GetOutput()->Register();
00350                     m_AnyImages.push_back(reader->GetOutput());
00351                     split4Din3Dvtk<TImage>(reader->GetOutput());
00352                 }
00353                 else if(getType(i_name) == typeid(short))
00354                 {
00355                     typedef itk::Image<short, 4> TImage;
00356                     typedef itk::ImageFileReader<TImage> ReaderType; 
00357                     ReaderType::Pointer reader = ReaderType::New(); 
00358                     reader->SetFileName( i_name ); 
00359                     try 
00360                     { 
00361                         reader->Update(); 
00362                     } 
00363                     catch( itk::ExceptionObject & err ) 
00364                     { 
00365                         std::cout << "Caught an exception reading" << i_name << ": " << std::endl; 
00366                         std::cout << err << " " << __FILE__ << " " << __LINE__ << std::endl; 
00367                         throw err; 
00368                     } 
00369                     catch(...) 
00370                     { 
00371                         std::cout << "Error while reading image " << i_name << std::endl; 
00372                         throw; 
00373                     } 
00374                     reader->GetOutput()->Register();
00375                     m_AnyImages.push_back(reader->GetOutput());
00376                     split4Din3Dvtk<TImage>(reader->GetOutput());
00377                 }
00378                 else if (getType(i_name) ==  typeid(unsigned short)) 
00379                 {
00380                     typedef itk::Image<unsigned short, 4> TImage;
00381                     typedef itk::ImageFileReader<TImage> ReaderType; 
00382                     ReaderType::Pointer reader = ReaderType::New(); 
00383                     reader->SetFileName( i_name ); 
00384                     reader->Update(); 
00385                     reader->GetOutput()->Register();
00386                     m_AnyImages.push_back(reader->GetOutput());
00387                     split4Din3Dvtk<TImage>(reader->GetOutput());
00388                }
00389                else if (getType(i_name) ==  typeid(unsigned int)) 
00390                {
00391                     typedef itk::Image<unsigned int, 4> TImage;
00392                     typedef itk::ImageFileReader<TImage> ReaderType; 
00393                     ReaderType::Pointer reader = ReaderType::New(); 
00394                     reader->SetFileName( i_name ); 
00395                     reader->Update(); 
00396                     reader->GetOutput()->Register();
00397                     m_AnyImages.push_back(reader->GetOutput());
00398                     split4Din3Dvtk<TImage>(reader->GetOutput());
00399                }
00400                else if (getType(i_name) ==  typeid(signed int)) 
00401                {
00402                     typedef itk::Image<signed int, 4> TImage;
00403                     typedef itk::ImageFileReader<TImage> ReaderType; 
00404                     ReaderType::Pointer reader = ReaderType::New(); 
00405                     reader->SetFileName( i_name ); 
00406                     reader->Update(); 
00407                     reader->GetOutput()->Register();
00408                     m_AnyImages.push_back(reader->GetOutput());
00409                     split4Din3Dvtk<TImage>(reader->GetOutput());
00410                }
00411                else if (getType(i_name) ==  typeid(unsigned long)) 
00412                {
00413                     typedef itk::Image<unsigned long, 4> TImage;
00414                     typedef itk::ImageFileReader<TImage> ReaderType; 
00415                     ReaderType::Pointer reader = ReaderType::New(); 
00416                     reader->SetFileName( i_name ); 
00417                     reader->Update(); 
00418                     reader->GetOutput()->Register();
00419                     m_AnyImages.push_back(reader->GetOutput());
00420                     split4Din3Dvtk<TImage>(reader->GetOutput());
00421                }
00422                else if (getType(i_name) ==  typeid(signed long)) 
00423                {
00424                     typedef itk::Image<signed long, 4> TImage;
00425                     typedef itk::ImageFileReader<TImage> ReaderType; 
00426                     ReaderType::Pointer reader = ReaderType::New(); 
00427                     reader->SetFileName( i_name ); 
00428                     reader->Update(); 
00429                     reader->GetOutput()->Register();
00430                     m_AnyImages.push_back(reader->GetOutput());
00431                     split4Din3Dvtk<TImage>(reader->GetOutput());
00432                }
00433                else if (getType(i_name) ==  typeid(float)) 
00434                {
00435                     typedef itk::Image<float, 4> TImage;
00436                     typedef itk::ImageFileReader<TImage> ReaderType; 
00437                     ReaderType::Pointer reader = ReaderType::New(); 
00438                     reader->SetFileName( i_name ); 
00439                     reader->Update(); 
00440                     reader->GetOutput()->Register();
00441                     m_AnyImages.push_back(reader->GetOutput());
00442                     split4Din3Dvtk<TImage>(reader->GetOutput());
00443                }
00444                else if (getType(i_name) ==  typeid(double)) 
00445                {
00446                     typedef itk::Image<double, 4> TImage;
00447                     typedef itk::ImageFileReader<TImage> ReaderType; 
00448                     ReaderType::Pointer reader = ReaderType::New(); 
00449                     reader->SetFileName( i_name ); 
00450                     reader->Update(); 
00451                     reader->GetOutput()->Register();
00452                     m_AnyImages.push_back(reader->GetOutput());
00453                     split4Din3Dvtk<TImage>(reader->GetOutput());
00454                }
00455                else
00456                {
00457                   //????FCY, so what the type????
00458                }
00459                break;
00460            }
00461            
00462            // Test to know if we have to add new type
00463            bool btest = false;
00464            if( m_AnyDims.size() != 0)
00465            {
00466                btest = true;
00467            }
00468            else
00469            {
00470                m_AnyDims.push_back(dims);
00471                m_AnyType.push_back((std::type_info*)&getType(i_name));  //JPR cast
00472            }
00473            if (btest)
00474            {
00475                if(m_AnyDims.front() != dims || m_AnyType.front()->before(getType(i_name)))
00476                {
00477                    m_AnyDims.push_back(dims);
00478                    m_AnyType.push_back((std::type_info*)&getType(i_name)); //JPR cast
00479                }
00480                else{}
00481            }
00482            else  {}
00483       }
00484 
00485       void WxAnySimpleDlg::readDicomImg(const std::vector<std::string> &i_names)
00486       {
00487           typedef itk::Image<short,3> TImage;
00488           typedef itk::GDCMImageIO GDCMType;
00489           typedef itk::DICOMSeriesFileNames dicnames;
00490           GDCMType::Pointer gdcmIO = GDCMType::New(); 
00491           dicnames::Pointer generator = dicnames::New();
00492 
00493 
00494             typedef itk::ImageSeriesReader<TImage> ReaderType; 
00495             ReaderType::Pointer reader = ReaderType::New(); 
00496             reader->SetImageIO(gdcmIO);
00497             reader->SetFileNames(i_names);
00498         //    reader->SetFileName( i_name ); 
00499             try 
00500             { 
00501                 reader->Update(); 
00502             } 
00503             catch( itk::ExceptionObject & err ) 
00504             { 
00505             //    std::cout << "Caught an exception reading" << i_name << ": " << std::endl; 
00506                 std::cout << err << " " << __FILE__ << " " << __LINE__ << std::endl; 
00507                 throw err; 
00508             } 
00509             catch(...) 
00510             { 
00511                 //std::cout << "Error while reading image " << i_name << std::endl; 
00512                 throw; 
00513             } 
00514             //m_Iresults.push_back(reader->GetOutput()); 
00515     
00516       }
00517 
00518       template <typename TImage> 
00519       void WxAnySimpleDlg::split3Din3Dvtk(TImage* i_Img)
00520       {
00521           typedef itk::ImageToVTKImageFilter< TImage > ConnectorType;
00522           typename ConnectorType::Pointer       connector = ConnectorType::New();
00523           connector->SetInput(i_Img);
00524           connector->GetImporter()->SetDataScalarTypeToUnsignedChar();
00525           connector->Update();
00526           vtkImageData *im = vtkImageData::New();
00527           im->ShallowCopy(connector->GetOutput());
00528           im->Update();
00529           m_Vresults.push_back(im);
00530       }
00531 
00532 
00533       template <typename TImage> 
00534       void WxAnySimpleDlg::split4Din3Dvtk(TImage* i_Img)
00535       {
00536           if(i_Img->GetImageDimension() == 4)
00537           {
00538               // size of fourth dimension 
00539               int dsize = i_Img->GetLargestPossibleRegion().GetSize(3);
00540               // Output Type
00541               typedef itk::Image<unsigned char,3> ImageOutputType;  
00542               typedef itk::ImageSeriesWriter<TImage, ImageOutputType >  SeriesWriterType;
00543               typedef itk::MetaImageIO MetaImageType;
00544               MetaImageType::Pointer metaIO;
00545               typename SeriesWriterType::Pointer seriesWriter = SeriesWriterType::New();
00546             
00547               // from JPR file to generate output files
00548               typedef itk::NumericSeriesFileNames NamesGeneratorType;
00549               NamesGeneratorType::Pointer namesGenerator = NamesGeneratorType::New();
00550               namesGenerator->SetStartIndex(0);
00551               namesGenerator->SetEndIndex(dsize-1); 
00552               namesGenerator->SetIncrementIndex(1);
00553               std::string format = m_dir;
00554               format += "/image%03d.mhd";
00555               namesGenerator->SetSeriesFormat( format.c_str() );
00556              
00557               const std::vector<std::string> names = namesGenerator->GetFileNames();
00558               seriesWriter->SetFileNames( names );
00559               seriesWriter->SetInput(i_Img);
00560               seriesWriter->SetImageIO(metaIO);
00561               try
00562               {
00563                  seriesWriter->Update();
00564                  vtkMetaImageReader *vReader = vtkMetaImageReader::New();
00565                  std::vector<std::string>::const_iterator it = names.begin();
00566                  for( ;it !=  names.end(); ++it)
00567                  {
00568                      vReader->SetFileName((*it).c_str());
00569                      vReader->Update();
00570                      m_Vresults.push_back(vReader->GetOutput());
00571                      
00572                  }
00573               }
00574               catch( itk::ExceptionObject & excp )
00575               {
00576                  std::cerr << "Exception thrown while writing the series " << std::endl;
00577                  std::cerr << excp << std::endl;
00578                  //return EXIT_FAILURE;
00579               }
00580           }
00581       }
00582 
00583       bool WxAnySimpleDlg::AllSameType()
00584       {
00585            if(m_AnyType.size() == 1)
00586            {
00587                return true;
00588            }
00589            else
00590            {
00591                return false;
00592            }
00593 
00594       }
00595 
00596  } // namespace end
00597