r486: no message
[ctsim.git] / src / views.cpp
index 0a3896c012513435375f37d1f0eec593adcb9d32..9d2af66574be0219347e110b2edd811c2e2489d5 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.92 2001/01/30 07:32:13 kevin Exp $
+**  $Id: views.cpp,v 1.98 2001/02/04 21:28:19 kevin Exp $
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
@@ -226,6 +226,9 @@ EVT_MENU(IFMENU_IMAGE_SUBTRACT, ImageFileView::OnSubtract)
 EVT_MENU(IFMENU_IMAGE_MULTIPLY, ImageFileView::OnMultiply)
 EVT_MENU(IFMENU_IMAGE_DIVIDE, ImageFileView::OnDivide)
 EVT_MENU(IFMENU_IMAGE_SCALESIZE, ImageFileView::OnScaleSize)
+#if wxUSE_GLCANVAS
+EVT_MENU(IFMENU_IMAGE_CONVERT3D, ImageFileView::OnConvert3d)
+#endif
 #ifdef HAVE_FFT
 EVT_MENU(IFMENU_FILTER_FFT, ImageFileView::OnFFT)
 EVT_MENU(IFMENU_FILTER_IFFT, ImageFileView::OnIFFT)
@@ -861,6 +864,9 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   image_menu->Append (IFMENU_IMAGE_DIVIDE, "&Divide...");
   image_menu->AppendSeparator();
   image_menu->Append (IFMENU_IMAGE_SCALESIZE, "S&cale Size...");
+#if wxUSE_GLCANVAS
+  image_menu->Append (IFMENU_IMAGE_CONVERT3D, "Convert &3-D\tCtrl-3");
+#endif
   
   m_pMenuAnalyze = new wxMenu;
   m_pMenuAnalyze->Append (IFMENU_PLOT_ROW, "Plot &Row");
@@ -898,7 +904,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   subframe->Centre(wxBOTH);
   
-  wxAcceleratorEntry accelEntries[10];
+  wxAcceleratorEntry accelEntries[11];
   accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
   accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
   accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
@@ -909,7 +915,13 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('A'), IFMENU_VIEW_SCALE_AUTO);
   accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('U'), IFMENU_VIEW_SCALE_FULL);
   accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('E'), IFMENU_VIEW_SCALE_MINMAX);
+#if wxUSE_GLCANVAS
+  accelEntries[10].Set (wxACCEL_CTRL, static_cast<int>('3'), IFMENU_IMAGE_CONVERT3D);
+  wxAcceleratorTable accelTable (11, accelEntries);
+#else
   wxAcceleratorTable accelTable (10, accelEntries);
+#endif
+
   subframe->SetAcceleratorTable (accelTable);
   
   return subframe;
@@ -920,7 +932,6 @@ bool
 ImageFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
 {
   m_pFrame = CreateChildFrame(doc, this);
-  (m_pFrame);
   
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
@@ -1020,7 +1031,7 @@ ImageFileView::OnClose (bool deleteWindow)
   SetFrame(NULL);
   
   if (deleteWindow) {
-    m_pFrame->Destroy();
+    delete m_pFrame;
     m_pFrame = NULL;
     if (GetDocument() && GetDocument()->getBadFileOpen())
       ::wxYield();  // wxWindows bug workaround
@@ -1105,6 +1116,24 @@ ImageFileView::OnScaleSize (wxCommandEvent& event)
   }
 }
 
+#if wxUSE_GLCANVAS
+void
+ImageFileView::OnConvert3d (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  Graph3dFileDocument* pGraph3d = theApp->newGraph3dDoc();
+  pGraph3d->setBadFileOpen();
+  pGraph3d->createFromImageFile (rIF);
+  pGraph3d->getView()->OnUpdate (this, NULL);
+  pGraph3d->UpdateAllViews();
+  pGraph3d->getView()->getFrame()->SetClientSize (400, 400);
+  pGraph3d->getView()->getFrame()->Show (true);
+  GetDocumentManager()->ActivateView (pGraph3d->getView(), true, false);
+  ::wxYield();
+  pGraph3d->getView()->getCanvas()->SetFocus();
+}
+#endif
+
 void
 ImageFileView::OnPlotRow (wxCommandEvent& event)
 {
@@ -1821,7 +1850,10 @@ PhantomFileView::OnProjections (wxCommandEvent& event)
       Scanner theScanner (rPhantom, sGeometry.c_str(), m_iDefaultNDet, m_iDefaultNView, m_iDefaultNSample, 
                           m_dDefaultRotation, m_dDefaultFocalLength, m_dDefaultFieldOfView);
       if (theScanner.fail()) {
-        *theApp->getLog() << "Failed making scanner: " << theScanner.failMessage().c_str() << "\n";
+        wxString msg = "Failed making scanner\n";
+        msg += theScanner.failMessage().c_str();
+        *theApp->getLog() << msg << "\n";
+        wxMessageBox (msg, "Error");
         return;
       }
       pProj->initFromScanner (theScanner);
@@ -2140,7 +2172,7 @@ EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar)
 END_EVENT_TABLE()
 
 ProjectionFileView::ProjectionFileView() 
-: wxView(), m_pCanvas(NULL), m_pFrame(NULL), m_pFileMenu(0)
+: wxView(), m_pFrame(0), m_pCanvas(0), m_pFileMenu(0)
 {
 #ifdef DEBUG
   m_iDefaultNX = 115;