X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fviews.cpp;h=557bc2f2ef79b548bc2ed47f8b7256d8091f4e88;hp=6a77ba31d3cd8834dcba88418dc06749c5fe1e47;hb=3f6c94c6bd432ad7b7a55ad991d3b8223fb44f18;hpb=2efdad35a3d335dfa84a8576f41588dbd7dd8958 diff --git a/src/views.cpp b/src/views.cpp index 6a77ba3..557bc2f 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.101 2001/02/09 14:34:16 kevin Exp $ +** $Id: views.cpp,v 1.108 2001/02/20 04:48:45 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 @@ -398,7 +398,8 @@ ImageFileView::OnCompare (wxCommandEvent& event) << " and " << pCompareDoc->GetFirstView()->GetFrame()->GetTitle().c_str() << ": " << os.str().c_str(); pDifferenceImage->labelAdd (os.str().c_str()); - pDifferenceDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pDifferenceDoc->Modify (true); pDifferenceDoc->UpdateAllViews (this); pDifferenceDoc->getView()->OnUpdate (this, NULL); pDifferenceDoc->getView()->getFrame()->Show(true); @@ -414,7 +415,8 @@ ImageFileView::OnInvertValues (wxCommandEvent& event) ImageFile& rIF = GetDocument()->getImageFile(); rIF.invertPixelValues (rIF); rIF.labelAdd ("Invert Pixel Values"); - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -424,7 +426,8 @@ ImageFileView::OnSquare (wxCommandEvent& event) ImageFile& rIF = GetDocument()->getImageFile(); rIF.square (rIF); rIF.labelAdd ("Square Pixel Values"); - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -434,7 +437,8 @@ ImageFileView::OnSquareRoot (wxCommandEvent& event) ImageFile& rIF = GetDocument()->getImageFile(); rIF.sqrt (rIF); rIF.labelAdd ("Square-root Pixel Values"); - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -444,7 +448,8 @@ ImageFileView::OnLog (wxCommandEvent& event) ImageFile& rIF = GetDocument()->getImageFile(); rIF.log (rIF); rIF.labelAdd ("Logrithm base-e Pixel Values"); - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -454,7 +459,8 @@ ImageFileView::OnExp (wxCommandEvent& event) ImageFile& rIF = GetDocument()->getImageFile(); rIF.exp (rIF); rIF.labelAdd ("Exponent base-e Pixel Values"); - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -490,7 +496,8 @@ ImageFileView::OnAdd (wxCommandEvent& event) newImage.labelsCopy (rRHSIF, s.c_str()); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << os.str().c_str() << "\n"; - pNewDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pNewDoc->Modify (true); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->OnUpdate (this, NULL); pNewDoc->getView()->getFrame()->Show(true); @@ -530,7 +537,8 @@ ImageFileView::OnSubtract (wxCommandEvent& event) newImage.labelsCopy (rRHSIF, s.c_str()); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << os.str().c_str() << "\n"; - pNewDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pNewDoc->Modify (true); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->OnUpdate (this, NULL); pNewDoc->getView()->getFrame()->Show(true); @@ -570,7 +578,8 @@ ImageFileView::OnMultiply (wxCommandEvent& event) newImage.labelsCopy (rRHSIF, s.c_str()); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << os.str().c_str() << "\n"; - pNewDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pNewDoc->Modify (true); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->OnUpdate (this, NULL); pNewDoc->getView()->getFrame()->Show(true); @@ -610,7 +619,8 @@ ImageFileView::OnDivide (wxCommandEvent& event) newImage.labelsCopy (rRHSIF, s.c_str()); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << os.str().c_str() << "\n"; - pNewDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pNewDoc->Modify (true); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->OnUpdate (this, NULL); pNewDoc->getView()->getFrame()->Show(true); @@ -628,7 +638,8 @@ ImageFileView::OnFFT (wxCommandEvent& event) rIF.labelAdd ("FFT Image"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -640,7 +651,8 @@ ImageFileView::OnIFFT (wxCommandEvent& event) rIF.labelAdd ("IFFT Image"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -652,7 +664,8 @@ ImageFileView::OnFFTRows (wxCommandEvent& event) rIF.labelAdd ("FFT Rows"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -664,7 +677,8 @@ ImageFileView::OnIFFTRows (wxCommandEvent& event) rIF.labelAdd ("IFFT Rows"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -676,7 +690,8 @@ ImageFileView::OnFFTCols (wxCommandEvent& event) rIF.labelAdd ("FFT Columns"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -688,7 +703,8 @@ ImageFileView::OnIFFTCols (wxCommandEvent& event) rIF.labelAdd ("IFFT Columns"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } #endif @@ -702,7 +718,8 @@ ImageFileView::OnFourier (wxCommandEvent& event) rIF.labelAdd ("Fourier Image"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -715,7 +732,8 @@ ImageFileView::OnInverseFourier (wxCommandEvent& event) rIF.labelAdd ("Inverse Fourier Image"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -727,7 +745,8 @@ ImageFileView::OnShuffleNaturalToFourierOrder (wxCommandEvent& event) rIF.labelAdd ("Shuffle Natural To Fourier Order"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -739,7 +758,8 @@ ImageFileView::OnShuffleFourierToNaturalOrder (wxCommandEvent& event) rIF.labelAdd ("Shuffle Fourier To Natural Order"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } @@ -752,7 +772,8 @@ ImageFileView::OnMagnitude (wxCommandEvent& event) rIF.labelAdd ("Magnitude of complex-image"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } } @@ -766,7 +787,8 @@ ImageFileView::OnPhase (wxCommandEvent& event) rIF.labelAdd ("Phase of complex-image"); m_bMinSpecified = false; m_bMaxSpecified = false; - GetDocument()->Modify (true); + if (theApp->getAskDeleteNewDocs()) + GetDocument()->Modify (true); GetDocument()->UpdateAllViews (this); } } @@ -822,6 +844,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) m_pFileMenu->Append(wxID_PREVIEW, "Print Preview"); #ifdef CTSIM_MDI m_pFileMenu->AppendSeparator(); + m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, "Prefere&nces..."); m_pFileMenu->Append(MAINMENU_FILE_EXIT, "E&xit"); #endif GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); @@ -840,14 +863,14 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) filter_menu->Append (IFMENU_FILTER_EXP, "&Exp"); filter_menu->AppendSeparator(); #ifdef HAVE_FFT - filter_menu->Append (IFMENU_FILTER_FFT, "2D &FFT"); - filter_menu->Append (IFMENU_FILTER_IFFT, "2D &IFFT"); + filter_menu->Append (IFMENU_FILTER_FFT, "2-D &FFT"); + filter_menu->Append (IFMENU_FILTER_IFFT, "2-D &IFFT"); filter_menu->Append (IFMENU_FILTER_FFT_ROWS, "FFT Rows"); filter_menu->Append (IFMENU_FILTER_IFFT_ROWS, "IFFT Rows"); filter_menu->Append (IFMENU_FILTER_FFT_COLS, "FFT Columns"); filter_menu->Append (IFMENU_FILTER_IFFT_COLS, "IFFT Columns"); - filter_menu->Append (IFMENU_FILTER_FOURIER, "F&ourier"); - filter_menu->Append (IFMENU_FILTER_INVERSE_FOURIER, "Inverse Fo&urier"); + filter_menu->Append (IFMENU_FILTER_FOURIER, "2-D F&ourier"); + filter_menu->Append (IFMENU_FILTER_INVERSE_FOURIER, "2-D Inverse Fo&urier"); #else filter_menu->Append (IFMENU_FILTER_FOURIER, "&Fourier"); filter_menu->Append (IFMENU_FILTER_INVERSE_FOURIER, "&Inverse Fourier"); @@ -888,7 +911,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1"); - help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H"); + help_menu->Append (IDH_QUICKSTART, "&Quick Start"); help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); wxMenuBar *menu_bar = new wxMenuBar; @@ -904,22 +927,15 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->Centre(wxBOTH); - wxAcceleratorEntry accelEntries[11]; - accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); - accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); - accelEntries[2].Set (wxACCEL_CTRL, static_cast('W'), wxID_CLOSE); - accelEntries[3].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); - accelEntries[4].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); - accelEntries[5].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); - accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); - accelEntries[7].Set (wxACCEL_CTRL, static_cast('A'), IFMENU_VIEW_SCALE_AUTO); - accelEntries[8].Set (wxACCEL_CTRL, static_cast('U'), IFMENU_VIEW_SCALE_FULL); - accelEntries[9].Set (wxACCEL_CTRL, static_cast('E'), IFMENU_VIEW_SCALE_MINMAX); + wxAcceleratorEntry accelEntries[4]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('A'), IFMENU_VIEW_SCALE_AUTO); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('U'), IFMENU_VIEW_SCALE_FULL); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('E'), IFMENU_VIEW_SCALE_MINMAX); #if wxUSE_GLCANVAS - accelEntries[10].Set (wxACCEL_CTRL, static_cast('3'), IFMENU_IMAGE_CONVERT3D); - wxAcceleratorTable accelTable (11, accelEntries); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('3'), IFMENU_IMAGE_CONVERT3D); + wxAcceleratorTable accelTable (4, accelEntries); #else - wxAcceleratorTable accelTable (10, accelEntries); + wxAcceleratorTable accelTable (3, accelEntries); #endif subframe->SetAcceleratorTable (accelTable); @@ -1109,7 +1125,8 @@ ImageFileView::OnScaleSize (wxCommandEvent& event) rScaledIF.labelAdd (os.str().c_str()); rIF.scaleImage (rScaledIF); *theApp->getLog() << os.str().c_str() << "\n"; - pScaledDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pScaledDoc->Modify (true); pScaledDoc->UpdateAllViews (this); pScaledDoc->getView()->OnUpdate (this, NULL); pScaledDoc->getView()->getFrame()->Show(true); @@ -1212,7 +1229,8 @@ ImageFileView::OnPlotRow (wxCommandEvent& event) delete pYImag; delete pYMag; } - pPlotDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPlotDoc->Modify (true); pPlotDoc->UpdateAllViews (); pPlotDoc->getView()->OnUpdate (this, NULL); pPlotDoc->getView()->getFrame()->Show(true); @@ -1297,7 +1315,8 @@ ImageFileView::OnPlotCol (wxCommandEvent& event) delete pYImag; delete pYMag; } - pPlotDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPlotDoc->Modify (true); pPlotDoc->UpdateAllViews (); pPlotDoc->getView()->OnUpdate (this, NULL); pPlotDoc->getView()->getFrame()->Show(true); @@ -1391,7 +1410,8 @@ ImageFileView::OnPlotFFTRow (wxCommandEvent& event) delete pYMag; delete [] pcIn; - pPlotDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPlotDoc->Modify (true); pPlotDoc->UpdateAllViews (); pPlotDoc->getView()->OnUpdate (this, NULL); pPlotDoc->getView()->getFrame()->Show(true); @@ -1491,7 +1511,8 @@ ImageFileView::OnPlotFFTCol (wxCommandEvent& event) delete pdTemp; delete [] pcIn; - pPlotDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPlotDoc->Modify (true); pPlotDoc->UpdateAllViews (); pPlotDoc->getView()->OnUpdate (this, NULL); pPlotDoc->getView()->getFrame()->Show(true); @@ -1581,7 +1602,8 @@ ImageFileView::OnCompareCol (wxCommandEvent& event) delete pX; delete pY1; delete pY2; - pPlotDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPlotDoc->Modify (true); pPlotDoc->UpdateAllViews (); pPlotDoc->getView()->OnUpdate (this, NULL); pPlotDoc->getView()->getFrame()->Show(true); @@ -1672,7 +1694,8 @@ ImageFileView::OnCompareRow (wxCommandEvent& event) delete pX; delete pY1; delete pY2; - pPlotDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPlotDoc->Modify (true); pPlotDoc->UpdateAllViews (); pPlotDoc->getView()->OnUpdate (this, NULL); pPlotDoc->getView()->getFrame()->Show(true); @@ -1738,7 +1761,8 @@ ImageFileView::OnPlotHistogram (wxCommandEvent& event) rPlotFile.addDescription (os.str().c_str()); delete pX; delete pY; - pPlotDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPlotDoc->Modify (true); pPlotDoc->UpdateAllViews (); pPlotDoc->getView()->OnUpdate (this, NULL); pPlotDoc->getView()->getFrame()->Show(true); @@ -1802,7 +1826,7 @@ PhantomFileView::PhantomFileView() m_iDefaultNView = 320; #endif m_iDefaultNSample = 1; - m_dDefaultRotation = 2; + m_dDefaultRotation = 1; m_dDefaultFocalLength = 2; m_dDefaultViewRatio = 1; m_dDefaultScanRatio = 1; @@ -1877,7 +1901,7 @@ PhantomFileView::OnProjections (wxCommandEvent& event) return; } pProj->initFromScanner (theScanner); - m_dDefaultRotation /= PI; // convert back to PI units + m_dDefaultRotation /= TWOPI; // convert back to fraction of a circle Timer timer; if (m_iDefaultTrace > Trace::TRACE_CONSOLE) { @@ -1936,7 +1960,8 @@ PhantomFileView::OnProjections (wxCommandEvent& event) GetDocumentManager()->ActivateView (projView, true, false); } ::wxYield(); - pProjectionDoc-> Modify(true); + if (theApp->getAskDeleteNewDocs()) + pProjectionDoc-> Modify(true); pProjectionDoc->UpdateAllViews (this); } } @@ -1983,7 +2008,8 @@ PhantomFileView::OnRasterize (wxCommandEvent& event) } pRasterDoc->setImageFile (pImageFile); - pRasterDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pRasterDoc->Modify (true); pRasterDoc->UpdateAllViews (this); pRasterDoc->getView()->getFrame()->Show(true); std::ostringstream os; @@ -2046,6 +2072,7 @@ PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view) m_pFileMenu->Append(wxID_PREVIEW, "Print Pre&view"); #ifdef CTSIM_MDI m_pFileMenu->AppendSeparator(); + m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, "Prefere&nces..."); m_pFileMenu->Append(MAINMENU_FILE_EXIT, "E&xit"); #endif GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); @@ -2057,7 +2084,7 @@ PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view) wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1"); - help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H"); + help_menu->Append (IDH_QUICKSTART, "&Quick Start"); help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); wxMenuBar *menu_bar = new wxMenuBar; @@ -2069,16 +2096,10 @@ PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); - wxAcceleratorEntry accelEntries[8]; - accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); - accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); - accelEntries[2].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); - accelEntries[3].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); - accelEntries[4].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); - accelEntries[5].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); - accelEntries[6].Set (wxACCEL_CTRL, static_cast('J'), PHMMENU_PROCESS_PROJECTIONS); - accelEntries[7].Set (wxACCEL_CTRL, static_cast('R'), PHMMENU_PROCESS_RASTERIZE); - wxAcceleratorTable accelTable (8, accelEntries); + wxAcceleratorEntry accelEntries[2]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('J'), PHMMENU_PROCESS_PROJECTIONS); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('R'), PHMMENU_PROCESS_RASTERIZE); + wxAcceleratorTable accelTable (2, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; @@ -2220,7 +2241,7 @@ ProjectionFileView::ProjectionFileView() m_iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_DIRECT; #endif m_iDefaultZeropad = 1; - m_iDefaultBackprojector = Backprojector::BPROJ_IDIFF3; + m_iDefaultBackprojector = Backprojector::BPROJ_IDIFF; m_iDefaultInterpolation = Backprojector::INTERP_LINEAR; m_iDefaultInterpParam = 1; m_iDefaultTrace = Trace::TRACE_NONE; @@ -2275,7 +2296,8 @@ ProjectionFileView::OnConvertPolar (wxCommandEvent& event) << strInterpolation.c_str(); *theApp->getLog() << os.str().c_str() << "\n"; rIF.labelAdd (os.str().c_str()); - pPolarDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPolarDoc->Modify (true); pPolarDoc->UpdateAllViews (); pPolarDoc->getView()->OnUpdate (this, NULL); pPolarDoc->getView()->getFrame()->Show(true); @@ -2309,7 +2331,8 @@ ProjectionFileView::OnConvertFFTPolar (wxCommandEvent& event) << strInterpolation.c_str() << ", zeropad=" << m_iDefaultPolarZeropad; *theApp->getLog() << os.str().c_str() << "\n"; rIF.labelAdd (os.str().c_str()); - pPolarDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pPolarDoc->Modify (true); pPolarDoc->UpdateAllViews (); pPolarDoc->getView()->OnUpdate (this, NULL); pPolarDoc->getView()->getFrame()->Show(true); @@ -2325,7 +2348,10 @@ ProjectionFileView::OnReconstructFourier (wxCommandEvent& event) void ProjectionFileView::OnReconstructFBP (wxCommandEvent& event) { - DialogGetReconstructionParameters dialogReconstruction (getFrameForChild(), m_iDefaultNX, m_iDefaultNY, m_iDefaultFilter, m_dDefaultFilterParam, m_iDefaultFilterMethod, m_iDefaultFilterGeneration, m_iDefaultZeropad, m_iDefaultInterpolation, m_iDefaultInterpParam, m_iDefaultBackprojector, m_iDefaultTrace); + DialogGetReconstructionParameters dialogReconstruction (getFrameForChild(), m_iDefaultNX, m_iDefaultNY, + m_iDefaultFilter, m_dDefaultFilterParam, m_iDefaultFilterMethod, m_iDefaultFilterGeneration, + m_iDefaultZeropad, m_iDefaultInterpolation, m_iDefaultInterpParam, m_iDefaultBackprojector, + m_iDefaultTrace); int retVal = dialogReconstruction.ShowModal(); if (retVal == wxID_OK) { @@ -2345,26 +2371,29 @@ ProjectionFileView::OnReconstructFBP (wxCommandEvent& event) wxString optBackprojectName = dialogReconstruction.getBackprojectName(); m_iDefaultBackprojector = Backprojector::convertBackprojectNameToID (optBackprojectName.c_str()); m_iDefaultTrace = dialogReconstruction.getTrace(); + if (m_iDefaultNX > 0 && m_iDefaultNY > 0) { const Projections& rProj = GetDocument()->getProjections(); - ImageFile* pImageFile = new ImageFile; pImageFile->setArraySize (m_iDefaultNX, m_iDefaultNY); - Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.c_str(), m_dDefaultFilterParam, optFilterMethodName.c_str(), m_iDefaultZeropad, optFilterGenerationName.c_str(), optInterpName.c_str(), m_iDefaultInterpParam, optBackprojectName.c_str(), m_iDefaultTrace); + Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.c_str(), + m_dDefaultFilterParam, optFilterMethodName.c_str(), m_iDefaultZeropad, optFilterGenerationName.c_str(), + optInterpName.c_str(), m_iDefaultInterpParam, optBackprojectName.c_str(), m_iDefaultTrace); Timer timerRecon; if (m_iDefaultTrace > Trace::TRACE_CONSOLE) { ReconstructDialog* pDlgReconstruct = new ReconstructDialog (*pReconstructor, rProj, *pImageFile, m_iDefaultTrace, getFrameForChild()); for (int iView = 0; iView < rProj.nView(); iView++) { ::wxYield(); - if (pDlgReconstruct->isCancelled() || ! pDlgReconstruct->reconstructView (iView)) { + if (pDlgReconstruct->isCancelled() || ! pDlgReconstruct->reconstructView (iView, true)) { delete pDlgReconstruct; delete pReconstructor; delete pImageFile; return; } ::wxYield(); + ::wxYield(); while (pDlgReconstruct->isPaused()) { ::wxYield(); ::wxUsleep(50); @@ -2373,9 +2402,9 @@ ProjectionFileView::OnReconstructFBP (wxCommandEvent& event) delete pDlgReconstruct; } else { wxProgressDialog dlgProgress (wxString("Reconstruction"), wxString("Reconstruction Progress"), rProj.nView() + 1, getFrameForChild(), wxPD_CAN_ABORT); - for (int i = 0; i < rProj.nView(); i++) { - pReconstructor->reconstructView (i, 1); - if (! dlgProgress.Update (i + 1)) { + for (int iView = 0; iView < rProj.nView(); iView++) { + pReconstructor->reconstructView (iView, 1); + if (! dlgProgress.Update (iView + 1)) { delete pReconstructor; delete pImageFile; return; @@ -2389,7 +2418,8 @@ ProjectionFileView::OnReconstructFBP (wxCommandEvent& event) return; } pReconDoc->setImageFile (pImageFile); - pReconDoc->Modify (true); + if (theApp->getAskDeleteNewDocs()) + pReconDoc->Modify (true); pReconDoc->UpdateAllViews (this); if (ImageFileView* rasterView = pReconDoc->getView()) { rasterView->OnUpdate (rasterView, NULL); @@ -2454,6 +2484,7 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view) m_pFileMenu->Append(wxID_PREVIEW, "Print Pre&view"); #ifdef CTSIM_MDI m_pFileMenu->AppendSeparator(); + m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, "Prefere&nces..."); m_pFileMenu->Append(MAINMENU_FILE_EXIT, "E&xit"); #endif GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); @@ -2470,7 +2501,7 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view) wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1"); - help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H"); + help_menu->Append (IDH_QUICKSTART, "&Quick Start"); help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); wxMenuBar *menu_bar = new wxMenuBar; @@ -2483,19 +2514,12 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); - wxAcceleratorEntry accelEntries[11]; - accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); - accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); - accelEntries[2].Set (wxACCEL_CTRL, static_cast('W'), wxID_CLOSE); - accelEntries[3].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); - accelEntries[4].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); - accelEntries[5].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); - accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); - accelEntries[7].Set (wxACCEL_CTRL, static_cast('L'), PJMENU_CONVERT_POLAR); - accelEntries[8].Set (wxACCEL_CTRL, static_cast('I'), PJMENU_CONVERT_FFT_POLAR); - accelEntries[9].Set (wxACCEL_CTRL, static_cast('R'), PJMENU_RECONSTRUCT_FBP); - accelEntries[10].Set (wxACCEL_CTRL, static_cast('E'), PJMENU_RECONSTRUCT_FOURIER); - wxAcceleratorTable accelTable (11, accelEntries); + wxAcceleratorEntry accelEntries[4]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('L'), PJMENU_CONVERT_POLAR); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('I'), PJMENU_CONVERT_FFT_POLAR); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('R'), PJMENU_RECONSTRUCT_FBP); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('E'), PJMENU_RECONSTRUCT_FOURIER); + wxAcceleratorTable accelTable (4, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; @@ -2784,6 +2808,7 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) m_pFileMenu->Append(wxID_PREVIEW, "Print Pre&view"); #ifdef CTSIM_MDI m_pFileMenu->AppendSeparator(); + m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, "Prefere&nces..."); m_pFileMenu->Append(MAINMENU_FILE_EXIT, "E&xit"); #endif GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); @@ -2796,7 +2821,7 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1"); - help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H"); + help_menu->Append (IDH_QUICKSTART, "&Quick Start"); help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); wxMenuBar *menu_bar = new wxMenuBar; @@ -2808,18 +2833,11 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); - wxAcceleratorEntry accelEntries[10]; - accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); - accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); - accelEntries[2].Set (wxACCEL_CTRL, static_cast('W'), wxID_CLOSE); - accelEntries[3].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); - accelEntries[4].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); - accelEntries[5].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); - accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); - accelEntries[7].Set (wxACCEL_CTRL, static_cast('E'), PLOTMENU_VIEW_SCALE_MINMAX); - accelEntries[8].Set (wxACCEL_CTRL, static_cast('A'), PLOTMENU_VIEW_SCALE_AUTO); - accelEntries[9].Set (wxACCEL_CTRL, static_cast('U'), PLOTMENU_VIEW_SCALE_FULL); - wxAcceleratorTable accelTable (10, accelEntries); + wxAcceleratorEntry accelEntries[3]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('E'), PLOTMENU_VIEW_SCALE_MINMAX); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('A'), PLOTMENU_VIEW_SCALE_AUTO); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('U'), PLOTMENU_VIEW_SCALE_FULL); + wxAcceleratorTable accelTable (3, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; @@ -3041,6 +3059,7 @@ TextFileView::CreateChildFrame (wxDocument *doc, wxView *view) m_pFileMenu->Append(wxID_PREVIEW, "Print Pre&view"); #ifdef CTSIM_MDI m_pFileMenu->AppendSeparator(); + m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, "Prefere&nces..."); m_pFileMenu->Append(MAINMENU_FILE_EXIT, "E&xit"); #endif GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); @@ -3048,7 +3067,7 @@ TextFileView::CreateChildFrame (wxDocument *doc, wxView *view) wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1"); - help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H"); + help_menu->Append (IDH_QUICKSTART, "&Quick Start"); help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); wxMenuBar *menu_bar = new wxMenuBar; @@ -3058,16 +3077,7 @@ TextFileView::CreateChildFrame (wxDocument *doc, wxView *view) subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); - - wxAcceleratorEntry accelEntries[5]; - accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); - accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); - accelEntries[2].Set (wxACCEL_CTRL, static_cast('W'), wxID_CLOSE); - accelEntries[3].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); - accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); - wxAcceleratorTable accelTable (5, accelEntries); - subframe->SetAcceleratorTable (accelTable); - + return subframe; }