void CreateProgPage::onButtonClick( wxCommandEvent& event ) { if (event.GetId() == m_butCancel->GetId()) { //need to remove these so they dont cause any more wxEvents once this dies //other wise app crashes and god kills a kitten. if (m_pThread) { *m_pThread->getMcfProgressEvent() -= delegate(this, &CreateProgPage::onProgress); *m_pThread->getErrorEvent() -= delegate(this, &CreateProgPage::onError); *m_pThread->getCompleteStringEvent() -= delegate(this, &CreateProgPage::onComplete); m_pThread->stop(); } CreateMCFForm* temp = dynamic_cast<CreateMCFForm*>(GetParent()); if (temp) { temp->cancelPrompt(); temp->Close(); } } else if (event.GetId() == m_butPause->GetId()) { gcFrame* par = dynamic_cast<gcFrame*>(GetParent()); if (m_bThreadPaused) { m_butPause->SetLabel(Managers::GetString(L"#PAUSE")); if (par) par->setProgressState(gcFrame::P_NORMAL); } else { m_butPause->SetLabel(Managers::GetString(L"#RESUME")); if (par) par->setProgressState(gcFrame::P_PAUSED); } if (m_pThread) { if (m_bThreadPaused) m_pThread->unpause(); else m_pThread->pause(); m_bThreadPaused = !m_bThreadPaused; } } }
void CreateProgPage::onError(gcException& e) { gcFrame* par = dynamic_cast<gcFrame*>(GetParent()); if (par) par->setProgressState(gcFrame::P_ERROR); gcErrorBox(this, "#CF_ERRTITLE", "#CF_ERROR", e); CreateMCFForm* temp = dynamic_cast<CreateMCFForm*>(GetParent()); if (temp) temp->cancelPrompt(); GetParent()->Close(); }