From: Włodzimierz Skiba Date: Wed, 5 Jan 2005 18:37:42 +0000 (+0000) Subject: Removed all duplicated and complicated #ifdefs for enabling Skip and Abort in progres... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/69c695466d495aca6ab44e3d8e4219fc00ff2146 Removed all duplicated and complicated #ifdefs for enabling Skip and Abort in progress dialog (Smartphone fixes). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/generic/progdlgg.h b/include/wx/generic/progdlgg.h index 5f16104d84..4256feee73 100644 --- a/include/wx/generic/progdlgg.h +++ b/include/wx/generic/progdlgg.h @@ -84,6 +84,13 @@ private: // as the next windows in the sizer, returns the created control wxStaticText *CreateLabel(const wxString& text, wxSizer *sizer); + // shortcuts for enabling buttons + void EnableClose(); + void EnableSkip(bool enable=true); + void EnableAbort(bool enable=true); + inline void DisableSkip() { EnableSkip(false); } + inline void DisableAbort() { EnableAbort(false); } + // the status bar wxGauge *m_gauge; // the message displayed @@ -102,48 +109,51 @@ private: // parent top level window (may be NULL) wxWindow *m_parentTop; - // continue processing or not (return value for Update()) - enum - { - Uncancelable = -1, // dialog can't be canceled - Canceled, // can be cancelled and, in fact, was - Continue, // can be cancelled but wasn't - Finished // finished, waiting to be removed from screen - } m_state; + // continue processing or not (return value for Update()) + enum + { + Uncancelable = -1, // dialog can't be canceled + Canceled, // can be cancelled and, in fact, was + Continue, // can be cancelled but wasn't + Finished // finished, waiting to be removed from screen + } m_state; - // skip some portion - bool m_skip; + // skip some portion + bool m_skip; #if !defined(__SMARTPHONE__) - // the abort and skip buttons (or NULL if none) - wxButton *m_btnAbort; - wxButton *m_btnSkip; + // the abort and skip buttons (or NULL if none) + wxButton *m_btnAbort; + wxButton *m_btnSkip; #endif - // the maximum value - int m_maximum; + // the maximum value + int m_maximum; + + // saves the time when elapsed time was updated so there is only one + // update per second + unsigned long m_last_timeupdate; + // tells how often a change of the estimated time has to be confirmed + // before it is actually displayed - this reduces the frequence of updates + // of estimated and remaining time + const int m_delay; + // counts the confirmations + int m_ctdelay; + unsigned long m_display_estimated; - // saves the time when elapsed time was updated so there is only one - // update per second - unsigned long m_last_timeupdate; - // tells how often a change of the estimated time has to be confirmed - // before it is actually displayed - this reduces the frequence of updates - // of estimated and remaining time - const int m_delay; - // counts the confirmations - int m_ctdelay; - unsigned long m_display_estimated; + bool m_hasAbortButton, + m_hasSkipButton; #if defined(__WXMSW__ ) || defined(__WXPM__) - // the factor we use to always keep the value in 16 bit range as the native - // control only supports ranges from 0 to 65,535 - size_t m_factor; + // the factor we use to always keep the value in 16 bit range as the native + // control only supports ranges from 0 to 65,535 + size_t m_factor; #endif // __WXMSW__ - // for wxPD_APP_MODAL case - class WXDLLEXPORT wxWindowDisabler *m_winDisabler; + // for wxPD_APP_MODAL case + class WXDLLEXPORT wxWindowDisabler *m_winDisabler; - DECLARE_EVENT_TABLE() + DECLARE_EVENT_TABLE() private: // Virtual function hiding supression virtual void Update() { wxDialog::Update(); } diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index 8d64378472..d4bc36629f 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -103,21 +103,23 @@ wxProgressDialog::wxProgressDialog(wxString const &title, int style) : wxDialog(parent, wxID_ANY, title), m_skip(false), - m_delay(3) + m_delay(3), + m_hasAbortButton(false), + m_hasSkipButton(false) { // we may disappear at any moment, let the others know about it SetExtraStyle(GetExtraStyle() | wxWS_EX_TRANSIENT); m_windowStyle |= style; - bool hasAbortButton = (style & wxPD_CAN_ABORT) != 0; - bool hasSkipButton = (style & wxPD_CAN_SKIP) != 0; + m_hasAbortButton = (style & wxPD_CAN_ABORT) != 0; + m_hasSkipButton = (style & wxPD_CAN_SKIP) != 0; #if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) // we have to remove the "Close" button from the title bar then as it is // confusing to have it - it doesn't work anyhow // // FIXME: should probably have a (extended?) window style for this - if ( !hasAbortButton ) + if ( !m_hasAbortButton ) { EnableCloseButton(false); } @@ -127,7 +129,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, SetLeftMenu(); #endif - m_state = hasAbortButton ? Continue : Uncancelable; + m_state = m_hasAbortButton ? Continue : Uncancelable; m_maximum = maximum; #if defined(__WXMSW__) || defined(__WXPM__) @@ -214,9 +216,9 @@ wxProgressDialog::wxProgressDialog(wxString const &title, } #if defined(__SMARTPHONE__) - if ( hasSkipButton ) + if ( m_hasSkipButton ) SetRightMenu(wxID_SKIP, _("Skip")); - if ( hasAbortButton ) + if ( m_hasAbortButton ) SetLeftMenu(wxID_CANCEL); #else m_btnAbort = m_btnSkip = (wxButton *)NULL; @@ -231,7 +233,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, #endif // MSW/!MSW ; - if ( hasSkipButton ) + if ( m_hasSkipButton ) { m_btnSkip = new wxButton(this, wxID_SKIP, _("Skip")); @@ -241,7 +243,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, sizeDlgModified = true; } - if ( hasAbortButton ) + if ( m_hasAbortButton ) { m_btnAbort = new wxButton(this, wxID_CANCEL); @@ -414,26 +416,10 @@ wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip) m_state = Finished; if( !(GetWindowStyle() & wxPD_AUTO_HIDE) ) { -#if defined(__SMARTPHONE__) - SetLeftMenu(wxID_CANCEL, _("Close")); - SetRightMenu(); -#endif - if ( m_btnSkip ) - { - // tell the user what he should do... - m_btnSkip->Disable(); - } - - if ( m_btnAbort ) - { - // tell the user what he should do... - m_btnAbort->SetLabel(_("Close")); - } + EnableClose(); + DisableSkip(); #if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) - else // enable the button to give the user a way to close the dlg - { - EnableCloseButton(); - } + EnableCloseButton(); #endif // __WXMSW__ if ( !newmsg.empty() ) @@ -466,8 +452,7 @@ wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip) { *skip = true; m_skip = false; - if(m_btnSkip) - m_btnSkip->Enable(); + EnableSkip(); } } @@ -483,19 +468,9 @@ void wxProgressDialog::Resume() m_ctdelay = m_delay; // force an update of the elapsed/estimated/remaining time m_break += wxGetCurrentTime()-m_timeStop; - // it may have been disabled by OnCancel(), so enable it back to let the - // user interrupt us again if needed - if(m_btnAbort) - m_btnAbort->Enable(); - - // enable skipping because the one before OnCancel() is no more valid + EnableAbort(); + EnableSkip(); m_skip = false; - if(m_btnSkip) - m_btnSkip->Enable(); - -#if defined(__SMARTPHONE__) - SetLeftMenu(wxID_CANCEL, _("Cancel")); -#endif } bool wxProgressDialog::Show( bool show ) @@ -527,16 +502,10 @@ void wxProgressDialog::OnCancel(wxCommandEvent& event) // will handle it m_state = Canceled; - // update the button state immediately so that the user knows that the + // update the buttons state immediately so that the user knows that the // request has been noticed - if(m_btnAbort) - m_btnAbort->Disable(); - if(m_btnSkip) - m_btnSkip->Disable(); - -#if defined(__SMARTPHONE__) - SetLeftMenu(); -#endif + DisableAbort(); + DisableSkip(); // save the time when the dialog was stopped m_timeStop = wxGetCurrentTime(); @@ -545,8 +514,7 @@ void wxProgressDialog::OnCancel(wxCommandEvent& event) void wxProgressDialog::OnSkip(wxCommandEvent& WXUNUSED(event)) { - if(m_btnSkip) - m_btnSkip->Disable(); + DisableSkip(); m_skip = true; } @@ -566,14 +534,9 @@ void wxProgressDialog::OnClose(wxCloseEvent& event) { // next Update() will notice it m_state = Canceled; - if(m_btnAbort) - m_btnAbort->Disable(); - if(m_btnSkip) - m_btnSkip->Disable(); + DisableAbort(); + DisableSkip(); -#if defined(__SMARTPHONE__) - SetLeftMenu(); -#endif m_timeStop = wxGetCurrentTime(); } } @@ -621,4 +584,52 @@ static void SetTimeLabel(unsigned long val, wxStaticText *label) } } +void wxProgressDialog::EnableSkip(bool enable) +{ + if(m_hasSkipButton) + { +#ifdef __SMARTPHONE__ + if(enable) + SetRightMenu(wxID_SKIP, _("Skip")); + else + SetRightMenu(); +#else + if(m_btnSkip) + m_btnSkip->Enable(enable); +#endif + } +} + +void wxProgressDialog::EnableAbort(bool enable) +{ + if(m_hasAbortButton) + { +#ifdef __SMARTPHONE__ + if(enable) + SetLeftMenu(wxID_CANCEL, _("Cancel")); + else + SetLeftMenu(); +#else + if(m_btnAbort) + m_btnAbort->Enable(enable); +#endif + } +} + +void wxProgressDialog::EnableClose() +{ + if(m_hasAbortButton) + { +#ifdef __SMARTPHONE__ + SetLeftMenu(wxID_CANCEL, _("Close")); +#else + if(m_btnAbort) + { + m_btnAbort->Enable(); + m_btnAbort->SetLabel(_("Close")); + } +#endif + } +} + #endif // wxUSE_PROGRESSDLG