diff --git a/include/wx/gtk/gauge.h b/include/wx/gtk/gauge.h index 11ec3318c1..c1d22c1a98 100644 --- a/include/wx/gtk/gauge.h +++ b/include/wx/gtk/gauge.h @@ -42,25 +42,32 @@ extern const wxChar* wxGaugeNameStr; class wxGauge: public wxControl { public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; m_useProgressBar = TRUE; } + wxGauge() { Init(); } - inline wxGauge( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ) + wxGauge( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ) { - Create(parent, id, range, pos, size, style, validator, name); + Init(); + + Create(parent, id, range, pos, size, style, validator, name); } - bool Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ); - void SetShadowWidth( int WXUNUSED(w) ) {}; - void SetBezelFace( int WXUNUSED(w) ) {}; + + bool Create( wxWindow *parent, + wxWindowID id, int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ); + + void SetShadowWidth( int WXUNUSED(w) ) { } + void SetBezelFace( int WXUNUSED(w) ) { } void SetRange( int r ); void SetValue( int pos ); int GetShadowWidth() const { return 0; }; @@ -68,17 +75,27 @@ public: int GetRange() const; int GetValue() const; - // Are we a Win95/GTK progress bar, or a normal gauge? - inline bool GetProgressBar() const { return m_useProgressBar; } - // implementation // ------------- - + void ApplyWidgetStyle(); - int m_rangeMax; - int m_gaugePos; - bool m_useProgressBar; - + + // the max and current gauge values + int m_rangeMax, + m_gaugePos; + + // obsolete functions, don't use +#ifdef WXWIN_COMPATIBILITY_2_2 + bool GetProgressBar() const { return TRUE; } +#endif // WXWIN_COMPATIBILITY_2_2 + +protected: + // common part of all ctors + void Init() { m_rangeMax = m_gaugePos = 0; } + + // set the gauge value to the value of m_gaugePos + void DoSetGauge(); + private: DECLARE_DYNAMIC_CLASS(wxGauge) }; diff --git a/include/wx/gtk1/gauge.h b/include/wx/gtk1/gauge.h index 11ec3318c1..c1d22c1a98 100644 --- a/include/wx/gtk1/gauge.h +++ b/include/wx/gtk1/gauge.h @@ -42,25 +42,32 @@ extern const wxChar* wxGaugeNameStr; class wxGauge: public wxControl { public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; m_useProgressBar = TRUE; } + wxGauge() { Init(); } - inline wxGauge( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ) + wxGauge( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ) { - Create(parent, id, range, pos, size, style, validator, name); + Init(); + + Create(parent, id, range, pos, size, style, validator, name); } - bool Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ); - void SetShadowWidth( int WXUNUSED(w) ) {}; - void SetBezelFace( int WXUNUSED(w) ) {}; + + bool Create( wxWindow *parent, + wxWindowID id, int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ); + + void SetShadowWidth( int WXUNUSED(w) ) { } + void SetBezelFace( int WXUNUSED(w) ) { } void SetRange( int r ); void SetValue( int pos ); int GetShadowWidth() const { return 0; }; @@ -68,17 +75,27 @@ public: int GetRange() const; int GetValue() const; - // Are we a Win95/GTK progress bar, or a normal gauge? - inline bool GetProgressBar() const { return m_useProgressBar; } - // implementation // ------------- - + void ApplyWidgetStyle(); - int m_rangeMax; - int m_gaugePos; - bool m_useProgressBar; - + + // the max and current gauge values + int m_rangeMax, + m_gaugePos; + + // obsolete functions, don't use +#ifdef WXWIN_COMPATIBILITY_2_2 + bool GetProgressBar() const { return TRUE; } +#endif // WXWIN_COMPATIBILITY_2_2 + +protected: + // common part of all ctors + void Init() { m_rangeMax = m_gaugePos = 0; } + + // set the gauge value to the value of m_gaugePos + void DoSetGauge(); + private: DECLARE_DYNAMIC_CLASS(wxGauge) }; diff --git a/src/gtk/gauge.cpp b/src/gtk/gauge.cpp index 917ab60307..f180206c79 100644 --- a/src/gtk/gauge.cpp +++ b/src/gtk/gauge.cpp @@ -15,18 +15,22 @@ #if wxUSE_GAUGE -#include #include //----------------------------------------------------------------------------- // wxGauge //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxGauge,wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) +bool wxGauge::Create( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name ) { m_needParent = TRUE; @@ -38,12 +42,13 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, } m_rangeMax = range; - m_gaugePos = 0; - m_useProgressBar = TRUE; m_widget = gtk_progress_bar_new(); - if( style & wxGA_VERTICAL) - gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget) , GTK_PROGRESS_BOTTOM_TO_TOP ); + if ( style & wxGA_VERTICAL ) + { + gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget), + GTK_PROGRESS_BOTTOM_TO_TOP ); + } m_parent->DoAddChild( this ); @@ -54,20 +59,31 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, return TRUE; } -void wxGauge::SetRange( int r ) +void wxGauge::DoSetGauge() { - m_rangeMax = r; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxASSERT_MSG( 0 <= m_gaugePos && m_gaugePos <= m_rangeMax, + _T("invalid gauge position in DoSetGauge()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), + m_rangeMax ? ((float)m_gaugePos)/m_rangeMax : 0.); +} + +void wxGauge::SetRange( int range ) +{ + m_rangeMax = range; + if (m_gaugePos > m_rangeMax) + m_gaugePos = m_rangeMax; + + DoSetGauge(); } void wxGauge::SetValue( int pos ) { - m_gaugePos = pos; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxCHECK_RET( pos <= m_rangeMax, _T("invalid value in wxGauge::SetValue()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + m_gaugePos = pos; + + DoSetGauge(); } int wxGauge::GetRange() const diff --git a/src/gtk1/gauge.cpp b/src/gtk1/gauge.cpp index 917ab60307..f180206c79 100644 --- a/src/gtk1/gauge.cpp +++ b/src/gtk1/gauge.cpp @@ -15,18 +15,22 @@ #if wxUSE_GAUGE -#include #include //----------------------------------------------------------------------------- // wxGauge //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxGauge,wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) +bool wxGauge::Create( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name ) { m_needParent = TRUE; @@ -38,12 +42,13 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, } m_rangeMax = range; - m_gaugePos = 0; - m_useProgressBar = TRUE; m_widget = gtk_progress_bar_new(); - if( style & wxGA_VERTICAL) - gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget) , GTK_PROGRESS_BOTTOM_TO_TOP ); + if ( style & wxGA_VERTICAL ) + { + gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget), + GTK_PROGRESS_BOTTOM_TO_TOP ); + } m_parent->DoAddChild( this ); @@ -54,20 +59,31 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, return TRUE; } -void wxGauge::SetRange( int r ) +void wxGauge::DoSetGauge() { - m_rangeMax = r; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxASSERT_MSG( 0 <= m_gaugePos && m_gaugePos <= m_rangeMax, + _T("invalid gauge position in DoSetGauge()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), + m_rangeMax ? ((float)m_gaugePos)/m_rangeMax : 0.); +} + +void wxGauge::SetRange( int range ) +{ + m_rangeMax = range; + if (m_gaugePos > m_rangeMax) + m_gaugePos = m_rangeMax; + + DoSetGauge(); } void wxGauge::SetValue( int pos ) { - m_gaugePos = pos; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxCHECK_RET( pos <= m_rangeMax, _T("invalid value in wxGauge::SetValue()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + m_gaugePos = pos; + + DoSetGauge(); } int wxGauge::GetRange() const