X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fviews.cpp;h=a9b97815d62e2e72ae9ab39b66c38c570165421b;hb=7c695eef645b25a1df6a95c4fc72f6b2994a3630;hp=a41efaa2fd91a3b5f6a66a53ee079f09cece6d51;hpb=806a6ed49930ae2bd8028eb7e3ffb79f017ef7f1;p=ctsim.git diff --git a/src/views.cpp b/src/views.cpp index a41efaa..a9b9781 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.97 2001/02/03 18:42:21 kevin Exp $ +** $Id: views.cpp,v 1.104 2001/02/14 18:39: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 @@ -268,7 +268,7 @@ ImageFileView::OnProperties (wxCommandEvent& event) if (rIF.nx() == 0 || rIF.ny() == 0) *theApp->getLog() << "Properties: empty imagefile\n"; else { - const std::string& rFilename = rIF.getFilename(); + const std::string rFilename = m_pFrame->GetTitle().c_str(); std::ostringstream os; double min, max, mean, mode, median, stddev; rIF.statistics (rIF.getArray(), min, max, mean, mode, median, stddev); @@ -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); @@ -1109,7 +1132,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 +1236,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 +1322,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 +1417,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 +1518,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 +1609,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 +1701,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 +1768,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); @@ -1766,6 +1797,20 @@ PhantomCanvas::OnDraw (wxDC& dc) m_pView->OnDraw(& dc); } +wxSize +PhantomCanvas::GetBestSize() const +{ + if (! m_pView) + return wxSize(0,0); + + int xSize, ySize; + theApp->getMainFrame()->GetClientSize (&xSize, &ySize); + xSize = maxValue (xSize, ySize); + ySize = xSize = (xSize / 3); + return wxSize (xSize, ySize); +} + + // PhantomFileView @@ -1788,9 +1833,10 @@ PhantomFileView::PhantomFileView() m_iDefaultNView = 320; #endif m_iDefaultNSample = 1; - m_dDefaultRotation = 1; + m_dDefaultRotation = 2; m_dDefaultFocalLength = 2; - m_dDefaultFieldOfView = 1; + m_dDefaultViewRatio = 1; + m_dDefaultScanRatio = 1; m_iDefaultGeometry = Scanner::GEOMETRY_PARALLEL; m_iDefaultTrace = Trace::TRACE_NONE; @@ -1803,6 +1849,7 @@ PhantomFileView::PhantomFileView() m_iDefaultRasterNY = 256; m_iDefaultRasterNSamples = 2; #endif + m_dDefaultRasterViewRatio = 1; } PhantomFileView::~PhantomFileView() @@ -1831,7 +1878,10 @@ PhantomFileView::OnProperties (wxCommandEvent& event) void PhantomFileView::OnProjections (wxCommandEvent& event) { - DialogGetProjectionParameters dialogProjection (getFrameForChild(), m_iDefaultNDet, m_iDefaultNView, m_iDefaultNSample, m_dDefaultRotation, m_dDefaultFocalLength, m_dDefaultFieldOfView, m_iDefaultGeometry, m_iDefaultTrace); + DialogGetProjectionParameters dialogProjection (getFrameForChild(), + m_iDefaultNDet, m_iDefaultNView, m_iDefaultNSample, m_dDefaultRotation, + m_dDefaultFocalLength, m_dDefaultViewRatio, m_dDefaultScanRatio, m_iDefaultGeometry, + m_iDefaultTrace); int retVal = dialogProjection.ShowModal(); if (retVal == wxID_OK) { m_iDefaultNDet = dialogProjection.getNDet(); @@ -1840,7 +1890,8 @@ PhantomFileView::OnProjections (wxCommandEvent& event) m_iDefaultTrace = dialogProjection.getTrace(); m_dDefaultRotation = dialogProjection.getRotAngle(); m_dDefaultFocalLength = dialogProjection.getFocalLengthRatio(); - m_dDefaultFieldOfView = dialogProjection.getFieldOfViewRatio(); + m_dDefaultViewRatio = dialogProjection.getViewRatio(); + m_dDefaultScanRatio = dialogProjection.getScanRatio(); wxString sGeometry = dialogProjection.getGeometry(); m_iDefaultGeometry = Scanner::convertGeometryNameToID (sGeometry.c_str()); @@ -1848,9 +1899,12 @@ PhantomFileView::OnProjections (wxCommandEvent& event) const Phantom& rPhantom = GetDocument()->getPhantom(); Projections* pProj = new Projections; Scanner theScanner (rPhantom, sGeometry.c_str(), m_iDefaultNDet, m_iDefaultNView, m_iDefaultNSample, - m_dDefaultRotation, m_dDefaultFocalLength, m_dDefaultFieldOfView); + m_dDefaultRotation, m_dDefaultFocalLength, m_dDefaultViewRatio, m_dDefaultScanRatio); 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); @@ -1883,7 +1937,12 @@ PhantomFileView::OnProjections (wxCommandEvent& event) } std::ostringstream os; - os << "Projections for " << rPhantom.name() << ": nDet=" << m_iDefaultNDet << ", nView=" << m_iDefaultNView << ", nSamples=" << m_iDefaultNSample << ", RotAngle=" << m_dDefaultRotation << ", FocalLengthRatio=" << m_dDefaultFocalLength << ", FieldOfViewRatio=" << m_dDefaultFieldOfView << ", Geometry=" << sGeometry.c_str(); + os << "Projections for " << rPhantom.name() << ": nDet=" << m_iDefaultNDet + << ", nView=" << m_iDefaultNView << ", nSamples=" << m_iDefaultNSample + << ", RotAngle=" << m_dDefaultRotation << ", FocalLengthRatio=" << m_dDefaultFocalLength + << ", ViewRatio=" << m_dDefaultViewRatio << ", ScanRatio=" << m_dDefaultScanRatio + << ", Geometry=" << sGeometry.c_str() << ", FanBeamAngle=" << + convertRadiansToDegrees (theScanner.fanBeamAngle()); pProj->setCalcTime (timer.timerEnd()); pProj->setRemark (os.str()); *theApp->getLog() << os.str().c_str() << "\n"; @@ -1908,7 +1967,8 @@ PhantomFileView::OnProjections (wxCommandEvent& event) GetDocumentManager()->ActivateView (projView, true, false); } ::wxYield(); - pProjectionDoc-> Modify(true); + if (theApp->getAskDeleteNewDocs()) + pProjectionDoc-> Modify(true); pProjectionDoc->UpdateAllViews (this); } } @@ -1918,14 +1978,18 @@ PhantomFileView::OnProjections (wxCommandEvent& event) void PhantomFileView::OnRasterize (wxCommandEvent& event) { - DialogGetRasterParameters dialogRaster (getFrameForChild(), m_iDefaultRasterNX, m_iDefaultRasterNY, m_iDefaultRasterNSamples); + DialogGetRasterParameters dialogRaster (getFrameForChild(), m_iDefaultRasterNX, m_iDefaultRasterNY, + m_iDefaultRasterNSamples, m_dDefaultRasterViewRatio); int retVal = dialogRaster.ShowModal(); if (retVal == wxID_OK) { m_iDefaultRasterNX = dialogRaster.getXSize(); m_iDefaultRasterNY = dialogRaster.getYSize(); m_iDefaultRasterNSamples = dialogRaster.getNSamples(); + m_dDefaultRasterViewRatio = dialogRaster.getViewRatio(); if (m_iDefaultRasterNSamples < 1) m_iDefaultRasterNSamples = 1; + if (m_dDefaultRasterViewRatio < 0) + m_dDefaultRasterViewRatio = 0; if (m_iDefaultRasterNX > 0 && m_iDefaultRasterNY > 0) { const Phantom& rPhantom = GetDocument()->getPhantom(); @@ -1936,7 +2000,8 @@ PhantomFileView::OnRasterize (wxCommandEvent& event) pImageFile->nx() + 1, getFrameForChild(), wxPD_CAN_ABORT); Timer timer; for (unsigned int i = 0; i < pImageFile->nx(); i++) { - rPhantom.convertToImagefile (*pImageFile, m_iDefaultRasterNSamples, Trace::TRACE_NONE, i, 1, true); + rPhantom.convertToImagefile (*pImageFile, m_dDefaultRasterViewRatio, m_iDefaultRasterNSamples, + Trace::TRACE_NONE, i, 1, true); if (! dlgProgress.Update (i+1)) { delete pImageFile; return; @@ -1950,12 +2015,14 @@ 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; os << "Rasterize Phantom " << rPhantom.name() << ": XSize=" << m_iDefaultRasterNX << ", YSize=" - << m_iDefaultRasterNY << ", nSamples=" << m_iDefaultRasterNSamples; + << m_iDefaultRasterNY << ", ViewRatio=" << m_dDefaultRasterViewRatio << ", nSamples=" + << m_iDefaultRasterNSamples;; *theApp->getLog() << os.str().c_str() << "\n"; pImageFile->labelAdd (os.str().c_str(), timer.timerEnd()); ImageFileView* rasterView = pRasterDoc->getView(); @@ -1973,11 +2040,8 @@ PhantomCanvas* PhantomFileView::CreateCanvas (wxFrame *parent) { PhantomCanvas* pCanvas; - int width, height; - parent->GetClientSize(&width, &height); - - pCanvas = new PhantomCanvas (this, parent, wxPoint(0, 0), wxSize(width, height), 0); + pCanvas = new PhantomCanvas (this, parent, wxPoint(0, 0), wxSize(0,0), 0); pCanvas->SetBackgroundColour(*wxWHITE); pCanvas->Clear(); @@ -1992,9 +2056,9 @@ wxDocChildFrame* PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view) { #if CTSIM_MDI - wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, "Phantom Frame", wxPoint(10, 10), wxSize(256, 256), wxDEFAULT_FRAME_STYLE); + wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, "Phantom Frame", wxPoint(10, 10), wxSize(0, 0), wxDEFAULT_FRAME_STYLE); #else - wxDocChildFrame *subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, "Phantom Frame", wxPoint(10, 10), wxSize(256, 256), wxDEFAULT_FRAME_STYLE); + wxDocChildFrame *subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, "Phantom Frame", wxPoint(10, 10), wxSize(0, 0), wxDEFAULT_FRAME_STYLE); #endif theApp->setIconForFrame (subframe); @@ -2015,6 +2079,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); @@ -2059,11 +2124,11 @@ PhantomFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) { m_pFrame = CreateChildFrame(doc, this); SetFrame(m_pFrame); - - int width, height; - m_pFrame->GetClientSize(&width, &height); - m_pFrame->SetTitle("PhantomFileView"); m_pCanvas = CreateCanvas (m_pFrame); + m_pFrame->SetClientSize (m_pCanvas->GetBestSize()); + m_pCanvas->SetClientSize (m_pCanvas->GetBestSize()); + + m_pFrame->SetTitle ("PhantomFileView"); #ifdef __X__ int x, y; // X requires a forced resize @@ -2169,7 +2234,7 @@ EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar) END_EVENT_TABLE() ProjectionFileView::ProjectionFileView() -: wxView(), m_pFrame(NULL), m_pCanvas(NULL), m_pFileMenu(0) +: wxView(), m_pFrame(0), m_pCanvas(0), m_pFileMenu(0) { #ifdef DEBUG m_iDefaultNX = 115; @@ -2189,7 +2254,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; @@ -2244,7 +2309,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); @@ -2278,7 +2344,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); @@ -2294,7 +2361,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) { @@ -2358,7 +2428,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); @@ -2423,6 +2494,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); @@ -2753,6 +2825,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); @@ -3010,6 +3083,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);