X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fdocs.cpp;h=b356033164193c8a900a84b1d0ed1678895d974e;hp=460082a63ae8f3a14f1e30a1beccb1c322e21352;hb=1ef49f39828474ed05fe69aff68d400e3b7d4044;hpb=b0df0a0f3008d0fee67f388cfa1c37af6383b38f diff --git a/src/docs.cpp b/src/docs.cpp index 460082a..b356033 100644 --- a/src/docs.cpp +++ b/src/docs.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: docs.cpp,v 1.25 2001/02/22 11:05:38 kevin Exp $ +** $Id: docs.cpp,v 1.26 2001/02/23 18:56:56 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 @@ -129,6 +129,10 @@ ImageFileDocument::Revert () // ProjectionFileDocument IMPLEMENT_DYNAMIC_CLASS(ProjectionFileDocument, wxDocument) +BEGIN_EVENT_TABLE(ProjectionFileDocument, wxDocument) +EVT_MENU(BackgroundSupervisor::MSG_BACKGROUND_SUPERVISOR_ADD, ProjectionFileDocument::OnAddBackground) +EVT_MENU(BackgroundSupervisor::MSG_BACKGROUND_SUPERVISOR_REMOVE, ProjectionFileDocument::OnRemoveBackground) +END_EVENT_TABLE() bool ProjectionFileDocument::OnSaveDocument(const wxString& filename) @@ -145,31 +149,47 @@ ProjectionFileDocument::OnSaveDocument(const wxString& filename) ProjectionFileDocument::~ProjectionFileDocument() { - for (int i = 0; i < m_vecpActiveReconstructors.size(); i++) { - ThreadedReconstructor* pThreadedReconstructor = m_vecpActiveReconstructors[i]; - if (pThreadedReconstructor) { - pThreadedReconstructor->cancel(); + for (BackgroundContainer::iterator i = m_vecpBackgroundSupervisors.begin(); + i != m_vecpBackgroundSupervisors.end(); i++) { + (*i)->cancel(); } - } + + m_vecpBackgroundSupervisors.clear(); + delete m_pProjectionFile; +} + +void +ProjectionFileDocument::OnAddBackground (wxCommandEvent& event) +{ +} - delete m_pProjectionFile; +void +ProjectionFileDocument::OnRemoveBackground (wxCommandEvent& event) +{ } void -ProjectionFileDocument::addReconstructor (ThreadedReconstructor* pRecon) +ProjectionFileDocument::addReconstructor (BackgroundSupervisor* pRecon) { wxCriticalSectionLocker locker (m_criticalSection); - m_vecpActiveReconstructors.push_back (pRecon); + m_vecpBackgroundSupervisors.push_back (pRecon); } void -ProjectionFileDocument::removeReconstructor (ThreadedReconstructor* pRecon) +ProjectionFileDocument::removeReconstructor (BackgroundSupervisor* pRecon) { wxCriticalSectionLocker locker (m_criticalSection); - for (int i = 0; i < m_vecpActiveReconstructors.size(); i++) { - if (m_vecpActiveReconstructors[i] == pRecon) - m_vecpActiveReconstructors[i] = NULL; - } + bool bFound = false; + for (BackgroundContainer::iterator i = m_vecpBackgroundSupervisors.begin(); + i != m_vecpBackgroundSupervisors.end(); + i++) + if (*i == pRecon) { + m_vecpBackgroundSupervisors.erase(i); + bFound = true; + break; + } + if (! bFound) + sys_error (ERR_SEVERE, "Could not find background task [ProjectionFileDocument::removeBackgroundTask"); } bool