X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fviews.cpp;h=2e0f78ab58480ada03cb6be7484eeff75a3d4c7c;hp=a72ace4a3432104c64fdcbeecc31f8e2c17ccedd;hb=cbcb02ba9b76a82c9a09ce1c7712431bb215575a;hpb=5f4aaf9a5ecff050f19a405bd274353a1b935163 diff --git a/src/views.cpp b/src/views.cpp index a72ace4..2e0f78a 100644 --- a/src/views.cpp +++ b/src/views.cpp @@ -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.90 2001/01/30 02:20:50 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 @@ -65,6 +65,7 @@ BEGIN_EVENT_TABLE(ImageFileCanvas, wxScrolledWindow) EVT_MOUSE_EVENTS(ImageFileCanvas::OnMouseEvent) +EVT_CHAR(ImageFileCanvas::OnChar) END_EVENT_TABLE() @@ -175,6 +176,18 @@ ImageFileCanvas::OnMouseEvent(wxMouseEvent& event) } } +void +ImageFileCanvas::OnChar (wxKeyEvent& event) +{ + if (event.GetKeyCode() == WXK_ESCAPE) { + m_xCursor = -1; + m_yCursor = -1; + if (m_pView) + m_pView->OnUpdate (NULL); + } else + wxScrolledWindow::OnChar (event); +} + wxSize ImageFileCanvas::GetBestSize() const { @@ -387,8 +400,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 +416,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 +426,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 +436,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 +446,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 +456,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 +492,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 +532,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 +572,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 +612,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 +630,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 +642,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 +654,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 +666,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 +678,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 +690,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 +704,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 +717,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 +729,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 +741,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 +754,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 +768,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 +1008,14 @@ 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->setView(NULL); m_pCanvas = NULL; } - m_pFrame->Show(false); wxString s(theApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); @@ -1036,7 +1026,10 @@ ImageFileView::OnClose (bool deleteWindow) if (deleteWindow) { m_pFrame->Destroy(); m_pFrame = NULL; + if (GetDocument() && GetDocument()->getBadFileOpen()) + ::wxYield(); // wxWindows bug workaround } + return true; } @@ -1109,8 +1102,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 +1187,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 +1272,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 +1366,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 +1466,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 +1556,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 +1647,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 +1713,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 +1893,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 +1935,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,15 +2072,14 @@ PhantomFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) bool PhantomFileView::OnClose (bool deleteWindow) { + //GetDocumentManager()->ActivateView (this, false, true); if (! GetDocument() || ! GetDocument()->Close()) return false; if (m_pCanvas) { - m_pCanvas->Show(false); m_pCanvas->setView(NULL); m_pCanvas = NULL; } - m_pFrame->Show(false); wxString s(wxTheApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); @@ -2108,6 +2090,8 @@ PhantomFileView::OnClose (bool deleteWindow) if (deleteWindow) { m_pFrame->Destroy(); m_pFrame = NULL; + if (GetDocument() && GetDocument()->getBadFileOpen()) + ::wxYield(); // wxWindows bug workaround } return true; @@ -2245,8 +2229,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 +2263,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 +2348,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,15 +2550,14 @@ ProjectionFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) bool ProjectionFileView::OnClose (bool deleteWindow) { + //GetDocumentManager()->ActivateView (this, false, true); if (! GetDocument() || ! GetDocument()->Close()) return false; if (m_pCanvas) { - m_pCanvas->Show(false); - m_pCanvas->setView(NULL); + m_pCanvas->setView(NULL); m_pCanvas = NULL; } - m_pFrame->Show(false); wxString s(wxTheApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); @@ -2588,7 +2568,10 @@ ProjectionFileView::OnClose (bool deleteWindow) if (deleteWindow) { m_pFrame->Destroy(); m_pFrame = NULL; + if (GetDocument() && GetDocument()->getBadFileOpen()) + ::wxYield(); // wxWindows bug workaround } + return true; } @@ -2897,27 +2880,28 @@ 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->setView (NULL); m_pCanvas = NULL; } - m_pFrame->Show(false); wxString s(wxTheApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); Activate(false); - m_pFrame->SetView(NULL); SetFrame(NULL); if (deleteWindow) { m_pFrame->Destroy(); m_pFrame = NULL; - } + if (GetDocument() && GetDocument()->getBadFileOpen()) + ::wxYield(); // wxWindows bug workaround + } + return true; } @@ -2972,20 +2956,20 @@ 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); Activate(false); SetFrame(NULL); - m_pFrame->SetView(NULL); if (deleteWindow) { m_pFrame->Destroy(); m_pFrame = NULL; - + if (GetDocument() && GetDocument()->getBadFileOpen()) + ::wxYield(); // wxWindows bug workaround } + return TRUE; }