Sets our main struct and passes it to the parent class.
Creates a new #GtkSpinButton.
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 * @step is the default. The precision of the spin button is equivalent to the precision of @step.
The ::change-value signal is a [keybinding signal]GtkBindingSignal which gets emitted when the user initiates a value change.
The ::input signal can be used to influence the conversion of the users input into a double value. The signal handler is expected to use gtk_entry_get_text() to retrieve the text of the entry and set @new_value to the new value.
The ::output signal can be used to change to formatting of the value that is displayed in the spin buttons entry. |[<!-- language="C" --> // show leading zeros static gboolean on_output (GtkSpinButton *spin, gpointer data) { GtkAdjustment *adjustment; gchar *text; int value;
The ::value-changed signal is emitted when the value represented by @spinbutton changes. Also see the #GtkSpinButton::output signal.
The ::wrapped signal is emitted right after the spinbutton wraps from its maximum to minimum value or vice-versa.
Changes the properties of an existing spin button. The adjustment, climb rate, and number of decimal places are updated accordingly.
Get the adjustment associated with a #GtkSpinButton
Fetches the precision of @spin_button. See gtk_spin_button_set_digits().
Gets the current step and page the increments used by @spin_button. See gtk_spin_button_set_increments().
Returns whether non-numeric text can be typed into the spin button. See gtk_spin_button_set_numeric().
Gets the range allowed for @spin_button. See gtk_spin_button_set_range().
Returns whether the values are corrected to the nearest step. See gtk_spin_button_set_snap_to_ticks().
Get the main Gtk struct
the main Gtk struct as a void*
Gets the update behavior of a spin button. See gtk_spin_button_set_update_policy().
Get the value in the @spin_button.
Get the value @spin_button represented as an integer.
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 gtk_spin_button_set_wrap().
Replaces the #GtkAdjustment associated with @spin_button.
Set the precision to be displayed by @spin_button. Up to 20 digit precision is allowed.
Sets the step and page increments for spin_button. This affects how quickly the value changes when the spin button’s arrows are activated.
Sets the flag that determines if non-numeric text can be typed into the spin button.
Sets the minimum and maximum allowable values for @spin_button.
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.
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.
Sets the value of @spin_button.
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.
Increment or decrement a spin button’s value in a specified direction by a specified amount.
Manually force an update of the spin button.
the main Gtk struct
the main Gtk struct
Get the main Gtk struct
the main Gtk struct as a void*
Gets the stock id of action. Since 2.16
Sets the stock id on action Since 2.16
Retrieves the value set by gtk_entry_set_activates_default().
Gets the value set by gtk_entry_set_alignment().
Gets the attribute list that was set on the entry using gtk_entry_set_attributes(), if any.
Get the #GtkEntryBuffer object which holds the text for this widget.
Returns the auxiliary completion object currently in use by @entry.
Returns the index of the icon which is the source of the current DND operation, or -1.
Retrieves the horizontal cursor adjustment for the entry. See gtk_entry_set_cursor_hadjustment().
Gets the value set by gtk_entry_set_has_frame().
Returns whether the icon is activatable.
Gets the area where entry’s icon at @icon_pos is drawn. This function is useful when drawing something to the entry in a draw callback.
Finds the icon at the given position and return its index. The position’s coordinates are relative to the @entry’s top left corner. If @x, @y doesn’t lie inside an icon, -1 is returned. This function is intended for use in a #GtkWidget::query-tooltip signal handler.
Retrieves the #GIcon used for the icon, or %NULL if there is no icon or if the icon was set by some other method (e.g., by stock, pixbuf, or icon name).
Retrieves the icon name used for the icon, or %NULL if there is no icon or if the icon was set by some other method (e.g., by pixbuf, stock or gicon).
Retrieves the image used for the icon.
Returns whether the icon appears sensitive or insensitive.
Retrieves the stock id used for the icon, or %NULL if there is no icon or if the icon was set by some other method (e.g., by pixbuf, icon name or gicon).
Gets the type of representation being used by the icon to store image data. If the icon has no image data, the return value will be %GTK_IMAGE_EMPTY.
Gets the contents of the tooltip on the icon at the specified position in @entry.
Gets the contents of the tooltip on the icon at the specified position in @entry.
This function returns the entry’s #GtkEntry:inner-border property. See gtk_entry_set_inner_border() for more information.
Gets the value of the #GtkEntry:input-hints property.
Gets the value of the #GtkEntry:input-purpose property.
Retrieves the character displayed in place of the real characters for entries with visibility set to false. See gtk_entry_set_invisible_char().
Gets the #PangoLayout used to display the entry. The layout is useful to e.g. convert text positions to pixel positions, in combination with gtk_entry_get_layout_offsets(). The returned layout is owned by the entry and must not be modified or freed by the caller.
Obtains the position of the #PangoLayout used to render text in the entry, in widget coordinates. Useful if you want to line up the text in an entry with some other text, e.g. when using the entry to implement editable cells in a sheet widget.
Retrieves the maximum allowed length of the text in @entry. See gtk_entry_set_max_length().
Retrieves the desired maximum width of @entry, in characters. See gtk_entry_set_max_width_chars().
Gets the value set by gtk_entry_set_overwrite_mode().
Retrieves the text that will be displayed when @entry is empty and unfocused
Returns the current fraction of the task that’s been completed. See gtk_entry_set_progress_fraction().
Retrieves the pulse step set with gtk_entry_set_progress_pulse_step().
Gets the tabstops that were set on the entry using gtk_entry_set_tabs(), if any.
Retrieves the contents of the entry widget. See also gtk_editable_get_chars().
Gets the area where the entry’s text is drawn. This function is useful when drawing something to the entry in a draw callback.
Retrieves the current length of the text in @entry.
Retrieves whether the text in @entry is visible. See gtk_entry_set_visibility().
Gets the value set by gtk_entry_set_width_chars().
Causes @entry to have keyboard focus.
Allow the #GtkEntry input method to internally handle key press and release events. If this function returns %TRUE, then no further processing should be done for this key event. See gtk_im_context_filter_keypress().
Converts from a position in the entry’s #PangoLayout (returned by gtk_entry_get_layout()) to a position in the entry contents (returned by gtk_entry_get_text()).
Indicates that some progress is made, but you don’t know how much. Causes the entry’s progress indicator to enter “activity mode,” where a block bounces back and forth. Each call to gtk_entry_progress_pulse() causes the block to move by a little bit (the amount of movement per pulse is determined by gtk_entry_set_progress_pulse_step()).
Reset the input method context of the entry if needed.
If @setting is %TRUE, pressing Enter in the @entry will activate the default widget for the window containing the entry. This usually means that the dialog box containing the entry will be closed, since the default widget is usually one of the dialog buttons.
Sets the alignment for the contents of the entry. This controls the horizontal positioning of the contents when the displayed text is shorter than the width of the entry.
Sets a #PangoAttrList; the attributes in the list are applied to the entry text.
Set the #GtkEntryBuffer object which holds the text for this widget.
Sets @completion to be the auxiliary completion object to use with @entry. All further configuration of the completion mechanism is done on @completion using the #GtkEntryCompletion API. Completion is disabled if @completion is set to %NULL.
Hooks up an adjustment to the cursor position in an entry, so that when the cursor is moved, the adjustment is scrolled to show that position. See gtk_scrolled_window_get_hadjustment() for a typical way of obtaining the adjustment.
Sets whether the entry has a beveled frame around it.
Sets whether the icon is activatable.
Sets up the icon at the given position so that GTK+ will start a drag operation when the user clicks and drags the icon.
Sets the icon shown in the entry at the specified position from the current icon theme. If the icon isn’t known, a “broken image” icon will be displayed instead.
Sets the icon shown in the entry at the specified position from the current icon theme.
Sets the icon shown in the specified position using a pixbuf.
Sets the icon shown in the entry at the specified position from a stock image.
Sets the sensitivity for the specified icon.
Sets @tooltip as the contents of the tooltip for the icon at the specified position. @tooltip is assumed to be marked up with the [Pango text markup language]PangoMarkupFormat.
Sets @tooltip as the contents of the tooltip for the icon at the specified position.
Sets %entry’s inner-border property to @border, or clears it if %NULL is passed. The inner-border is the area around the entry’s text, but inside its frame.
Sets the #GtkEntry:input-hints property, which allows input methods to fine-tune their behaviour.
Sets the #GtkEntry:input-purpose property which can be used by on-screen keyboards and other input methods to adjust their behaviour.
Sets the character to use in place of the actual text when gtk_entry_set_visibility() has been called to set text visibility to %FALSE. i.e. this is the character used in “password mode” to show the user how many characters have been typed. By default, GTK+ picks the best invisible char available in the current font. If you set the invisible char to 0, then the user will get no feedback at all; there will be no text on the screen as they type.
Sets the maximum allowed length of the contents of the widget. If the current contents are longer than the given length, then they will be truncated to fit.
Sets the desired maximum width in characters of @entry.
Sets whether the text is overwritten when typing in the #GtkEntry.
Sets text to be displayed in @entry when it is empty and unfocused. This can be used to give a visual hint of the expected contents of the #GtkEntry.
Causes the entry’s progress indicator to “fill in” the given fraction of the bar. The fraction should be between 0.0 and 1.0, inclusive.
Sets the fraction of total entry width to move the progress bouncing block for each call to gtk_entry_progress_pulse().
Sets a #PangoTabArray; the tabstops in the array are applied to the entry text.
Sets the text in the widget to the given value, replacing the current contents.
Sets whether the contents of the entry are visible or not. When visibility is set to %FALSE, characters are displayed as the invisible char, and will also appear that way when the text in the entry widget is copied elsewhere.
Changes the size request of the entry to be about the right size for @n_chars characters. Note that it changes the size request, the size can still be affected by how you pack the widget into containers. If @n_chars is -1, the size reverts to the default entry size.
Converts from a position in the entry contents (returned by gtk_entry_get_text()) to a position in the entry’s #PangoLayout (returned by gtk_entry_get_layout(), with text retrieved via pango_layout_get_text()).
Unsets the invisible char previously set with gtk_entry_set_invisible_char(). So that the default invisible char is used again.
The ::activate signal is emitted when the user hits the Enter key.
The ::backspace signal is a [keybinding signal]GtkBindingSignal which gets emitted when the user asks for it.
The ::copy-clipboard signal is a [keybinding signal]GtkBindingSignal which gets emitted to copy the selection to the clipboard.
The ::cut-clipboard signal is a [keybinding signal]GtkBindingSignal which gets emitted to cut the selection to the clipboard.
The ::delete-from-cursor signal is a [keybinding signal]GtkBindingSignal which gets emitted when the user initiates a text deletion.
The ::icon-press signal is emitted when an activatable icon is clicked.
The ::icon-press signal is emitted when an activatable icon is clicked.
The ::icon-release signal is emitted on the button release from a mouse click over an activatable icon.
The ::icon-release signal is emitted on the button release from a mouse click over an activatable icon.
The ::insert-at-cursor signal is a [keybinding signal]GtkBindingSignal which gets emitted when the user initiates the insertion of a fixed string at the cursor.
The ::insert-emoji signal is a [keybinding signal]GtkBindingSignal which gets emitted to present the Emoji chooser for the @entry.
The ::move-cursor signal is a [keybinding signal]GtkBindingSignal which gets emitted when the user initiates a cursor movement. If the cursor is not visible in @entry, this signal causes the viewport to be moved instead.
The ::paste-clipboard signal is a [keybinding signal]GtkBindingSignal which gets emitted to paste the contents of the clipboard into the text view.
The ::populate-popup signal gets emitted before showing the context menu of the entry.
If an input method is used, the typed text will not immediately be committed to the buffer. So if you are interested in the text, connect to this signal.
The ::toggle-overwrite signal is a [keybinding signal]GtkBindingSignal which gets emitted to toggle the overwrite mode of the entry.
Get the main Gtk struct
the main Gtk struct as a void*
Retrieves the orientation of the @orientable.
Sets the orientation of the @orientable.
A #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 an adjustment. See the #GtkAdjustment section for more details about an adjustment's properties. Note that GtkSpinButton will by default make its entry large enough to accomodate the lower and upper bounds of the adjustment, which can lead to surprising results. Best practice is to set both the #GtkEntry:width-chars and #GtkEntry:max-width-chars poperties to the desired number of characters to display in the entry.
CSS nodes
|[<!-- language="plain" --> spinbutton.horizontal ├── undershoot.left ├── undershoot.right ├── entry │ ╰── ... ├── button.down ╰── button.up ]|
|[<!-- language="plain" --> spinbutton.vertical ├── undershoot.left ├── undershoot.right ├── button.up ├── entry │ ╰── ... ╰── button.down ]|
GtkSpinButtons main CSS node has the name spinbutton. It creates subnodes for the entry and the two buttons, with these names. The button nodes have the style classes .up and .down. The GtkEntry subnodes (if present) are put below the entry node. The orientation of the spin button is reflected in the .vertical or .horizontal style class on the main node.
Using a GtkSpinButton to get an integer
|[<!-- language="C" --> // 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 *button, gpointer user_data) { return gtk_spin_button_get_value_as_int (button); }
void create_integer_spin_button (void) {
GtkWidget *window, *button; GtkAdjustment *adjustment;
adjustment = gtk_adjustment_new (50.0, 0.0, 100.0, 1.0, 5.0, 0.0);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (window), 5);
// creates the spinbutton, with no decimal places button = gtk_spin_button_new (adjustment, 1.0, 0); gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show_all (window); } ]|
Using a GtkSpinButton to get a floating point value
|[<!-- language="C" --> // Provides a function to retrieve a floating point value from a // GtkSpinButton, and creates a high precision spin button.
gfloat grab_float_value (GtkSpinButton *button, gpointer user_data) { return gtk_spin_button_get_value (button); }
void create_floating_spin_button (void) { GtkWidget *window, *button; GtkAdjustment *adjustment;
adjustment = gtk_adjustment_new (2.500, 0.0, 5.0, 0.001, 0.1, 0.0);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (window), 5);
// creates the spinbutton, with three decimal places button = gtk_spin_button_new (adjustment, 0.001, 3); gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show_all (window); } ]|