X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f40fdaa339e19bbdf60c9c065c82daae4ca77b36..11a23db53128bf244a089123b7fd27deb577a889:/src/gtk/gauge.cpp diff --git a/src/gtk/gauge.cpp b/src/gtk/gauge.cpp index 90aad2ca5b..7c8c1c9cd4 100644 --- a/src/gtk/gauge.cpp +++ b/src/gtk/gauge.cpp @@ -1,31 +1,24 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp +// Name: src/gtk/gauge.cpp // Purpose: // Author: Robert Roebling -// Id: $Id$ // Copyright: (c) 1998 Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#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 "wx/gauge.h" + #include //----------------------------------------------------------------------------- // wxGauge //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) - bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, @@ -35,47 +28,57 @@ bool wxGauge::Create( wxWindow *parent, 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; + return false; } m_rangeMax = range; m_widget = gtk_progress_bar_new(); + g_object_ref(m_widget); if ( style & wxGA_VERTICAL ) { +#ifdef __WXGTK3__ + gtk_orientable_set_orientation(GTK_ORIENTABLE(m_widget), GTK_ORIENTATION_VERTICAL); + gtk_progress_bar_set_inverted(GTK_PROGRESS_BAR(m_widget), true); +#else gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget), GTK_PROGRESS_BOTTOM_TO_TOP ); +#endif } + // when using the gauge in indeterminate mode, we need this: + gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR (m_widget), 0.05); + m_parent->DoAddChild( this ); PostCreation(size); - SetBestSize(size); - - return TRUE; + SetInitialSize(size); + + return true; } void wxGauge::DoSetGauge() { wxASSERT_MSG( 0 <= m_gaugePos && m_gaugePos <= m_rangeMax, - _T("invalid gauge position in DoSetGauge()") ); + wxT("invalid gauge position in DoSetGauge()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), - m_rangeMax ? ((float)m_gaugePos)/m_rangeMax : 0.); + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (m_widget), + m_rangeMax ? ((double)m_gaugePos)/m_rangeMax : 0.0); } wxSize wxGauge::DoGetBestSize() const { + wxSize best; if (HasFlag(wxGA_VERTICAL)) - return wxSize(28, 100); + best = wxSize(28, 100); else - return wxSize(100, 28); + best = wxSize(100, 28); + CacheBestSize(best); + return best; } void wxGauge::SetRange( int range ) @@ -89,7 +92,7 @@ void wxGauge::SetRange( int range ) void wxGauge::SetValue( int pos ) { - wxCHECK_RET( pos <= m_rangeMax, _T("invalid value in wxGauge::SetValue()") ); + wxCHECK_RET( pos <= m_rangeMax, wxT("invalid value in wxGauge::SetValue()") ); m_gaugePos = pos; @@ -106,6 +109,11 @@ int wxGauge::GetValue() const return m_gaugePos; } +void wxGauge::Pulse() +{ + gtk_progress_bar_pulse(GTK_PROGRESS_BAR (m_widget)); +} + wxVisualAttributes wxGauge::GetDefaultAttributes() const { // Visible gauge colours use a different colour state @@ -119,9 +127,8 @@ wxVisualAttributes wxGauge::GetDefaultAttributes() const wxVisualAttributes wxGauge::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) { - return GetDefaultAttributesFromGTKWidget(gtk_progress_bar_new, + return GetDefaultAttributesFromGTKWidget(gtk_progress_bar_new(), false, GTK_STATE_ACTIVE); } #endif // wxUSE_GAUGE -