r468: Fixed shutdown error (i hope!)
[ctsim.git] / src / views.cpp
index a72ace4a3432104c64fdcbeecc31f8e2c17ccedd..a2a30f40abd2590dd9fe78b0c5cee84b025a25c2 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.87 2001/01/28 22:45:54 kevin Exp $
+**  $Id: views.cpp,v 1.88 2001/01/29 23:11:32 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
@@ -387,8 +387,7 @@ ImageFileView::OnCompare (wxCommandEvent& event)
           << " and " << pCompareDoc->GetFirstView()->GetFrame()->GetTitle().c_str() << ": "
           << os.str().c_str();
         differenceImage.labelAdd (os.str().c_str());
-        if (theApp->getSetModifyNewDocs())
-          pDifferenceDoc->Modify (true);
+        pDifferenceDoc->Modify (true);
         pDifferenceDoc->UpdateAllViews (this);
         pDifferenceDoc->getView()->OnUpdate (this, NULL);
         pDifferenceDoc->getView()->getFrame()->Show(true);
@@ -404,8 +403,7 @@ ImageFileView::OnInvertValues (wxCommandEvent& event)
   ImageFile& rIF = GetDocument()->getImageFile();
   rIF.invertPixelValues (rIF);
   rIF.labelAdd ("Invert Pixel Values");
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -415,8 +413,7 @@ ImageFileView::OnSquare (wxCommandEvent& event)
   ImageFile& rIF = GetDocument()->getImageFile();
   rIF.square (rIF);
   rIF.labelAdd ("Square Pixel Values");
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -426,8 +423,7 @@ ImageFileView::OnSquareRoot (wxCommandEvent& event)
   ImageFile& rIF = GetDocument()->getImageFile();
   rIF.sqrt (rIF);
   rIF.labelAdd ("Square-root Pixel Values");
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -437,8 +433,7 @@ ImageFileView::OnLog (wxCommandEvent& event)
   ImageFile& rIF = GetDocument()->getImageFile();
   rIF.log (rIF);
   rIF.labelAdd ("Logrithm base-e Pixel Values");
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -448,8 +443,7 @@ ImageFileView::OnExp (wxCommandEvent& event)
   ImageFile& rIF = GetDocument()->getImageFile();
   rIF.exp (rIF);
   rIF.labelAdd ("Exponent base-e Pixel Values");
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -485,8 +479,7 @@ ImageFileView::OnAdd (wxCommandEvent& event)
       newImage.labelsCopy (rRHSIF, s.c_str());
       newImage.labelAdd (os.str().c_str());
       *theApp->getLog() << os.str().c_str() << "\n";
-      if (theApp->getSetModifyNewDocs())
-        pNewDoc->Modify(TRUE);
+      pNewDoc->Modify (true);
       pNewDoc->UpdateAllViews (this);
       pNewDoc->getView()->OnUpdate (this, NULL);
       pNewDoc->getView()->getFrame()->Show(true);
@@ -526,8 +519,7 @@ ImageFileView::OnSubtract (wxCommandEvent& event)
       newImage.labelsCopy (rRHSIF, s.c_str());
       newImage.labelAdd (os.str().c_str());
       *theApp->getLog() << os.str().c_str() << "\n";
-      if (theApp->getSetModifyNewDocs())
-        pNewDoc->Modify(TRUE);
+      pNewDoc->Modify (true);
       pNewDoc->UpdateAllViews (this);
       pNewDoc->getView()->OnUpdate (this, NULL);
       pNewDoc->getView()->getFrame()->Show(true);
@@ -567,8 +559,7 @@ ImageFileView::OnMultiply (wxCommandEvent& event)
       newImage.labelsCopy (rRHSIF, s.c_str());
       newImage.labelAdd (os.str().c_str());
       *theApp->getLog() << os.str().c_str() << "\n";
-      if (theApp->getSetModifyNewDocs())
-        pNewDoc->Modify(TRUE);
+      pNewDoc->Modify (true);
       pNewDoc->UpdateAllViews (this);
       pNewDoc->getView()->OnUpdate (this, NULL);
       pNewDoc->getView()->getFrame()->Show(true);
@@ -608,8 +599,7 @@ ImageFileView::OnDivide (wxCommandEvent& event)
       newImage.labelsCopy (rRHSIF, s.c_str());
       newImage.labelAdd (os.str().c_str());
       *theApp->getLog() << os.str().c_str() << "\n";
-      if (theApp->getSetModifyNewDocs())
-        pNewDoc->Modify(TRUE);
+      pNewDoc->Modify (true);
       pNewDoc->UpdateAllViews (this);
       pNewDoc->getView()->OnUpdate (this, NULL);
       pNewDoc->getView()->getFrame()->Show(true);
@@ -627,8 +617,7 @@ ImageFileView::OnFFT (wxCommandEvent& event)
   rIF.labelAdd ("FFT Image");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -640,8 +629,7 @@ ImageFileView::OnIFFT (wxCommandEvent& event)
   rIF.labelAdd ("IFFT Image");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -653,8 +641,7 @@ ImageFileView::OnFFTRows (wxCommandEvent& event)
   rIF.labelAdd ("FFT Rows");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -666,8 +653,7 @@ ImageFileView::OnIFFTRows (wxCommandEvent& event)
   rIF.labelAdd ("IFFT Rows");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -679,8 +665,7 @@ ImageFileView::OnFFTCols (wxCommandEvent& event)
   rIF.labelAdd ("FFT Columns");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -692,8 +677,7 @@ ImageFileView::OnIFFTCols (wxCommandEvent& event)
   rIF.labelAdd ("IFFT Columns");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 #endif
@@ -707,8 +691,7 @@ ImageFileView::OnFourier (wxCommandEvent& event)
   rIF.labelAdd ("Fourier Image");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -721,8 +704,7 @@ ImageFileView::OnInverseFourier (wxCommandEvent& event)
   rIF.labelAdd ("Inverse Fourier Image");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -734,8 +716,7 @@ ImageFileView::OnShuffleNaturalToFourierOrder (wxCommandEvent& event)
   rIF.labelAdd ("Shuffle Natural To Fourier Order");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -747,8 +728,7 @@ ImageFileView::OnShuffleFourierToNaturalOrder (wxCommandEvent& event)
   rIF.labelAdd ("Shuffle Fourier To Natural Order");
   m_bMinSpecified = false;
   m_bMaxSpecified = false;
-  if (theApp->getSetModifyNewDocs())
-    GetDocument()->Modify(TRUE);
+  GetDocument()->Modify (true);
   GetDocument()->UpdateAllViews (this);
 }
 
@@ -761,8 +741,7 @@ ImageFileView::OnMagnitude (wxCommandEvent& event)
     rIF.labelAdd ("Magnitude of complex-image");
     m_bMinSpecified = false;
     m_bMaxSpecified = false;
-    if (theApp->getSetModifyNewDocs())
-      GetDocument()->Modify(TRUE);
+    GetDocument()->Modify (true);
     GetDocument()->UpdateAllViews (this);
   }
 }
@@ -776,8 +755,7 @@ ImageFileView::OnPhase (wxCommandEvent& event)
     rIF.labelAdd ("Phase of complex-image");
     m_bMinSpecified = false;
     m_bMaxSpecified = false;
-    if (theApp->getSetModifyNewDocs())
-      GetDocument()->Modify(TRUE);
+    GetDocument()->Modify (true);
     GetDocument()->UpdateAllViews (this);
   }
 }
@@ -1017,15 +995,16 @@ ImageFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
 bool 
 ImageFileView::OnClose (bool deleteWindow)
 {
+  GetDocumentManager()->ActivateView (this, false, true);
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
   if (m_pCanvas) {
-    m_pCanvas->Show(false);
+    //m_pCanvas->Show(false);
     m_pCanvas->setView(NULL);
     m_pCanvas = NULL;
   }
-  m_pFrame->Show(false);
+  //m_pFrame->Show(false);
   wxString s(theApp->GetAppName());
   if (m_pFrame)
     m_pFrame->SetTitle(s);
@@ -1034,9 +1013,11 @@ ImageFileView::OnClose (bool deleteWindow)
   Activate(false);
   
   if (deleteWindow) {
+    //delete m_pFrame;
     m_pFrame->Destroy();
     m_pFrame = NULL;
   }
+
   return true;
 }
 
@@ -1109,8 +1090,7 @@ ImageFileView::OnScaleSize (wxCommandEvent& event)
     rScaledIF.labelAdd (os.str().c_str());
     rIF.scaleImage (rScaledIF);
     *theApp->getLog() << os.str().c_str() << "\n";
-    if (theApp->getSetModifyNewDocs())
-      pScaledDoc->Modify(TRUE);
+    pScaledDoc->Modify (true);
     pScaledDoc->UpdateAllViews (this);
     pScaledDoc->getView()->OnUpdate (this, NULL);
     pScaledDoc->getView()->getFrame()->Show(true);
@@ -1195,8 +1175,7 @@ ImageFileView::OnPlotRow (wxCommandEvent& event)
       delete pYImag;
       delete pYMag;
     }
-    if (theApp->getSetModifyNewDocs())
-      pPlotDoc->Modify(true);
+    pPlotDoc->Modify (true);
     pPlotDoc->UpdateAllViews ();
     pPlotDoc->getView()->OnUpdate (this, NULL);
     pPlotDoc->getView()->getFrame()->Show(true);
@@ -1281,8 +1260,7 @@ ImageFileView::OnPlotCol (wxCommandEvent& event)
       delete pYImag;
       delete pYMag;
     }
-    if (theApp->getSetModifyNewDocs())
-      pPlotDoc->Modify(true);
+    pPlotDoc->Modify (true);
     pPlotDoc->UpdateAllViews ();
     pPlotDoc->getView()->OnUpdate (this, NULL);
     pPlotDoc->getView()->getFrame()->Show(true);
@@ -1376,8 +1354,7 @@ ImageFileView::OnPlotFFTRow (wxCommandEvent& event)
     delete pYMag;
     delete [] pcIn;
     
-    if (theApp->getSetModifyNewDocs())
-      pPlotDoc->Modify(true);
+    pPlotDoc->Modify (true);
     pPlotDoc->UpdateAllViews ();
     pPlotDoc->getView()->OnUpdate (this, NULL);
     pPlotDoc->getView()->getFrame()->Show(true);
@@ -1477,8 +1454,7 @@ ImageFileView::OnPlotFFTCol (wxCommandEvent& event)
     delete pdTemp;
     delete [] pcIn;
     
-    if (theApp->getSetModifyNewDocs())
-      pPlotDoc->Modify(true);
+    pPlotDoc->Modify (true);
     pPlotDoc->UpdateAllViews ();
     pPlotDoc->getView()->OnUpdate (this, NULL);
     pPlotDoc->getView()->getFrame()->Show(true);
@@ -1568,8 +1544,7 @@ ImageFileView::OnCompareCol (wxCommandEvent& event)
       delete pX;
       delete pY1;
       delete pY2;
-      if (theApp->getSetModifyNewDocs())
-        pPlotDoc->Modify(true);
+      pPlotDoc->Modify (true);
       pPlotDoc->UpdateAllViews ();
       pPlotDoc->getView()->OnUpdate (this, NULL);
       pPlotDoc->getView()->getFrame()->Show(true);
@@ -1660,8 +1635,7 @@ ImageFileView::OnCompareRow (wxCommandEvent& event)
       delete pX;
       delete pY1;
       delete pY2;
-      if (theApp->getSetModifyNewDocs())
-        pPlotDoc->Modify(true);
+      pPlotDoc->Modify (true);
       pPlotDoc->UpdateAllViews ();
       pPlotDoc->getView()->OnUpdate (this, NULL);
       pPlotDoc->getView()->getFrame()->Show(true);
@@ -1727,8 +1701,7 @@ ImageFileView::OnPlotHistogram (wxCommandEvent& event)
       rPlotFile.addDescription (os.str().c_str());
       delete pX;
       delete pY;
-      if (theApp->getSetModifyNewDocs())
-        pPlotDoc->Modify(true);
+      pPlotDoc->Modify (true);
       pPlotDoc->UpdateAllViews ();
       pPlotDoc->getView()->OnUpdate (this, NULL);
       pPlotDoc->getView()->getFrame()->Show(true);
@@ -1908,8 +1881,7 @@ PhantomFileView::OnProjections (wxCommandEvent& event)
         GetDocumentManager()->ActivateView (projView, true, false);
       }
       ::wxYield();
-      if (theApp->getSetModifyNewDocs())
-        pProjectionDoc->Modify(true);
+      pProjectionDoc-> Modify(true);
       pProjectionDoc->UpdateAllViews (this);
     }
   }
@@ -1951,8 +1923,7 @@ PhantomFileView::OnRasterize (wxCommandEvent& event)
           return;
         }
       }
-      if (theApp->getSetModifyNewDocs())
-        pRasterDoc->Modify(true);
+      pRasterDoc->Modify (true);
       pRasterDoc->UpdateAllViews (this);
       pRasterDoc->getView()->getFrame()->Show(true);
       std::ostringstream os;
@@ -2089,6 +2060,7 @@ PhantomFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
 bool 
 PhantomFileView::OnClose (bool deleteWindow)
 {
+  GetDocumentManager()->ActivateView (this, false, true);
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
@@ -2106,9 +2078,11 @@ PhantomFileView::OnClose (bool deleteWindow)
   Activate(false);
   
   if (deleteWindow) {
+    //delete m_pFrame;
     m_pFrame->Destroy();
     m_pFrame = NULL;
   }
+//  ::wxYield();
   
   return true;
 }
@@ -2245,8 +2219,7 @@ ProjectionFileView::OnConvertPolar (wxCommandEvent& event)
       << strInterpolation.c_str();
     *theApp->getLog() << os.str().c_str() << "\n";
     rIF.labelAdd (os.str().c_str());
-    if (theApp->getSetModifyNewDocs())
-      pPolarDoc->Modify(true);
+    pPolarDoc->Modify (true);
     pPolarDoc->UpdateAllViews ();
     pPolarDoc->getView()->OnUpdate (this, NULL);
     pPolarDoc->getView()->getFrame()->Show(true);
@@ -2280,8 +2253,7 @@ ProjectionFileView::OnConvertFFTPolar (wxCommandEvent& event)
       << strInterpolation.c_str() << ", zeropad=" << m_iDefaultPolarZeropad;
     *theApp->getLog() << os.str().c_str() << "\n";
     rIF.labelAdd (os.str().c_str());
-    if (theApp->getSetModifyNewDocs())
-      pPolarDoc->Modify(true);
+    pPolarDoc->Modify (true);
     pPolarDoc->UpdateAllViews ();
     pPolarDoc->getView()->OnUpdate (this, NULL);
     pPolarDoc->getView()->getFrame()->Show(true);
@@ -2366,8 +2338,7 @@ ProjectionFileView::OnReconstructFBP (wxCommandEvent& event)
         }
       }
       delete pReconstruct;
-      if (theApp->getSetModifyNewDocs())
-        pReconDoc->Modify(true);
+      pReconDoc->Modify (true);
       pReconDoc->UpdateAllViews (this);
       if (ImageFileView* rasterView = pReconDoc->getView()) {
         rasterView->OnUpdate (rasterView, NULL);
@@ -2569,6 +2540,7 @@ ProjectionFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint)
 bool 
 ProjectionFileView::OnClose (bool deleteWindow)
 {
+  GetDocumentManager()->ActivateView (this, false, true);
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
@@ -2586,9 +2558,11 @@ ProjectionFileView::OnClose (bool deleteWindow)
   Activate(false);
   
   if (deleteWindow) {
+//   delete m_pFrame;
     m_pFrame->Destroy();
     m_pFrame = NULL;
   }
+
   return true;
 }
 
@@ -2897,15 +2871,16 @@ PlotFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
 bool 
 PlotFileView::OnClose (bool deleteWindow)
 {
+  GetDocumentManager()->ActivateView (this, false, true);
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
   if (m_pCanvas) {
-    m_pCanvas->Show(false);
+    //m_pCanvas->Show(false);
     m_pCanvas->setView (NULL);
     m_pCanvas = NULL;
   }
-    m_pFrame->Show(false);
+    //m_pFrame->Show(false);
   wxString s(wxTheApp->GetAppName());
   if (m_pFrame)
     m_pFrame->SetTitle(s);
@@ -2915,9 +2890,11 @@ PlotFileView::OnClose (bool deleteWindow)
   m_pFrame->SetView(NULL);
   SetFrame(NULL);
   if (deleteWindow) {
+    //delete m_pFrame;
     m_pFrame->Destroy();
     m_pFrame = NULL;
   }
+
   return true;
 }
 
@@ -2972,20 +2949,23 @@ TextFileView::OnClose (bool deleteWindow)
   // if (m_pFrame && m_pFrame->GetTitle() == "Log")
   return false;
   
+  GetDocumentManager()->ActivateView (this, false, true);
   if (! GetDocument() || ! GetDocument()->Close())
     return false;
   
-  m_pCanvas->Show(false);
-  m_pFrame->Show(false);
+  //m_pCanvas->Show(false);
+  //m_pFrame->Show(false);
   Activate(false);
   
   SetFrame(NULL);
   m_pFrame->SetView(NULL);
   if (deleteWindow) {
+    //delete m_pFrame;
     m_pFrame->Destroy();
     m_pFrame = NULL;
     
   }
+
   return TRUE;
 }