- ImageFile* pIF = new ImageFile;
- if (pIF->importImage (strFormatName.c_str(), strFilename.c_str())) {
- ImageFileDocument* pIFDoc = theApp->newImageDoc();
- pIFDoc->setImageFile(pIF);
- pIFDoc->getView()->getFrame()->Show(true);
- std::ostringstream os;
- os << "Import file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")";
- pIF->labelAdd (os.str().c_str());
- if (theApp->getAskDeleteNewDocs())
- pIFDoc->Modify (true);
- pIFDoc->UpdateAllViews();
- pIFDoc->GetFirstView()->OnUpdate (NULL, NULL);
- pIFDoc->getView()->getFrame()->Show(true);
- } else
- delete pIF;
+ if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PPM || m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PNG) {
+ ImageFile* pIF = new ImageFile;
+ if (pIF->importImage (strFormatName.mb_str(wxConvUTF8), strFilename.mb_str(wxConvUTF8))) {
+ ImageFileDocument* pIFDoc = theApp->newImageDoc();
+ pIFDoc->setImageFile(pIF);
+ pIFDoc->getView()->getFrame()->Show(true);
+ std::ostringstream os;
+ os << "Import file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")";
+ pIF->labelAdd (os.str().c_str());
+ if (theApp->getAskDeleteNewDocs())
+ pIFDoc->Modify (true);
+ pIFDoc->UpdateAllViews();
+ pIFDoc->GetFirstView()->OnUpdate (NULL, NULL);
+ pIFDoc->getView()->getFrame()->Show(true);
+ } else
+ delete pIF;
+ }
+#ifdef HAVE_CTN_DICOM
+ else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_DICOM) {
+ DicomImporter dicomImport (strFilename.mb_str(wxConvUTF8));
+ if (dicomImport.fail()) {
+ ::wxMessageBox (wxConvUTF8.cMB2WX(dicomImport.failMessage().c_str()), _T("Import Error"));
+ } else if (dicomImport.testImage()) {
+ ImageFileDocument* pIFDoc = theApp->newImageDoc();
+ ImageFile* pIF = dicomImport.getImageFile();
+ pIFDoc->setImageFile (pIF);
+ std::ostringstream os;
+ os << "Import file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")";
+ pIF->labelAdd (os.str().c_str());
+ if (theApp->getAskDeleteNewDocs())
+ pIFDoc->Modify (true);
+ pIFDoc->UpdateAllViews();
+ pIFDoc->getView()->setInitialClientSize();
+ pIFDoc->Activate();
+ } else if (dicomImport.testProjections()) {
+ ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc();
+ Projections* pProj = dicomImport.getProjections();
+ pProjDoc->setProjections (pProj);
+ pProjDoc->getView()->getFrame()->Show(true);
+ std::ostringstream os;
+ os << "Import projection file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")";
+ pProj->setRemark (os.str().c_str());
+ if (theApp->getAskDeleteNewDocs())
+ pProjDoc->Modify (true);
+ pProjDoc->UpdateAllViews();
+ pProjDoc->getView()->setInitialClientSize();
+ pProjDoc->Activate();
+ } else
+ ::wxMessageBox (_T("Unrecognized DICOM file contents"), _T("Import Error"));
+ }
+#endif
+ else
+ sys_error (ERR_WARNING, "Unknown import format type");