void wxCurlTransferDialog::EndModal(int retCode) { wxDialog::EndModal(retCode); // before dying we must be sure our thread has completed, too // otherwise it will try to send events to a non-existent handler // NB: this must be done *after* calling wxDialog::EndModal // so that while we wait we are hidden HandleCurlThreadError(m_pThread->Wait(), m_pThread); }
bool wxCurlUploadDialog::Create(const wxString &url, wxInputStream *in, const wxString& title, const wxString& message, const wxBitmap& bitmap, wxWindow *parent, long style) { if (!wxCurlTransferDialog::Create(url, title, message, wxS("Uploaded:"), bitmap, parent, style)) return false; // register as the thread's event handler wxCurlUploadThread *thread = new wxCurlUploadThread(this, ThreadId); m_pThread = thread; // downcast our pointer for usage by wxCurlTransferDialog if (!HandleCurlThreadError(thread->SetURL(url), thread, url)) return false; if (!HandleCurlThreadError(thread->SetInputStream(in), thread)) return false; return true; }
void wxCurlTransferDialog::OnStart(wxCommandEvent &WXUNUSED(ev)) { //wxASSERT(HasFlag(wxCTDS_CAN_START)); // OnStart() must be usable also from RunModal() when !HasFlag(wxCTDS_CAN_START) wxCurlThreadError err = m_pThread->StartTransfer(); if (err != wxCTE_NO_ERROR) { HandleCurlThreadError(err, m_pThread); // shows a message to the user m_pThread->Abort(); EndModal(wxCDRF_FAILED); } }
void wxCurlTransferDialog::OnPauseResume(wxCommandEvent &WXUNUSED(ev)) { wxASSERT(HasFlag(wxCTDS_CAN_PAUSE)); if (m_pThread->IsRunning()) { if (HandleCurlThreadError(m_pThread->Pause(), m_pThread)) { FindWindowById(PauseResumeButtonId)->SetLabel(wxS("Resume")); if (m_pSpeed) m_pSpeed->SetLabel(wxS("0 (transfer paused)")); } } else { if (HandleCurlThreadError(m_pThread->Resume(), m_pThread)) { FindWindowById(PauseResumeButtonId)->SetLabel(wxS("Pause")); } } }