X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fdlgprojections.cpp;h=702befa5cfb6cfb2bc6e7a847e8ef72ee7e978c5;hb=43259365c0fa2788f15e1100491271dd910f5a6f;hp=53b15cf69c35153fbb4d3db9ac69c5fe1c8c4113;hpb=bfcc769cf8019eabc8c65c07257c8dbee4b4c977;p=ctsim.git diff --git a/src/dlgprojections.cpp b/src/dlgprojections.cpp index 53b15cf..702befa 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.3 2000/09/02 05:10:39 kevin Exp $ +** $Id: dlgprojections.cpp,v 1.6 2000/09/07 14:29:05 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 @@ -58,8 +58,8 @@ static const int LAYOUT_Y_MARGIN = 4; BEGIN_EVENT_TABLE(ProjectionsDialog, wxDialog) EVT_BUTTON(wxID_CANCEL, ProjectionsDialog::OnCancel) - EVT_BUTTON(ID_BTN_PAUSE, ProjectionsDialog::OnPause) - EVT_BUTTON(ID_BTN_STEP, ProjectionsDialog::OnStep) + EVT_BUTTON(ProjectionsDialog::ID_BTN_PAUSE, ProjectionsDialog::OnPause) + EVT_BUTTON(ProjectionsDialog::ID_BTN_STEP, ProjectionsDialog::OnStep) EVT_CLOSE(ProjectionsDialog::OnClose) EVT_PAINT(ProjectionsDialog::OnPaint) END_EVENT_TABLE() @@ -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; @@ -145,11 +145,13 @@ void ProjectionsDialog::showView (int iViewNumber) { if ( iViewNumber < m_rProjections.nView() ) { - wxYield(); // update the display + ::wxYield(); // update the display m_iLastView = iViewNumber; if (m_iTrace >= Trace::TRACE_PLOT) m_pSGP->setViewport (0, 0, 0.66, 1); + ::wxYield(); // update the display m_rScanner.collectProjections (m_rProjections, m_rPhantom, iViewNumber, 1, true, m_iTrace, m_pSGP); + ::wxYield(); // update the display if (m_iTrace >= Trace::TRACE_PLOT) { const DetectorArray& detArray = m_rProjections.getDetectorArray (iViewNumber); const DetectorValue* detValues = detArray.detValues(); @@ -172,27 +174,25 @@ ProjectionsDialog::showView (int iViewNumber) bool ProjectionsDialog::projectView (int iViewNumber) { + 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) - 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 (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; }