Synopsis#include <gtk/gtk.h> GtkSpinButton; enum GtkSpinButtonUpdatePolicy; enum GtkSpinType; void gtk_spin_button_configure (GtkSpinButton *spin_button, GtkAdjustment *adjustment, gdouble climb_rate, guint digits); GtkWidget* gtk_spin_button_new (GtkAdjustment *adjustment, gdouble climb_rate, guint digits); GtkWidget* gtk_spin_button_new_with_range (gdouble min, gdouble max, gdouble step); void gtk_spin_button_set_adjustment (GtkSpinButton *spin_button, GtkAdjustment *adjustment); GtkAdjustment* gtk_spin_button_get_adjustment (GtkSpinButton *spin_button); void gtk_spin_button_set_digits (GtkSpinButton *spin_button, guint digits); void gtk_spin_button_set_increments (GtkSpinButton *spin_button, gdouble step, gdouble page); void gtk_spin_button_set_range (GtkSpinButton *spin_button, gdouble min, gdouble max); #define gtk_spin_button_get_value_as_float gint gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button); void gtk_spin_button_set_value (GtkSpinButton *spin_button, gdouble value); void gtk_spin_button_set_update_policy (GtkSpinButton *spin_button, GtkSpinButtonUpdatePolicy policy); void gtk_spin_button_set_numeric (GtkSpinButton *spin_button, gboolean numeric); void gtk_spin_button_spin (GtkSpinButton *spin_button, GtkSpinType direction, gdouble increment); void gtk_spin_button_set_wrap (GtkSpinButton *spin_button, gboolean wrap); void gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button, gboolean snap_to_ticks); void gtk_spin_button_update (GtkSpinButton *spin_button); guint gtk_spin_button_get_digits (GtkSpinButton *spin_button); void gtk_spin_button_get_increments (GtkSpinButton *spin_button, gdouble *step, gdouble *page); gboolean gtk_spin_button_get_numeric (GtkSpinButton *spin_button); void gtk_spin_button_get_range (GtkSpinButton *spin_button, gdouble *min, gdouble *max); gboolean gtk_spin_button_get_snap_to_ticks (GtkSpinButton *spin_button); GtkSpinButtonUpdatePolicy gtk_spin_button_get_update_policy (GtkSpinButton *spin_button); gdouble gtk_spin_button_get_value (GtkSpinButton *spin_button); gboolean gtk_spin_button_get_wrap (GtkSpinButton *spin_button); #define GTK_INPUT_ERROR Object HierarchyGObject +----GInitiallyUnowned +----GtkObject +----GtkWidget +----GtkEntry +----GtkSpinButton Implemented InterfacesGtkSpinButton implements AtkImplementorIface, GtkBuildable, GtkCellEditable and GtkEditable. Properties"adjustment" GtkAdjustment* : Read / Write "climb-rate" gdouble : Read / Write "digits" guint : Read / Write "numeric" gboolean : Read / Write "snap-to-ticks" gboolean : Read / Write "update-policy" GtkSpinButtonUpdatePolicy : Read / Write "value" gdouble : Read / Write "wrap" gboolean : Read / Write Signals"change-value" : Run Last / Action "input" : Run Last "output" : Run Last "value-changed" : Run Last "wrapped" : Run Last DescriptionA GtkSpinButton is an ideal way to allow the user to set the value of some attribute. Rather than having to directly type a number into a GtkEntry, GtkSpinButton allows the user to click on one of two arrows to increment or decrement the displayed value. A value can still be typed in, with the bonus that it can be checked to ensure it is in a given range. The main properties of a GtkSpinButton are through a GtkAdjustment. See the GtkAdjustment section for more details about an adjustment's properties.
Example 14. Using a GtkSpinButton to get an integer. /* Provides a function to retrieve an integer value from a GtkSpinButton * and creates a spin button to model percentage values. */ gint grab_int_value (GtkSpinButton *a_spinner, gpointer user_data) { return gtk_spin_button_get_value_as_int (a_spinner); } void create_integer_spin_button (void) { GtkWidget *window, *spinner; GtkAdjustment *spinner_adj; spinner_adj = (GtkAdjustment *) gtk_adjustment_new (50.0, 0.0, 100.0, 1.0, 5.0, 5.0); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (window), 5); /* creates the spinner, with no decimal places */ spinner = gtk_spin_button_new (spinner_adj, 1.0, 0); gtk_container_add (GTK_CONTAINER (window), spinner); gtk_widget_show_all (window); return; }
Example 15. Using a GtkSpinButton to get a floating point value. /* Provides a function to retrieve a floating point value from a * GtkSpinButton, and creates a high precision spin button. */ gfloat grab_int_value (GtkSpinButton *a_spinner, gpointer user_data) { return gtk_spin_button_get_value (a_spinner); } void create_floating_spin_button (void) { GtkWidget *window, *spinner; GtkAdjustment *spinner_adj; spinner_adj = (GtkAdjustment *) gtk_adjustment_new (2.500, 0.0, 5.0, 0.001, 0.1, 0.1); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (window), 5); /* creates the spinner, with three decimal places */ spinner = gtk_spin_button_new (spinner_adj, 0.001, 3); gtk_container_add (GTK_CONTAINER (window), spinner); gtk_widget_show_all (window); return; }
DetailsGtkSpinButtontypedef struct _GtkSpinButton GtkSpinButton;
enum GtkSpinButtonUpdatePolicytypedef enum { GTK_UPDATE_ALWAYS, GTK_UPDATE_IF_VALID } GtkSpinButtonUpdatePolicy;
enum GtkSpinTypetypedef enum { GTK_SPIN_STEP_FORWARD, GTK_SPIN_STEP_BACKWARD, GTK_SPIN_PAGE_FORWARD, GTK_SPIN_PAGE_BACKWARD, GTK_SPIN_HOME, GTK_SPIN_END, GTK_SPIN_USER_DEFINED } GtkSpinType;
gtk_spin_button_configure ()void gtk_spin_button_configure (GtkSpinButton *spin_button, GtkAdjustment *adjustment, gdouble climb_rate, guint digits); Changes the properties of an existing spin button. The adjustment, climb rate, and number of decimal places are all changed accordingly, after this function call.
gtk_spin_button_new ()GtkWidget* gtk_spin_button_new (GtkAdjustment *adjustment, gdouble climb_rate, guint digits); Creates a new GtkSpinButton.
gtk_spin_button_new_with_range ()GtkWidget* gtk_spin_button_new_with_range (gdouble min, gdouble max, gdouble step);
This is a convenience constructor that allows creation of a numeric
GtkSpinButton without manually creating an adjustment. The value is
initially set to the minimum value and a page increment of 10 *
Note that the way in which the precision is derived works best if
gtk_spin_button_set_adjustment ()void gtk_spin_button_set_adjustment (GtkSpinButton *spin_button, GtkAdjustment *adjustment);
Replaces the GtkAdjustment associated with
gtk_spin_button_get_adjustment ()GtkAdjustment* gtk_spin_button_get_adjustment (GtkSpinButton *spin_button); Get the adjustment associated with a GtkSpinButton
gtk_spin_button_set_digits ()void gtk_spin_button_set_digits (GtkSpinButton *spin_button, guint digits);
Set the precision to be displayed by
gtk_spin_button_set_increments ()void gtk_spin_button_set_increments (GtkSpinButton *spin_button, gdouble step, gdouble page); Sets the step and page increments for spin_button. This affects how quickly the value changes when the spin button's arrows are activated.
gtk_spin_button_set_range ()void gtk_spin_button_set_range (GtkSpinButton *spin_button, gdouble min, gdouble max);
Sets the minimum and maximum allowable values for
gtk_spin_button_get_value_as_float#define gtk_spin_button_get_value_as_float gtk_spin_button_get_value Warning
Gets the value in the
gtk_spin_button_get_value_as_int ()gint gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button);
Get the value
gtk_spin_button_set_value ()void gtk_spin_button_set_value (GtkSpinButton *spin_button, gdouble value);
Set the value of
gtk_spin_button_set_update_policy ()void gtk_spin_button_set_update_policy (GtkSpinButton *spin_button, GtkSpinButtonUpdatePolicy policy); Sets the update behavior of a spin button. This determines whether the spin button is always updated or only when a valid value is set.
gtk_spin_button_set_numeric ()void gtk_spin_button_set_numeric (GtkSpinButton *spin_button, gboolean numeric); Sets the flag that determines if non-numeric text can be typed into the spin button.
gtk_spin_button_spin ()void gtk_spin_button_spin (GtkSpinButton *spin_button, GtkSpinType direction, gdouble increment); Increment or decrement a spin button's value in a specified direction by a specified amount.
gtk_spin_button_set_wrap ()void gtk_spin_button_set_wrap (GtkSpinButton *spin_button, gboolean wrap); Sets the flag that determines if a spin button value wraps around to the opposite limit when the upper or lower limit of the range is exceeded.
gtk_spin_button_set_snap_to_ticks ()void gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button, gboolean snap_to_ticks); Sets the policy as to whether values are corrected to the nearest step increment when a spin button is activated after providing an invalid value.
gtk_spin_button_update ()void gtk_spin_button_update (GtkSpinButton *spin_button); Manually force an update of the spin button.
gtk_spin_button_get_digits ()guint gtk_spin_button_get_digits (GtkSpinButton *spin_button);
Fetches the precision of
gtk_spin_button_get_increments ()void gtk_spin_button_get_increments (GtkSpinButton *spin_button, gdouble *step, gdouble *page);
Gets the current step and page the increments used by
gtk_spin_button_get_numeric ()gboolean gtk_spin_button_get_numeric (GtkSpinButton *spin_button);
Returns whether non-numeric text can be typed into the spin button.
See
gtk_spin_button_get_range ()void gtk_spin_button_get_range (GtkSpinButton *spin_button, gdouble *min, gdouble *max);
Gets the range allowed for
gtk_spin_button_get_snap_to_ticks ()gboolean gtk_spin_button_get_snap_to_ticks (GtkSpinButton *spin_button);
Returns whether the values are corrected to the nearest step. See
gtk_spin_button_get_update_policy ()GtkSpinButtonUpdatePolicy gtk_spin_button_get_update_policy (GtkSpinButton *spin_button);
Gets the update behavior of a spin button. See
gtk_spin_button_get_value ()gdouble gtk_spin_button_get_value (GtkSpinButton *spin_button);
Get the value in the
gtk_spin_button_get_wrap ()gboolean gtk_spin_button_get_wrap (GtkSpinButton *spin_button);
Returns whether the spin button's value wraps around to the
opposite limit when the upper or lower limit of the range is
exceeded. See
Property DetailsThe
|
|
the object which received the signal. |
|
|
|
user data set when the signal handler was connected. |
"input"
signalgint user_function (GtkSpinButton *spinbutton, gpointer arg1, gpointer user_data) : Run Last
|
the object which received the signal. |
|
|
|
user data set when the signal handler was connected. |
Returns : |
"output"
signalgboolean user_function (GtkSpinButton *spin_button, gpointer user_data) : Run Last
The ::output signal can be used to change to formatting of the value that is displayed in the spin buttons entry.
/* show leading zeros */ static gboolean on_output (GtkSpinButton *spin, gpointer data) { GtkAdjustment *adj; gchar *text; int value; adj = gtk_spin_button_get_adjustment (spin); value = (int)gtk_adjustment_get_value (adj); text = g_strdup_printf ("%02d", value); gtk_entry_set_text (GTK_ENTRY (spin), text); g_free (text); return TRUE; }
|
the object which received the signal |
|
user data set when the signal handler was connected. |
Returns : |
TRUE if the value has been displayed.
|
"value-changed"
signalvoid user_function (GtkSpinButton *spinbutton, gpointer user_data) : Run Last
|
the object which received the signal. |
|
user data set when the signal handler was connected. |
"wrapped"
signalvoid user_function (GtkSpinButton *spinbutton, gpointer user_data) : Run Last
The wrapped signal is emitted right after the spinbutton wraps from its maximum to minimum value or vice-versa.
|
the object which received the signal |
|
user data set when the signal handler was connected. |
Since 2.10