r443: no message
[ctsim.git] / src / views.cpp
index 8053e7e710c07e517345aed8f9cb23c57537f29f..e2c0c47e4a08c6fb72765ef1d720f0c78451742a 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.75 2001/01/26 23:23:00 kevin Exp $
+**  $Id: views.cpp,v 1.76 2001/01/27 01:51:47 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
@@ -224,7 +224,7 @@ EVT_MENU(IFMENU_PLOT_HISTOGRAM, ImageFileView::OnPlotHistogram)
 END_EVENT_TABLE()
 
 ImageFileView::ImageFileView() 
-: wxView(), m_canvas(NULL), m_pFrame(NULL), m_bMinSpecified(false), m_bMaxSpecified(false), m_pFileMenu(0)
+: wxView(), m_pCanvas(NULL), m_pFrame(NULL), m_bMinSpecified(false), m_bMaxSpecified(false), m_pFileMenu(0)
 {
   m_iDefaultExportFormatID = ImageFile::FORMAT_PNG;
 }
@@ -374,7 +374,8 @@ ImageFileView::OnCompare (wxCommandEvent& event)
         if (theApp->getSetModifyNewDocs())
           pDifferenceDoc->Modify(true);
         pDifferenceDoc->UpdateAllViews(this);
-        pDifferenceDoc->GetFirstView()->OnUpdate (this, NULL);
+        pDifferenceDoc->getView()->OnUpdate (this, NULL);
+        pDifferenceDoc->getView()->getFrame()->Show(true);
       }
       wxMessageBox(os.str().c_str(), "Image Comparison");
     }
@@ -471,7 +472,8 @@ ImageFileView::OnAdd (wxCommandEvent& event)
       if (theApp->getSetModifyNewDocs())
         pNewDoc->Modify(TRUE);
       pNewDoc->UpdateAllViews(this);
-      pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->getFrame()->Show(true);
     }
   }
 }
@@ -511,7 +513,8 @@ ImageFileView::OnSubtract (wxCommandEvent& event)
       if (theApp->getSetModifyNewDocs())
         pNewDoc->Modify(TRUE);
       pNewDoc->UpdateAllViews(this);
-      pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->getFrame()->Show(true);
     }
   }
 }
@@ -551,7 +554,8 @@ ImageFileView::OnMultiply (wxCommandEvent& event)
       if (theApp->getSetModifyNewDocs())
         pNewDoc->Modify(TRUE);
       pNewDoc->UpdateAllViews(this);
-      pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->getFrame()->Show(true);
     }
   }
 }
@@ -591,7 +595,8 @@ ImageFileView::OnDivide (wxCommandEvent& event)
       if (theApp->getSetModifyNewDocs())
         pNewDoc->Modify(TRUE);
       pNewDoc->UpdateAllViews(this);
-      pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->OnUpdate (this, NULL);
+      pNewDoc->getView()->getFrame()->Show(true);
     }
   }
 }
@@ -915,7 +920,7 @@ ImageFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
   int width, height;
   m_pFrame->GetClientSize (&width, &height);
   m_pFrame->SetTitle("ImageFileView");
-  m_canvas = CreateCanvas (this, m_pFrame);
+  m_pCanvas = CreateCanvas (this, m_pFrame);
   
   int x, y;  // X requires a forced resize
   m_pFrame->GetSize(&x, &y);
@@ -931,7 +936,7 @@ void
 ImageFileView::OnDraw (wxDC* dc)
 {
   wxSize sizeWindow = m_pFrame->GetClientSize();
-  wxSize sizeBest = m_canvas->GetBestSize();
+  wxSize sizeBest = m_pCanvas->GetBestSize();
   if (sizeWindow.x > sizeBest.x || sizeWindow.y > sizeBest.y)
     m_pFrame->SetClientSize (sizeBest);
   
@@ -939,8 +944,8 @@ ImageFileView::OnDraw (wxDC* dc)
     dc->DrawBitmap(m_bitmap, 0, 0, false);
   
   int xCursor, yCursor;
-  if (m_canvas->GetCurrentCursor (xCursor, yCursor))
-    m_canvas->DrawRubberBandCursor (*dc, xCursor, yCursor);
+  if (m_pCanvas->GetCurrentCursor (xCursor, yCursor))
+    m_pCanvas->DrawRubberBandCursor (*dc, xCursor, yCursor);
 }
 
 
@@ -979,12 +984,12 @@ ImageFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
     int ySize = ny;
     ySize = clamp (ySize, 0, 800);
     m_pFrame->SetClientSize (xSize, ySize);
-    m_canvas->SetScrollbars(20, 20, nx/20, ny/20);
-    m_canvas->SetBackgroundColour(*wxWHITE);
+    m_pCanvas->SetScrollbars(20, 20, nx/20, ny/20);
+    m_pCanvas->SetBackgroundColour(*wxWHITE);
   } 
   
-  if (m_canvas)
-    m_canvas->Refresh();
+  if (m_pCanvas)
+    m_pCanvas->Refresh();
 }
 
 bool 
@@ -993,11 +998,11 @@ ImageFileView::OnClose (bool deleteWindow)
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
-  if (m_canvas) {
-    m_canvas->Clear();
-       m_canvas->Show(false);
-    m_canvas->setView(NULL);
-    m_canvas = NULL;
+  if (m_pCanvas) {
+    m_pCanvas->Clear();
+       m_pCanvas->Show(false);
+    m_pCanvas->setView(NULL);
+    m_pCanvas = NULL;
   }
   wxString s(theApp->GetAppName());
   if (m_pFrame)
@@ -1087,7 +1092,8 @@ ImageFileView::OnScaleSize (wxCommandEvent& event)
     if (theApp->getSetModifyNewDocs())
       pScaledDoc->Modify(TRUE);
     pScaledDoc->UpdateAllViews (this);
-    pScaledDoc->GetFirstView()->OnUpdate (this, NULL);
+    pScaledDoc->getView()->OnUpdate (this, NULL);
+    pScaledDoc->getView()->getFrame()->Show(true);
   }
 }
 
@@ -1095,7 +1101,7 @@ void
 ImageFileView::OnPlotRow (wxCommandEvent& event)
 {
   int xCursor, yCursor;
-  if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
     wxMessageBox ("No row selected. Please use left mouse button on image to select column","Error");
     return;
   }
@@ -1179,7 +1185,7 @@ void
 ImageFileView::OnPlotCol (wxCommandEvent& event)
 {
   int xCursor, yCursor;
-  if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
     wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
     return;
   }
@@ -1264,7 +1270,7 @@ void
 ImageFileView::OnPlotFFTRow (wxCommandEvent& event)
 {
   int xCursor, yCursor;
-  if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
     wxMessageBox ("No row selected. Please use left mouse button on image to select column","Error");
     return;
   }
@@ -1356,7 +1362,7 @@ void
 ImageFileView::OnPlotFFTCol (wxCommandEvent& event)
 {
   int xCursor, yCursor;
-  if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
     wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
     return;
   }
@@ -1456,7 +1462,7 @@ void
 ImageFileView::OnCompareCol (wxCommandEvent& event)
 {
   int xCursor, yCursor;
-  if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
     wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
     return;
   }
@@ -1545,7 +1551,7 @@ void
 ImageFileView::OnCompareRow (wxCommandEvent& event)
 {
   int xCursor, yCursor;
-  if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
     wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
     return;
   }
@@ -1728,7 +1734,7 @@ EVT_MENU(PHMMENU_PROCESS_PROJECTIONS, PhantomFileView::OnProjections)
 END_EVENT_TABLE()
 
 PhantomFileView::PhantomFileView() 
-: wxView(), m_canvas(NULL), m_pFrame(NULL), m_pFileMenu(0)
+: wxView(), m_pCanvas(NULL), m_pFrame(NULL), m_pFileMenu(0)
 {
   m_iDefaultNDet = 367;
   m_iDefaultNView = 320;
@@ -1849,6 +1855,7 @@ PhantomFileView::OnProjections (wxCommandEvent& event)
       ::wxYield();
       if (theApp->getSetModifyNewDocs())
         pProjectionDoc->Modify(true);
+      pProjectionDoc->getView()->getFrame()->Show(true);
       pProjectionDoc->UpdateAllViews(this);
     }
   }
@@ -1888,6 +1895,7 @@ PhantomFileView::OnRasterize (wxCommandEvent& event)
       if (theApp->getSetModifyNewDocs())
         pRasterDoc->Modify(true);
       pRasterDoc->UpdateAllViews(this);
+      pRasterDoc->getView()->getFrame()->Show(true);
       std::ostringstream os;
       os << "Rasterize Phantom " << rPhantom.name() << ": XSize=" << m_iDefaultRasterNX << ", YSize=" 
         << m_iDefaultRasterNY << ", nSamples=" << m_iDefaultRasterNSamples;
@@ -1998,7 +2006,7 @@ PhantomFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
   int width, height;
   m_pFrame->GetClientSize(&width, &height);
   m_pFrame->SetTitle("PhantomFileView");
-  m_canvas = CreateCanvas (this, m_pFrame);
+  m_pCanvas = CreateCanvas (this, m_pFrame);
   
 #ifdef __X__
   int x, y;  // X requires a forced resize
@@ -2015,8 +2023,8 @@ PhantomFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
 void 
 PhantomFileView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
 {
-  if (m_canvas)
-    m_canvas->Refresh();
+  if (m_pCanvas)
+    m_pCanvas->Refresh();
 }
 
 bool 
@@ -2025,11 +2033,11 @@ PhantomFileView::OnClose (bool deleteWindow)
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
-  if (m_canvas) {
-    m_canvas->Clear();
-    m_canvas->setView(NULL);
-       m_canvas->Show(false);
-    m_canvas = NULL;
+  if (m_pCanvas) {
+    m_pCanvas->Clear();
+    m_pCanvas->setView(NULL);
+       m_pCanvas->Show(false);
+    m_pCanvas = NULL;
   }
   wxString s(wxTheApp->GetAppName());
   if (m_pFrame)
@@ -2052,7 +2060,7 @@ void
 PhantomFileView::OnDraw (wxDC* dc)
 {
   int xsize, ysize;
-  m_canvas->GetClientSize (&xsize, &ysize);
+  m_pCanvas->GetClientSize (&xsize, &ysize);
   SGPDriver driver (dc, xsize, ysize);
   SGP sgp (driver);
   const Phantom& rPhantom = GetDocument()->getPhantom();
@@ -2105,7 +2113,7 @@ EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar)
 END_EVENT_TABLE()
 
 ProjectionFileView::ProjectionFileView() 
-: wxView(), m_canvas(NULL), m_pFrame(NULL), m_pFileMenu(0)
+: wxView(), m_pCanvas(NULL), m_pFrame(NULL), m_pFileMenu(0)
 {
   m_iDefaultNX = 256;
   m_iDefaultNY = 256;
@@ -2176,7 +2184,8 @@ ProjectionFileView::OnConvertPolar (wxCommandEvent& event)
     if (theApp->getSetModifyNewDocs())
       pPolarDoc->Modify(true);
     pPolarDoc->UpdateAllViews();
-    pPolarDoc->GetFirstView()->OnUpdate (this, NULL);
+    pPolarDoc->getView()->OnUpdate (this, NULL);
+    pPolarDoc->getView()->getFrame()->Show(true);
   }
 }
 
@@ -2210,8 +2219,10 @@ ProjectionFileView::OnConvertFFTPolar (wxCommandEvent& event)
     if (theApp->getSetModifyNewDocs())
       pPolarDoc->Modify(true);
     pPolarDoc->UpdateAllViews();
-    pPolarDoc->GetFirstView()->OnUpdate (this, NULL);
-}}
+    pPolarDoc->getView()->OnUpdate (this, NULL);
+    pPolarDoc->getView()->getFrame()->Show(true);
+}
+}
 
 void
 ProjectionFileView::OnReconstructFourier (wxCommandEvent& event)
@@ -2289,6 +2300,7 @@ ProjectionFileView::OnReconstructFBP (wxCommandEvent& event)
       if (theApp->getSetModifyNewDocs())
         pReconDoc->Modify(true);
       pReconDoc->UpdateAllViews(this);
+      pReconDoc->getView()->getFrame()->Show(true);
       ImageFileView* rasterView = dynamic_cast<ImageFileView*>(pReconDoc->GetFirstView());
       if (rasterView) {
         rasterView->getFrame()->SetFocus();
@@ -2408,7 +2420,7 @@ ProjectionFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
   int width, height;
   m_pFrame->GetClientSize(&width, &height);
   m_pFrame->SetTitle("ProjectionFileView");
-  m_canvas = CreateCanvas(this, m_pFrame);
+  m_pCanvas = CreateCanvas(this, m_pFrame);
   
 #ifdef __X__
   int x, y;  // X requires a forced resize
@@ -2426,7 +2438,7 @@ void
 ProjectionFileView::OnDraw (wxDC* dc)
 {
   wxSize clientSize = m_pFrame->GetClientSize();
-  wxSize bestSize = m_canvas->GetBestSize();
+  wxSize bestSize = m_pCanvas->GetBestSize();
   
   if (clientSize.x > bestSize.x || clientSize.y > bestSize.y)
     m_pFrame->SetClientSize (bestSize);
@@ -2478,11 +2490,11 @@ ProjectionFileView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint)
     xSize = clamp (xSize, 0, 800);
     ySize = clamp (ySize, 0, 800);
     m_pFrame->SetClientSize (xSize, ySize);
-    m_canvas->SetScrollbars (20, 20, nDet/20, nView/20);
+    m_pCanvas->SetScrollbars (20, 20, nDet/20, nView/20);
   }
   
-  if (m_canvas)
-    m_canvas->Refresh();
+  if (m_pCanvas)
+    m_pCanvas->Refresh();
 }
 
 bool 
@@ -2491,11 +2503,11 @@ ProjectionFileView::OnClose (bool deleteWindow)
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
-  if (m_canvas) {
-    m_canvas->Clear();
-    m_canvas->setView(NULL);
-       m_canvas->Show(false);
-    m_canvas = NULL;
+  if (m_pCanvas) {
+    m_pCanvas->Clear();
+    m_pCanvas->setView(NULL);
+       m_pCanvas->Show(false);
+    m_pCanvas = NULL;
   }
   wxString s(wxTheApp->GetAppName());
   if (m_pFrame)
@@ -2547,10 +2559,8 @@ EVT_MENU(PLOTMENU_VIEW_SCALE_FULL, PlotFileView::OnScaleFull)
 END_EVENT_TABLE()
 
 PlotFileView::PlotFileView() 
-: wxView(), m_canvas(NULL), m_pFrame(NULL), m_pEZPlot(NULL), m_pFileMenu(0)
+: wxView(), m_pFrame(NULL), m_pCanvas(NULL), m_pEZPlot(NULL), m_pFileMenu(0), m_bMinSpecified(false), m_bMaxSpecified(false)
 {
-  m_bMinSpecified = false;
-  m_bMaxSpecified = false;
 }
 
 PlotFileView::~PlotFileView()
@@ -2738,7 +2748,7 @@ PlotFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
   int width, height;
   m_pFrame->GetClientSize(&width, &height);
   m_pFrame->SetTitle ("Plot File");
-  m_canvas = CreateCanvas (this, m_pFrame);
+  m_pCanvas = CreateCanvas (this, m_pFrame);
   
 #ifdef __X__
   int x, y;  // X requires a forced resize
@@ -2761,7 +2771,7 @@ PlotFileView::OnDraw (wxDC* dc)
   
   if (iNColumns > 0 && iNRecords > 0) {
     int xsize, ysize;
-    m_canvas->GetClientSize (&xsize, &ysize);
+    m_pCanvas->GetClientSize (&xsize, &ysize);
     SGPDriver driver (dc, xsize, ysize);
     SGP sgp (driver);
     if (m_pEZPlot)
@@ -2813,8 +2823,8 @@ PlotFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
     delete pdY;
   }
   
-  if (m_canvas)
-    m_canvas->Refresh();
+  if (m_pCanvas)
+    m_pCanvas->Refresh();
 }
 
 bool 
@@ -2823,11 +2833,11 @@ PlotFileView::OnClose (bool deleteWindow)
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
-  if (m_canvas) {
-    m_canvas->Clear();
-    m_canvas->setView (NULL);
-       m_canvas->Show(false);
-    m_canvas = NULL;
+  if (m_pCanvas) {
+    m_pCanvas->Clear();
+    m_pCanvas->setView (NULL);
+       m_pCanvas->Show(false);
+    m_pCanvas = NULL;
   }
   wxString s(wxTheApp->GetAppName());
   if (m_pFrame)