## GtkButtonBox

GtkButtonBox — A container for arranging buttons

## Functions

GtkWidget * | gtk_button_box_new ()
GtkButtonBoxStyle | gtk_button_box_get_layout ()
gboolean | gtk_button_box_get_child_secondary ()
gboolean | gtk_button_box_get_child_non_homogeneous ()
void | gtk_button_box_set_layout ()
void | gtk_button_box_set_child_secondary ()
void | gtk_button_box_set_child_non_homogeneous ()

## Properties

GtkButtonBoxStyle | layout-style | Read / Write

## Child Properties

gboolean | non-homogeneous | Read / Write
gboolean | secondary | Read / Write

## Style Properties

gint | child-internal-pad-x | Read
gint | child-internal-pad-y | Read
gint | child-min-height | Read
gint | child-min-width | Read

## Types and Values

struct | GtkButtonBox
struct | GtkButtonBoxClass
enum | GtkButtonBoxStyle

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GtkWidget
                ╰── GtkContainer
                    ╰── GtkBox
                        ╰── GtkButtonBox
                            ├── GtkHButtonBox
                            ╰── GtkVButtonBox

## Implemented Interfaces

GtkButtonBox implements AtkImplementorIface, GtkBuildable and GtkOrientable.

## Includes

    #include <gtk/gtk.h>

## Description

A button box should be used to provide a consistent layout of buttons throughout your application. The layout/spacing can be altered by the programmer, or if desired, by the user to alter the “feel” of a program to a small degree.

gtk_button_box_get_layout() and `gtk_button_box_set_layout()` retrieve and alter the method used to spread the buttons in a button box across the container, respectively.

The main purpose of GtkButtonBox is to make sure the children have all the same size. GtkButtonBox gives all children the same size, but it does allow 'outliers' to keep their own larger size.

To exempt individual children from homogeneous sizing regardless of their 'outlier' status, you can set the non-homogeneous child property.

## Functions

### gtk_button_box_new ()

    GtkWidget *
    gtk_button_box_new (GtkOrientation orientation);

Creates a new GtkButtonBox.

#### Parameters

orientation | the box's orientation. |

#### Returns

a new GtkButtonBox.

Since: 3.0

### gtk_button_box_get_layout ()

    GtkButtonBoxStyle
    gtk_button_box_get_layout (GtkButtonBox *widget);

Retrieves the method being used to arrange the buttons in a button box.

#### Parameters

widget | a GtkButtonBox |

#### Returns

the method used to lay out buttons in `widget` .

### gtk_button_box_get_child_secondary ()

    gboolean
    gtk_button_box_get_child_secondary (GtkButtonBox *widget,
                                        GtkWidget *child);

Returns whether `child` should appear in a secondary group of children.

#### Parameters

widget | a GtkButtonBox |
child | a child of `widget` |

#### Returns

whether `child` should appear in a secondary group of children.

Since: 2.4

### gtk_button_box_get_child_non_homogeneous ()

    gboolean
    gtk_button_box_get_child_non_homogeneous
                                   (GtkButtonBox *widget,
                                    GtkWidget *child);

Returns whether the child is exempted from homogenous sizing.

#### Parameters

widget | a GtkButtonBox |
child | a child of `widget` |

#### Returns

`TRUE` if the child is not subject to homogenous sizing

Since: 3.2

### gtk_button_box_set_layout ()

    void
    gtk_button_box_set_layout (GtkButtonBox *widget,
                               GtkButtonBoxStyle layout_style);

Changes the way buttons are arranged in their container.

#### Parameters

widget | a GtkButtonBox |
layout_style | the new layout style |

### gtk_button_box_set_child_secondary ()

    void
    gtk_button_box_set_child_secondary (GtkButtonBox *widget,
                                        GtkWidget *child,
                                        gboolean is_secondary);

Sets whether `child` should appear in a secondary group of children. A typical use of a secondary child is the help button in a dialog.

This group appears after the other children if the style is `GTK_BUTTONBOX_START`, `GTK_BUTTONBOX_SPREAD` or `GTK_BUTTONBOX_EDGE`, and before the other children if the style is `GTK_BUTTONBOX_END`. For horizontal button boxes, the definition of before/after depends on direction of the widget (see `gtk_widget_set_direction()`). If the style is `GTK_BUTTONBOX_START` or `GTK_BUTTONBOX_END`, then the secondary children are aligned at the other end of the button box from the main children. For the other styles, they appear immediately next to the main children.

#### Parameters

widget | a GtkButtonBox |
child | a child of `widget` |
is_secondary | if `TRUE`, the `child` appears in a secondary group of the button box. |

### gtk_button_box_set_child_non_homogeneous ()

    void
    gtk_button_box_set_child_non_homogeneous
                                   (GtkButtonBox *widget,
                                    GtkWidget *child,
                                    gboolean non_homogeneous);

Sets whether the child is exempted from homogeous sizing.

#### Parameters

widget | a GtkButtonBox |
child | a child of `widget` |
non_homogeneous | the new value |

Since: 3.2

## Types and Values

### struct GtkButtonBox

    struct GtkButtonBox;

### struct GtkButtonBoxClass

    struct GtkButtonBoxClass {
      GtkBoxClass parent_class;
    };

#### Members

GtkBoxClass `parent_class`; | The parent class. |

### enum GtkButtonBoxStyle

Used to dictate the style that a GtkButtonBox uses to layout the buttons it contains.

#### Members

GTK_BUTTONBOX_SPREAD | Buttons are evenly spread across the box. |
GTK_BUTTONBOX_EDGE | Buttons are placed at the edges of the box. |
GTK_BUTTONBOX_START | Buttons are grouped towards the start of the box, (on the left for a HBox, or the top for a VBox). |
GTK_BUTTONBOX_END | Buttons are grouped towards the end of the box, (on the right for a HBox, or the bottom for a VBox). |
GTK_BUTTONBOX_CENTER | Buttons are centered in the box. Since 2.12. |
GTK_BUTTONBOX_EXPAND | Buttons expand to fill the box. Since 3.12. |

## Property Details

### The `“layout-style”` property

      “layout-style”             GtkButtonBoxStyle

How to lay out the buttons in the box. Possible values are: spread, edge, start and end.

Flags: Read / Write

Default value: GTK_BUTTONBOX_EDGE

## Child Property Details

### The `“non-homogeneous”` child property

      “non-homogeneous”          gboolean

If TRUE, the child will not be subject to homogeneous sizing.

Flags: Read / Write

Default value: FALSE

### The `“secondary”` child property

      “secondary”                gboolean

If TRUE, the child appears in a secondary group of children, suitable for, e.g., help buttons.

Flags: Read / Write

Default value: FALSE

## Style Property Details

### The `“child-internal-pad-x”` style property

      “child-internal-pad-x”     gint

Amount to increase child's size on either side.

Flags: Read

Allowed values: >= 0

Default value: 4

### The `“child-internal-pad-y”` style property

      “child-internal-pad-y”     gint

Amount to increase child's size on the top and bottom.

Flags: Read

Allowed values: >= 0

Default value: 0

### The `“child-min-height”` style property

      “child-min-height”         gint

Minimum height of buttons inside the box.

Flags: Read

Allowed values: >= 0

Default value: 27

### The `“child-min-width”` style property

      “child-min-width”          gint

Minimum width of buttons inside the box.

Flags: Read

Allowed values: >= 0

Default value: 85