+bool wxGauge::Create( wxWindow *parent,
+ wxWindowID id,
+ int range,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxValidator& validator,
+ const wxString& name )
+{
+ 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();
+ 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);
+ SetInitialSize(size);
+
+ return true;
+}
+
+void wxGauge::DoSetGauge()
+{
+ wxASSERT_MSG( 0 <= m_gaugePos && m_gaugePos <= m_rangeMax,
+ wxT("invalid gauge position in DoSetGauge()") );
+
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (m_widget),
+ m_rangeMax ? ((double)m_gaugePos)/m_rangeMax : 0.0);
+}