+ if ( value == m_maximum )
+ {
+ // so that we return true below and that out [Cancel] handler knew what
+ // to do
+ m_state = Finished;
+ if( !(GetWindowStyle() & wxPD_AUTO_HIDE) )
+ {
+ if ( m_btnAbort )
+ {
+ // tell the user what he should do...
+ m_btnAbort->SetLabel(_("Close"));
+ }
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ else // enable the button to give the user a way to close the dlg
+ {
+ EnableCloseButton();
+ }
+#endif // __WXMSW__
+
+ if ( !newmsg )
+ {
+ // also provide the finishing message if the application didn't
+ m_msg->SetLabel(_("Done."));
+ }
+
+ wxYieldIfNeeded() ;
+
+ (void)ShowModal();
+ }
+ else // auto hide
+ {
+ // reenable other windows before hiding this one because otherwise
+ // Windows wouldn't give the focus back to the window which had
+ // been previously focused because it would still be disabled
+ ReenableOtherWindows();
+
+ Hide();
+ }
+ }
+ else
+ {
+ // we have to yield because not only we want to update the display but
+ // also to process the clicks on the cancel button
+ wxYieldIfNeeded() ;
+ }
+
+ // update the display in case yielding above didn't do it
+ Update();
+
+ return m_state != Canceled;
+}
+
+void wxProgressDialog::Resume()
+{
+ m_state = Continue;
+
+ // it may have been disabled by OnCancel(), so enable it back to let the
+ // user interrupt us again if needed
+ m_btnAbort->Enable();
+}
+
+bool wxProgressDialog::Show( bool show )
+{
+ // reenable other windows before hiding this one because otherwise
+ // Windows wouldn't give the focus back to the window which had
+ // been previously focused because it would still be disabled
+ if(!show)
+ ReenableOtherWindows();
+
+ return wxDialog::Show(show);