r602: no message
[ctsim.git] / src / threadproj.cpp
index daf21d46c0fc944dcec75306b117d9e3a86bcb5c..eb054f3ca9d4b0f24d0a2fe694fdbfe863a8baf4 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2001 Kevin Rosenberg
 **
-**  $Id: threadproj.cpp,v 1.8 2001/03/02 21:32:34 kevin Exp $
+**  $Id: threadproj.cpp,v 1.11 2001/03/04 04:27:55 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
@@ -108,11 +108,11 @@ 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);
@@ -154,30 +154,19 @@ ProjectorSupervisor::onDone()
   wxCriticalSectionLocker critsect (doneSection);
 
   Projections* pProjections = getProjections();
-
-  if (! wxThread::IsMain())
-    wxMutexGuiEnter();
-  ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc();
-  if (! pProjDoc) {
-    sys_error (ERR_SEVERE, "Unable to create projection file");
-    return;
-  }  
-  pProjDoc->setProjections (pProjections);
-  pProjDoc->UpdateAllViews (NULL);
-  if (ProjectionFileView* projView = pProjDoc->getView()) {
-    projView->OnUpdate (projView, NULL);
-    projView->getFrame()->SetFocus();
-    projView->getFrame()->Show(true);
-  }
-  *theApp->getLog() << m_pszLabel << "\n";
-  if (! wxThread::IsMain())
-    wxMutexGuiLeave();
-
-  if (theApp->getAskDeleteNewDocs())
-    pProjDoc->Modify (true);
   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();
 }