GtkAssistant: GTK+ 4 Reference Manual

## GtkAssistant GtkAssistant — A widget used to guide users through multi-step operations |

## Functions

GtkWidget * | gtk_assistant_new ()
gint | gtk_assistant_get_current_page ()
void | gtk_assistant_set_current_page ()
gint | gtk_assistant_get_n_pages ()
GtkWidget * | gtk_assistant_get_nth_page ()
gint | gtk_assistant_prepend_page ()
gint | gtk_assistant_append_page ()
gint | gtk_assistant_insert_page ()
void | gtk_assistant_remove_page ()
gint | (*GtkAssistantPageFunc) ()
void | gtk_assistant_set_forward_page_func ()
void | gtk_assistant_set_page_type ()
GtkAssistantPageType | gtk_assistant_get_page_type ()
void | gtk_assistant_set_page_title ()
const gchar * | gtk_assistant_get_page_title ()
void | gtk_assistant_set_page_complete ()
gboolean | gtk_assistant_get_page_complete ()
void | gtk_assistant_set_page_has_padding ()
gboolean | gtk_assistant_get_page_has_padding ()
void | gtk_assistant_add_action_widget ()
void | gtk_assistant_remove_action_widget ()
void | gtk_assistant_update_buttons_state ()
void | gtk_assistant_commit ()
void | gtk_assistant_next_page ()
void | gtk_assistant_previous_page ()

## Types and Values

struct | GtkAssistant
struct | GtkAssistantClass
enum | GtkAssistantPageType

## Includes

    #include <gtk/gtk.h>

## Description

A GtkAssistant is a widget used to represent a generally complex operation splitted in several steps, guiding the user through its pages and controlling the page flow to collect the necessary data.

The design of GtkAssistant is that it controls what buttons to show and to make sensitive, based on what it knows about the page sequence and the type of each page, in addition to state information like the page completion and committed status.

If you have a case that doesn’t quite fit in GtkAssistants way of handling buttons, you can use the GTK_ASSISTANT_PAGE_CUSTOM page type and handle buttons yourself.

### GtkAssistant as GtkBuildable

The GtkAssistant implementation of the GtkBuildable interface exposes the `action_area` as internal children with the name “action_area”.

To add pages to an assistant in GtkBuilder, simply add it as a child to the GtkAssistant object, and set its child properties as necessary.

### CSS nodes

GtkAssistant has a single CSS node with the name assistant.

## Functions

### gtk_assistant_new ()

    GtkWidget *
    gtk_assistant_new (void);

Creates a new GtkAssistant.

#### Returns

a newly created GtkAssistant

Since: 2.10

### gtk_assistant_get_current_page ()

    gint
    gtk_assistant_get_current_page (GtkAssistant *assistant);

Returns the page number of the current page.

#### Parameters

assistant | a GtkAssistant |

#### Returns

The index (starting from 0) of the current page in the `assistant` , or -1 if the `assistant` has no pages, or no current page.

Since: 2.10

### gtk_assistant_set_current_page ()

    void
    gtk_assistant_set_current_page (GtkAssistant *assistant,
                                    gint page_num);

Switches the page to `page_num` .

Note that this will only be necessary in custom buttons, as the `assistant` flow can be set with `gtk_assistant_set_forward_page_func()`.

#### Parameters

assistant | a GtkAssistant |
page_num | index of the page to switch to, starting from 0. If negative, the last page will be used. If greater than the number of pages in the `assistant` , nothing will be done. |

Since: 2.10

### gtk_assistant_get_n_pages ()

    gint
    gtk_assistant_get_n_pages (GtkAssistant *assistant);

Returns the number of pages in the `assistant`

#### Parameters

assistant | a GtkAssistant |

#### Returns

the number of pages in the `assistant`

Since: 2.10

### gtk_assistant_get_nth_page ()

    GtkWidget *
    gtk_assistant_get_nth_page (GtkAssistant *assistant,
                                gint page_num);

Returns the child widget contained in page number `page_num` .

#### Parameters

assistant | a GtkAssistant |
page_num | the index of a page in the `assistant` , or -1 to get the last page |

#### Returns

the child widget, or `NULL` if `page_num` is out of bounds.

[nullable][transfer none]

Since: 2.10

### gtk_assistant_prepend_page ()

    gint
    gtk_assistant_prepend_page (GtkAssistant *assistant,
                                GtkWidget *page);

Prepends a page to the `assistant` .

#### Parameters

assistant | a GtkAssistant |
page | a GtkWidget |

#### Returns

the index (starting at 0) of the inserted page

Since: 2.10

### gtk_assistant_append_page ()

    gint
    gtk_assistant_append_page (GtkAssistant *assistant,
                               GtkWidget *page);

Appends a page to the `assistant` .

#### Parameters

assistant | a GtkAssistant |
page | a GtkWidget |

#### Returns

the index (starting at 0) of the inserted page

Since: 2.10

### gtk_assistant_insert_page ()

    gint
    gtk_assistant_insert_page (GtkAssistant *assistant,
                               GtkWidget *page,
                               gint position);

Inserts a page in the `assistant` at a given position.

#### Parameters

assistant | a GtkAssistant |
page | a GtkWidget |
position | the index (starting at 0) at which to insert the page, or -1 to append the page to the `assistant` |

#### Returns

the index (starting from 0) of the inserted page

Since: 2.10

### gtk_assistant_remove_page ()

    void
    gtk_assistant_remove_page (GtkAssistant *assistant,
                               gint page_num);

Removes the `page_num` ’s page from `assistant` .

#### Parameters

assistant | a GtkAssistant |
page_num | the index of a page in the `assistant` , or -1 to remove the last page |

Since: 3.2

### GtkAssistantPageFunc ()

    gint
    (*GtkAssistantPageFunc) (gint current_page,
                             gpointer data);

A function used by `gtk_assistant_set_forward_page_func()` to know which is the next page given a current one. It’s called both for computing the next page when the user presses the “forward” button and for handling the behavior of the “last” button.

#### Parameters

current_page | The page number used to calculate the next page. |
data | user data. | [closure]

#### Returns

The next page number.

### gtk_assistant_set_forward_page_func ()

    void
    gtk_assistant_set_forward_page_func (GtkAssistant *assistant,
                                         GtkAssistantPageFunc page_func,
                                         gpointer data,
                                         GDestroyNotify destroy);

Sets the page forwarding function to be `page_func` .

This function will be used to determine what will be the next page when the user presses the forward button. Setting `page_func` to `NULL` will make the assistant to use the default forward function, which just goes to the next visible page.

#### Parameters

assistant | a GtkAssistant |
page_func | the GtkAssistantPageFunc, or `NULL` to use the default one. | [allow-none]
data | user data for `page_func` |
destroy | destroy notifier for `data` |

Since: 2.10

### gtk_assistant_set_page_type ()

    void
    gtk_assistant_set_page_type (GtkAssistant *assistant,
                                 GtkWidget *page,
                                 GtkAssistantPageType type);

Sets the page type for `page` .

The page type determines the page behavior in the `assistant` .

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |
type | the new type for `page` |

Since: 2.10

### gtk_assistant_get_page_type ()

    GtkAssistantPageType
    gtk_assistant_get_page_type (GtkAssistant *assistant,
                                 GtkWidget *page);

Gets the page type of `page` .

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |

#### Returns

the page type of `page`

Since: 2.10

### gtk_assistant_set_page_title ()

    void
    gtk_assistant_set_page_title (GtkAssistant *assistant,
                                  GtkWidget *page,
                                  const gchar *title);

Sets a title for `page` .

The title is displayed in the header area of the assistant when `page` is the current page.

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |
title | the new title for `page` |

Since: 2.10

### gtk_assistant_get_page_title ()

    const gchar *
    gtk_assistant_get_page_title (GtkAssistant *assistant,
                                  GtkWidget *page);

Gets the title for `page` .

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |

#### Returns

the title for `page`

Since: 2.10

### gtk_assistant_set_page_complete ()

    void
    gtk_assistant_set_page_complete (GtkAssistant *assistant,
                                     GtkWidget *page,
                                     gboolean complete);

Sets whether `page` contents are complete.

This will make `assistant` update the buttons state to be able to continue the task.

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |
complete | the completeness status of the page |

Since: 2.10

### gtk_assistant_get_page_complete ()

    gboolean
    gtk_assistant_get_page_complete (GtkAssistant *assistant,
                                     GtkWidget *page);

Gets whether `page` is complete.

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |

#### Returns

`TRUE` if `page` is complete.

Since: 2.10

### gtk_assistant_set_page_has_padding ()

    void
    gtk_assistant_set_page_has_padding (GtkAssistant *assistant,
                                        GtkWidget *page,
                                        gboolean has_padding);

Sets whether the assistant is adding padding around the page.

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |
has_padding | whether this page has padding |

Since: 3.18

### gtk_assistant_get_page_has_padding ()

    gboolean
    gtk_assistant_get_page_has_padding (GtkAssistant *assistant,
                                        GtkWidget *page);

Gets whether page has padding.

#### Parameters

assistant | a GtkAssistant |
page | a page of `assistant` |

#### Returns

`TRUE` if `page` has padding

Since: 3.18

### gtk_assistant_add_action_widget ()

    void
    gtk_assistant_add_action_widget (GtkAssistant *assistant,
                                     GtkWidget *child);

Adds a widget to the action area of a GtkAssistant.

#### Parameters

assistant | a GtkAssistant |
child | a GtkWidget |

Since: 2.10

### gtk_assistant_remove_action_widget ()

    void
    gtk_assistant_remove_action_widget (GtkAssistant *assistant,
                                        GtkWidget *child);

Removes a widget from the action area of a GtkAssistant.

#### Parameters

assistant | a GtkAssistant |
child | a GtkWidget |

Since: 2.10

### gtk_assistant_update_buttons_state ()

    void
    gtk_assistant_update_buttons_state (GtkAssistant *assistant);

Forces `assistant` to recompute the buttons state.

GTK+ automatically takes care of this in most situations, e.g. when the user goes to a different page, or when the visibility or completeness of a page changes.

One situation where it can be necessary to call this function is when changing a value on the current page affects the future page flow of the assistant.

#### Parameters

assistant | a GtkAssistant |

Since: 2.10

### gtk_assistant_commit ()

    void
    gtk_assistant_commit (GtkAssistant *assistant);

Erases the visited page history so the back button is not shown on the current page, and removes the cancel button from subsequent pages.

Use this when the information provided up to the current page is hereafter deemed permanent and cannot be modified or undone. For example, showing a progress page to track a long-running, unreversible operation after the user has clicked apply on a confirmation page.

#### Parameters

assistant | a GtkAssistant |

Since: 2.22

### gtk_assistant_next_page ()

    void
    gtk_assistant_next_page (GtkAssistant *assistant);

Navigate to the next page.

It is a programming error to call this function when there is no next page.

This function is for use when creating pages of the GTK_ASSISTANT_PAGE_CUSTOM type.

#### Parameters

assistant | a GtkAssistant |

Since: 3.0

### gtk_assistant_previous_page ()

    void
    gtk_assistant_previous_page (GtkAssistant *assistant);

Navigate to the previous visited page.

It is a programming error to call this function when no previous page is available.

This function is for use when creating pages of the GTK_ASSISTANT_PAGE_CUSTOM type.

#### Parameters

assistant | a GtkAssistant |

Since: 3.0

## Types and Values

### struct GtkAssistant

    struct GtkAssistant {
      GtkWindow  parent;
    };

### struct GtkAssistantClass

    struct GtkAssistantClass {
      GtkWindowClass parent_class;

      void (* prepare) (GtkAssistant *assistant, GtkWidget *page);
      void (* apply)   (GtkAssistant *assistant);
      void (* close)   (GtkAssistant *assistant);
      void (* cancel)  (GtkAssistant *assistant);
    };

#### Members

`prepare` () | Signal emitted when a new page is set as the assistant’s current page, before making the new page visible. |
`apply` () | Signal emitted when the apply button is clicked. |
`close` () | Signal emitted either when the close button or last page apply button is clicked. |
`cancel` () | Signal emitted when the cancel button is clicked. |

### enum GtkAssistantPageType

An enum for determining the page role inside the GtkAssistant. It's used to handle buttons sensitivity and visibility.

Note that an assistant needs to end its page flow with a page of type `GTK_ASSISTANT_PAGE_CONFIRM`, `GTK_ASSISTANT_PAGE_SUMMARY` or `GTK_ASSISTANT_PAGE_PROGRESS` to be correct.

The Cancel button will only be shown if the page isn’t “committed”. See `gtk_assistant_commit()` for details.

#### Members

GTK_ASSISTANT_PAGE_CONTENT | The page has regular contents. Both the Back and forward buttons will be shown. |
GTK_ASSISTANT_PAGE_INTRO | The page contains an introduction to the assistant task. Only the Forward button will be shown if there is a next page. |
GTK_ASSISTANT_PAGE_CONFIRM | The page lets the user confirm or deny the changes. The Back and Apply buttons will be shown. |
GTK_ASSISTANT_PAGE_SUMMARY | The page informs the user of the changes done. Only the Close button will be shown. |
GTK_ASSISTANT_PAGE_PROGRESS | Used for tasks that take a long time to complete, blocks the assistant until the page is marked as complete. Only the back button will be shown. |
GTK_ASSISTANT_PAGE_CUSTOM | Used for when other page types are not appropriate. No buttons will be shown, and the application must add its own buttons through `gtk_assistant_add_action_widget()`. |