X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdlgprojections.cpp;h=de6d0e634fbb7ef7e0179fa9ea9ca614654e5cee;hb=484b9ac2ebf8f88dbe36bdc1d3a9c1b6a2b242eb;hp=690d003d0a3686b90879e45c09942f1b0dc01156;hpb=c149735f56364c224ec6847d0f32ba06af86dc5b;p=ctsim.git diff --git a/src/dlgprojections.cpp b/src/dlgprojections.cpp index 690d003..de6d0e6 100644 --- a/src/dlgprojections.cpp +++ b/src/dlgprojections.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: dlgprojections.cpp,v 1.4 2000/09/02 16:40:36 kevin Exp $ +** $Id: dlgprojections.cpp,v 1.7 2000/12/16 03:29:02 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 @@ -68,7 +68,7 @@ IMPLEMENT_CLASS(ProjectionsDialog, wxDialog) ProjectionsDialog::ProjectionsDialog (Scanner& rScanner, Projections& rProj, const Phantom& rPhantom, const int iTrace, wxWindow *parent) - : wxDialog(parent, -1, "Collect Projections"), m_rScanner(rScanner), m_rProjections(rProj), m_rPhantom(rPhantom), m_pSGPDriver(NULL), m_pSGP(NULL), m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0) + : wxDialog(parent, -1, "Collect Projections", wxDefaultPosition), m_rScanner(rScanner), m_rProjections(rProj), m_rPhantom(rPhantom), m_pSGPDriver(NULL), m_pSGP(NULL), m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0) { m_state = Continue; m_iLastView = -1; @@ -155,7 +155,7 @@ ProjectionsDialog::showView (int iViewNumber) if (m_iTrace >= Trace::TRACE_PLOT) { const DetectorArray& detArray = m_rProjections.getDetectorArray (iViewNumber); const DetectorValue* detValues = detArray.detValues(); - double detPos [detArray.nDet()]; + double* detPos = new double [detArray.nDet()]; for (int i = 0; i < detArray.nDet(); i++) detPos[i] = i; EZPlot ezplot (*m_pSGP); @@ -166,7 +166,8 @@ ProjectionsDialog::showView (int iViewNumber) ezplot.ezset("grid"); ezplot.ezset("box"); ezplot.addCurve (detValues, detPos, detArray.nDet()); - ezplot.plot(); + ezplot.plot(); + delete detPos; } } } @@ -174,29 +175,25 @@ ProjectionsDialog::showView (int iViewNumber) bool ProjectionsDialog::projectView (int iViewNumber) { - if (iViewNumber < m_rProjections.nView()) { - showView (iViewNumber); - wxYield(); // update the display - if (m_iTrace >= Trace::TRACE_PLOT) { - sleep(1); - } - } else { - m_state = Finished; // so that we return TRUE below and - // that [Cancel] handler knew what to do -#if 0 - if ( m_btnAbort ) - m_btnAbort->SetLabel(_("Close")); // tell the user what he should do... - wxYield(); - - (void)ShowModal(); -#endif + if (iViewNumber <= m_iLastView) // already done this view + return true; + + if (iViewNumber < m_rProjections.nView()) { + showView (iViewNumber); + wxYield(); // update the display + if (m_iTrace >= Trace::TRACE_PLOT) { + ::wxUsleep(500); } + } else { + m_state = Finished; // so that we return TRUE below and + // that [Cancel] handler knew what to do + } #ifdef __WXMAC__ - MacUpdateImmediately(); + MacUpdateImmediately(); #endif - return m_state != Cancelled; + return m_state != Cancelled; }