+void
+MainFrame::OnPreferences (wxCommandEvent& WXUNUSED(event) )
+{
+ DialogPreferences dlg (this, _T("CTSim Preferences"), theApp->getAdvancedOptions(),
+ theApp->getAskDeleteNewDocs(), theApp->getVerboseLogging(), theApp->getStartupTips(),
+ theApp->getUseBackgroundTasks());
+ if (dlg.ShowModal() == wxID_OK) {
+ theApp->setAdvancedOptions (dlg.getAdvancedOptions());
+ theApp->setAskDeleteNewDocs (dlg.getAskDeleteNewDocs());
+ theApp->setVerboseLogging (dlg.getVerboseLogging());
+ theApp->setStartupTips (dlg.getStartupTips());
+ theApp->setUseBackgroundTasks (dlg.getUseBackgroundTasks());
+ }
+}
+
+void
+MainFrame::OnImport (wxCommandEvent& WXUNUSED(event) )
+{
+ DialogImportParameters dialogImport (this, m_iDefaultImportFormat);
+ if (dialogImport.ShowModal() != wxID_OK)
+ return;
+
+ wxString strFormatName (dialogImport.getFormatName (), *wxConvCurrent);
+ m_iDefaultImportFormat = ImageFile::convertImportFormatNameToID (strFormatName.mb_str(wxConvUTF8));
+
+ wxString strExt;
+ wxString strWildcard;
+ if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PPM) {
+ strExt = _T(".ppm");
+ strWildcard = _T("PPM Files (*.ppm)|*.ppm|PGM Files (*.pgm)|*.pgm");
+ }
+#ifdef HAVE_PNG
+ else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PNG) {
+ strExt = _T(".png");
+ strWildcard = _T("PNG Files (*.png)|*.png");
+ }
+#endif
+#ifdef HAVE_CTN_DICOM
+ else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_DICOM) {
+ strExt = _T("*.*");
+ strWildcard = _T("Dicom Files (*.*)|*.*");
+ }
+#endif
+ else {
+ return;
+ }
+
+ wxString strFilename = wxFileSelector (wxString(wxConvUTF8.cMB2WX("Import Filename")), wxString(wxConvUTF8.cMB2WX("")),
+ wxString(wxConvUTF8.cMB2WX("")), strExt, strWildcard, wxFD_OPEN);
+
+ if (! strFilename.IsEmpty()) {
+ 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");
+ }
+}
+