X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1a56f55c02d718e9da7574807cb01e4d2cf6a1fa..b77b87881bae2e6306366d79e7fe160334b3d4a2:/src/gtk/gauge.cpp?ds=inline diff --git a/src/gtk/gauge.cpp b/src/gtk/gauge.cpp index bd679ff044..693dbce205 100644 --- a/src/gtk/gauge.cpp +++ b/src/gtk/gauge.cpp @@ -2,70 +2,108 @@ // Name: gauge.cpp // Purpose: // Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Id: $Id$ +// Copyright: (c) 1998 Robert Roebling +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "gauge.h" #endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #include "wx/gauge.h" +#if wxUSE_GAUGE + +#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 ) +{ + m_needParent = TRUE; + + if (!PreCreation( parent, pos, size ) || + !CreateBase( parent, id, pos, size, style, validator, name )) + { + wxFAIL_MSG( wxT("wxGauge creation failed") ); + return FALSE; + } + + m_rangeMax = range; + + 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 ); + } + + m_parent->DoAddChild( this ); + + PostCreation(); -bool wxGauge::Create( wxWindow *parent, const wxWindowID id, const int range, - const wxPoint& pos, const wxSize& size, - const long style, const wxString& name ) + Show( TRUE ); + + return TRUE; +} + +void wxGauge::DoSetGauge() +{ + wxASSERT_MSG( 0 <= m_gaugePos && m_gaugePos <= m_rangeMax, + _T("invalid gauge position in DoSetGauge()") ); + + gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), + m_rangeMax ? ((float)m_gaugePos)/m_rangeMax : 0.); +} + +void wxGauge::SetRange( int range ) { - m_needParent = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, size, style, name ); - - m_rangeMax = range; - m_gaugePos = 0; - m_useProgressBar = TRUE; - - m_widget = gtk_progress_bar_new(); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -}; - -void wxGauge::SetRange( const int r ) + m_rangeMax = range; + if (m_gaugePos > m_rangeMax) + m_gaugePos = m_rangeMax; + + DoSetGauge(); +} + +void wxGauge::SetValue( int pos ) { - m_rangeMax = r; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; - - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), (float)(m_rangeMax/m_gaugePos) ); -}; + wxCHECK_RET( pos <= m_rangeMax, _T("invalid value in wxGauge::SetValue()") ); + + m_gaugePos = pos; -void wxGauge::SetValue( const int pos ) + DoSetGauge(); +} + +int wxGauge::GetRange() const { - m_gaugePos = pos; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; - - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), (float)(m_rangeMax/m_gaugePos) ); -}; + return m_rangeMax; +} -int wxGauge::GetRange(void) const +int wxGauge::GetValue() const { - return m_rangeMax; -}; + return m_gaugePos; +} -int wxGauge::GetValue(void) const +void wxGauge::ApplyWidgetStyle() { - return m_gaugePos; -}; + SetWidgetStyle(); + gtk_widget_set_style( m_widget, m_widgetStyle ); +} + +#endif // wxUSE_GAUGE