+ }
+}
+
+void
+BackgroundManager::OnCancelButton (wxCommandEvent& event)
+{
+ BackgroundManagerTask* pTask = lookupTask (event.GetId());
+ if (! pTask) {
+ sys_error (ERR_SEVERE, "Unable to lookup task for button");
+ return;
+ }
+
+ pTask->supervisor()->onCancel();
+}
+
+BackgroundManagerTask*
+BackgroundManager::lookupTask (BackgroundSupervisor* pSupervisor)
+{
+ BackgroundManagerTask* pTask = NULL;
+
+ wxCriticalSectionLocker locker (m_criticalSection);
+ for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) {
+ if ((*iTask)->supervisor() == pSupervisor) {
+ pTask = *iTask;
+ break;
+ }
+ }
+
+ return pTask;
+}
+
+BackgroundManagerTask*
+BackgroundManager::lookupTask (int iButtonID)
+{
+ BackgroundManagerTask* pTask = NULL;
+
+ wxCriticalSectionLocker locker (m_criticalSection);
+ for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) {
+ if ((*iTask)->buttonID() == iButtonID) {
+ pTask = *iTask;
+ break;
+ }
+ }
+
+ return pTask;