X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33961d59b0fc1271fd7f12cf99819a552610269c..238c4e17980d862fa9cc872c0f5c7a473f475b46:/src/generic/progdlgg.cpp diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index 281efc5183..34890e763c 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -64,14 +64,12 @@ static void SetTimeLabel(unsigned long val, wxStaticText *label); // event tables // ---------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARY - BEGIN_EVENT_TABLE(wxProgressDialog, wxDialog) - EVT_BUTTON(wxID_CANCEL, wxProgressDialog::OnCancel) - EVT_CLOSE(wxProgressDialog::OnClose) - END_EVENT_TABLE() +BEGIN_EVENT_TABLE(wxProgressDialog, wxDialog) + EVT_BUTTON(wxID_CANCEL, wxProgressDialog::OnCancel) + EVT_CLOSE(wxProgressDialog::OnClose) +END_EVENT_TABLE() - IMPLEMENT_CLASS(wxProgressDialog, wxDialog) -#endif +IMPLEMENT_CLASS(wxProgressDialog, wxDialog) // ============================================================================ // implementation @@ -104,7 +102,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, // have two versions of this in wxWindowDC tp avoid function hiding // since there are two of these in wxDCBase, and in turn in wxDC. // VA cannot resolve this so: - dc.GetTextExtent(message, &widthText, NULL, NULL, NULL, NULL, FALSE); + dc.GetTextExtent(message, &widthText, NULL, NULL, NULL, NULL); #else dc.GetTextExtent(message, &widthText, (long*)NULL); #endif @@ -126,7 +124,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, { m_gauge = new wxGauge(this, -1, maximum, wxDefaultPosition, wxDefaultSize, - wxGA_HORIZONTAL | wxRAISED_BORDER); + wxGA_HORIZONTAL | wxRAISED_BORDER | (style & wxGA_SMOOTH)); c = new wxLayoutConstraints; c->left.SameAs(this, wxLeft, 2*LAYOUT_X_MARGIN); c->top.Below(m_msg, 2*LAYOUT_Y_MARGIN); @@ -150,28 +148,27 @@ wxProgressDialog::wxProgressDialog(wxString const &title, { nTimeLabels++; - m_elapsed = CreateLabel(_T("Elapsed time : "), &lastWindow); + m_elapsed = CreateLabel(_("Elapsed time : "), &lastWindow); } if ( style & wxPD_ESTIMATED_TIME ) { nTimeLabels++; - m_estimated = CreateLabel(_T("Estimated time : "), &lastWindow); + m_estimated = CreateLabel(_("Estimated time : "), &lastWindow); } if ( style & wxPD_REMAINING_TIME ) { nTimeLabels++; - m_remaining = CreateLabel(_T("Remaining time : "), &lastWindow); + m_remaining = CreateLabel(_("Remaining time : "), &lastWindow); } if ( nTimeLabels > 0 ) { // set it to the current time m_timeStart = wxGetCurrentTime(); - sizeDlg.y += nTimeLabels * (sizeLabel.y + LAYOUT_Y_MARGIN); } @@ -205,14 +202,14 @@ wxProgressDialog::wxProgressDialog(wxString const &title, sizeDlg.y += 2*LAYOUT_Y_MARGIN; // try to make the dialog not square but rectangular of reasonabel width - sizeDlg.x = wxMax(widthText, 4*sizeDlg.y/3); + sizeDlg.x = (wxCoord)wxMax(widthText, 4*sizeDlg.y/3); sizeDlg.x *= 3; sizeDlg.x /= 2; SetClientSize(sizeDlg); Centre(wxCENTER_FRAME | wxBOTH); - if (m_disableParentOnly ) + if ( m_disableParentOnly ) { if ( m_parent ) m_parent->Enable(FALSE); @@ -227,6 +224,10 @@ wxProgressDialog::wxProgressDialog(wxString const &title, // Update the display (especially on X, GTK) wxYield(); + +#ifdef __WXMAC__ + MacUpdateImmediately(); +#endif } wxStaticText *wxProgressDialog::CreateLabel(const wxString& text, @@ -234,7 +235,7 @@ wxStaticText *wxProgressDialog::CreateLabel(const wxString& text, { wxLayoutConstraints *c; - wxStaticText *label = new wxStaticText(this, -1, _T("unknown")); + wxStaticText *label = new wxStaticText(this, -1, _("unknown")); c = new wxLayoutConstraints; // VZ: I like the labels be centered - if the others don't mind, you may @@ -265,8 +266,8 @@ wxStaticText *wxProgressDialog::CreateLabel(const wxString& text, bool wxProgressDialog::Update(int value, const wxString& newmsg) { - wxASSERT_MSG( value == -1 || m_gauge, _T("cannot update non existent dialog") ); - wxASSERT_MSG( value <= m_maximum, _T("invalid progress value") ); + wxASSERT_MSG( value == -1 || m_gauge, wxT("cannot update non existent dialog") ); + wxASSERT_MSG( value <= m_maximum, wxT("invalid progress value") ); if( m_gauge ) @@ -314,6 +315,10 @@ wxProgressDialog::Update(int value, const wxString& newmsg) wxYield(); } +#ifdef __WXMAC__ + MacUpdateImmediately(); +#endif + return m_state != Canceled; } @@ -334,6 +339,10 @@ void wxProgressDialog::OnCancel(wxCommandEvent& event) // request to cancel was received, the next time Update() is called we // will handle it m_state = Canceled; + + // update the button state immediately so that the user knows that the + // request has been noticed + m_btnAbort->Disable(); } } @@ -374,7 +383,7 @@ static void SetTimeLabel(unsigned long val, wxStaticText *label) unsigned long hours = val / 3600; unsigned long minutes = (val % 3600) / 60; unsigned long seconds = val % 60; - s.Printf(_T("%lu:%02lu:%02lu"), hours, minutes, seconds); + s.Printf(wxT("%lu:%02lu:%02lu"), hours, minutes, seconds); if ( s != label->GetLabel() ) label->SetLabel(s);