add wxProgressDialog::SetRange() function

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60867 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2009-06-01 23:19:25 +00:00
parent d1279c9a3d
commit ed1288eef0
3 changed files with 41 additions and 35 deletions

View File

@@ -1,13 +1,13 @@
//////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Name: progdlgg.h // Name: progdlgg.h
// Purpose: wxProgressDialog class // Purpose: wxProgressDialog class
// Author: Karsten Ballueder // Author: Karsten Ballueder
// Modified by: // Modified by: Francesco Montorsi
// Created: 09.05.1999 // Created: 09.05.1999
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Karsten Ballueder // Copyright: (c) Karsten Ballueder
// Licence: wxWindows licence // Licence: wxWindows licence
//////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#ifndef __PROGDLGH_G__ #ifndef __PROGDLGH_G__
#define __PROGDLGH_G__ #define __PROGDLGH_G__
@@ -23,56 +23,36 @@ class WXDLLIMPEXP_FWD_CORE wxButton;
class WXDLLIMPEXP_FWD_CORE wxGauge; class WXDLLIMPEXP_FWD_CORE wxGauge;
class WXDLLIMPEXP_FWD_CORE wxStaticText; class WXDLLIMPEXP_FWD_CORE wxStaticText;
/* Progress dialog which shows a moving progress bar. /*
Taken from the Mahogany project.*/ Progress dialog which shows a moving progress bar.
Taken from the Mahogany project.
*/
class WXDLLIMPEXP_CORE wxProgressDialog : public wxDialog class WXDLLIMPEXP_CORE wxProgressDialog : public wxDialog
{ {
DECLARE_DYNAMIC_CLASS(wxProgressDialog)
public: public:
/* Creates and displays dialog, disables event handling for other
frames or parent frame to avoid recursion problems.
@param title title for window
@param message message to display in window
@param maximum value for status bar, if <= 0, no bar is shown
@param parent window or NULL
@param style is the bit mask of wxPD_XXX constants from wx/defs.h
*/
wxProgressDialog(const wxString& title, const wxString& message, wxProgressDialog(const wxString& title, const wxString& message,
int maximum = 100, int maximum = 100,
wxWindow *parent = NULL, wxWindow *parent = NULL,
int style = wxPD_APP_MODAL | wxPD_AUTO_HIDE); int style = wxPD_APP_MODAL | wxPD_AUTO_HIDE);
/* Destructor.
Re-enables event handling for other windows.
*/
virtual ~wxProgressDialog(); virtual ~wxProgressDialog();
/* Update the status bar to the new value.
@param value new value
@param newmsg if used, new message to display
@return true if ABORT button has not been pressed
*/
virtual bool Update(int value, const wxString& newmsg = wxEmptyString, bool *skip = NULL); virtual bool Update(int value, const wxString& newmsg = wxEmptyString, bool *skip = NULL);
/* Switches the dialog to use a gauge in indeterminate mode and calls
wxGauge::Pulse() to show to the user a bit of progress */
virtual bool Pulse(const wxString& newmsg = wxEmptyString, bool *skip = NULL); virtual bool Pulse(const wxString& newmsg = wxEmptyString, bool *skip = NULL);
// Must provide overload to avoid hiding it (and warnings about it)
virtual void Update() { wxDialog::Update(); }
virtual bool Show( bool show = true );
/* Can be called to continue after the cancel button has been pressed, but
the program decided to continue the operation (e.g., user didn't
confirm it)
*/
void Resume(); void Resume();
int GetValue() const; int GetValue() const;
int GetRange() const; int GetRange() const;
wxString GetMessage() const; wxString GetMessage() const;
void SetRange(int maximum);
// Must provide overload to avoid hiding it (and warnings about it)
virtual void Update() { wxDialog::Update(); }
virtual bool Show( bool show = true );
protected: protected:
// callback for optional abort button // callback for optional abort button
void OnCancel(wxCommandEvent&); void OnCancel(wxCommandEvent&);
@@ -168,6 +148,7 @@ private:
class WXDLLIMPEXP_FWD_CORE wxWindowDisabler *m_winDisabler; class WXDLLIMPEXP_FWD_CORE wxWindowDisabler *m_winDisabler;
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(wxProgressDialog)
wxDECLARE_NO_COPY_CLASS(wxProgressDialog); wxDECLARE_NO_COPY_CLASS(wxProgressDialog);
}; };

View File

@@ -128,6 +128,15 @@ public:
*/ */
void Resume(); void Resume();
/**
Changes the maximum value of the progress meter given in the constructor.
This function can only be called (with a positive value) if the value passed
in the constructor was positive.
@since 2.9.1
*/
void SetRange(int maximum);
/** /**
Updates the dialog, setting the progress bar to the new value and Updates the dialog, setting the progress bar to the new value and
updating the message if new one is specified. updating the message if new one is specified.

View File

@@ -522,6 +522,22 @@ wxString wxProgressDialog::GetMessage() const
return m_msg->GetLabel(); return m_msg->GetLabel();
} }
void wxProgressDialog::SetRange(int maximum)
{
wxASSERT_MSG(m_gauge, "The dialog should have been constructed with a range > 0");
wxASSERT_MSG(maximum > 0, "Invalid range");
m_gauge->SetRange(maximum);
m_maximum = maximum;
#if defined(__WXMSW__) || defined(__WXPM__)
// we can't have values > 65,536 in the progress control under Windows, so
// scale everything down
m_factor = m_maximum / 65536 + 1;
m_maximum /= m_factor;
#endif // __WXMSW__
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// event handlers // event handlers
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------