X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fthreadproj.cpp;h=b2d169f11ef77c5964f772fb801879a6d6e0d1f1;hb=e98a8a9d72a7b919debbbc9d1b0f237fe71c0fb3;hp=c4fa9aeabdbad87ae5b86a1c03bc09b4f90abd7c;hpb=c953cbb6ffc2fd50e736230f4e6976a025983cff;p=ctsim.git diff --git a/src/threadproj.cpp b/src/threadproj.cpp index c4fa9ae..b2d169f 100644 --- a/src/threadproj.cpp +++ b/src/threadproj.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2001 Kevin Rosenberg ** -** $Id: threadproj.cpp,v 1.6 2001/03/01 07:30:49 kevin Exp $ +** $Id: threadproj.cpp,v 1.12 2001/03/04 04:30: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 @@ -31,6 +31,10 @@ #include "wx/wx.h" #endif +#if defined(HAVE_CONFIG_H) +#include "config.h" +#endif + #include "ct.h" #include "ctsim.h" #include "docs.h" @@ -39,9 +43,8 @@ #include "backgroundmgr.h" #include "backgroundsupr.h" -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif +#ifdef HAVE_WXTHREADS + @@ -54,10 +57,9 @@ ProjectorSupervisorThread::ProjectorSupervisorThread (PhantomFileView* pProjView, int iNDet, int iNView, const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio, const char* const pszLabel) -: m_pPhantomView(pProjView), m_iNDet(iNDet), m_iNView(iNView), m_strGeometry(pszGeometry), +: SupervisorThread(), m_pPhantomView(pProjView), m_iNDet(iNDet), m_iNView(iNView), m_strGeometry(pszGeometry), m_iNSample(iNSample), m_dRotation(dRotation), m_dFocalLength(dFocalLength), m_dCenterDetectorLength(dCenterDetectorLength), - m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_strLabel(pszLabel), - SupervisorThread() + m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_strLabel(pszLabel) { } @@ -105,17 +107,17 @@ ProjectorSupervisorThread::OnExit() ProjectorSupervisor::ProjectorSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNDet, int iNView, const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio, const char* const pszLabel) - : m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()), - m_iNDet(iNDet), m_iNView(iNView), - m_pszGeometry(pszGeometry), m_iNSample(iNSample), m_dRotation(dRotation), m_dFocalLength(dFocalLength), - m_dCenterDetectorLength(dCenterDetectorLength), m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_pszLabel(pszLabel), - BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), "Projecting", iNView) + : BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), "Projecting", iNView), + m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()), + m_iNDet(iNDet), m_iNView(iNView), m_pszGeometry(pszGeometry), m_iNSample(iNSample), + m_dRotation(dRotation), m_dFocalLength(dFocalLength), m_dCenterDetectorLength(dCenterDetectorLength), + m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_pszLabel(pszLabel) { m_pScanner = new Scanner (m_pPhantomDoc->getPhantom(), m_pszGeometry, m_iNDet, m_iNView, m_iNSample, m_dRotation, m_dFocalLength, m_dCenterDetectorLength, m_dViewRatio, m_dScanRatio); m_vecpChildProjections.reserve (getNumWorkers()); - for (unsigned int iThread = 0; iThread < getNumWorkers(); iThread++) { + for (int iThread = 0; iThread < getNumWorkers(); iThread++) { m_vecpChildProjections[iThread] = new Projections (*m_pScanner); } @@ -150,26 +152,20 @@ ProjectorSupervisor::onDone() wxCriticalSection doneSection; wxCriticalSectionLocker critsect (doneSection); - ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc(); - if (! pProjDoc) { - sys_error (ERR_SEVERE, "Unable to create projection file"); - return; - } - Projections* pProjections = getProjections(); - pProjDoc->setProjections (pProjections); - if (theApp->getAskDeleteNewDocs()) - pProjDoc->Modify (true); - pProjDoc->UpdateAllViews (NULL); - if (ProjectionFileView* projView = pProjDoc->getView()) { - projView->OnUpdate (projView, NULL); - projView->getFrame()->SetFocus(); - projView->getFrame()->Show(true); - } - *theApp->getLog() << m_pszLabel << "\n"; pProjections->setRemark (m_pszLabel); pProjections->setCalcTime (getTimerEnd()); + wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); + wxString msg (m_pszLabel); + msg += "\n"; + eventLog.SetString( msg ); + wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event + + wxCommandEvent newProjEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_PROJECTIONFILE_EVENT); + newProjEvent.SetClientData (pProjections); + wxPostEvent (theApp->getMainFrame(), newProjEvent); + setDone(); } @@ -274,3 +270,5 @@ void ProjectorWorker::OnExit () { } + +#endif // HAVE_WXTHREADS