gtk.Notebook



class Notebook : gtk.Container.Container;
The #GtkNotebook widget is a #GtkContainer whose children are pages that can be switched between using tab labels along one edge.

There are many configuration options for GtkNotebook. Among other things, you can choose on which edge the tabs appear (see gtk_notebook_set_tab_pos()), whether, if there are too many tabs to fit the notebook should be made bigger or scrolling arrows added (see gtk_notebook_set_scrollable()), and whether there will be a popup menu allowing the users to switch pages. (see gtk_notebook_popup_enable(), gtk_notebook_popup_disable())

# GtkNotebook as GtkBuildable

The GtkNotebook implementation of the #GtkBuildable interface supports placing children into tabs by specifying “tab” as the “type” attribute of a element. Note that the content of the tab must be created before the tab can be filled. A tab child can be specified without specifying a type attribute.

To add a child widget in the notebooks action area, specify "action-start" or “action-end” as the “type” attribute of the element.

An example of a UI definition fragment with GtkNotebook: |[ Content Tab ]|

# CSS nodes

|[ notebook ├── header.top │ ├── [] │ ├── tabs │ │ ├── [arrow] │ │ ├── tab │ │ │ ╰── ┊ ┊ ┊ │ │ ├── tab[.reorderable-page] │ │ │ ╰── │ │ ╰── [arrow] │ ╰── [] │ ╰── stack ├── ┊ ╰── ]|

GtkNotebook has a main CSS node with name notebook, a subnode with name header and below that a subnode with name tabs which contains one subnode per tab with name tab.

If action widgets are present, their CSS nodes are placed next to the tabs node. If the notebook is scrollable, CSS nodes with name arrow are placed as first and last child of the tabs node.

The main node gets the .frame style class when the notebook has a border (see gtk_notebook_set_show_border()).

The header node gets one of the style class .top, .bottom, .left or .right, depending on where the tabs are placed. For reorderable pages, the tab node gets the .reorderable-page class.

A tab node gets the .dnd style class while it is moved with drag-and-drop.

The nodes are always arranged from left-to-right, regarldess of text direction.

protected GtkNotebook* gtkNotebook ;
the main Gtk struct

GtkNotebook* getNotebookStruct ();
Get the main Gtk struct

protected void* getStruct ();
the main Gtk struct as a void*

this(GtkNotebook* gtkNotebook, bool ownedRef = false);
Sets our main struct and passes it to the parent class.

int appendPage (Widget child, string tabLabel);
Append a page with a widget and a text for a label

void setCurrentPage (Widget child);


static GType getType ();


this();
Creates a new #GtkNotebook widget with no pages.

Return:
the newly created #GtkNotebook

Throws:
ConstructionException GTK+ fails to create the object.

int appendPage (Widget child, Widget tabLabel);
Appends a page to @notebook.

Params:
Widget child the #GtkWidget to use as the contents of the page
Widget tabLabel the #GtkWidget to be used as the label for the page, or %NULL to use the default label, “page N”

Return:
the index (starting from 0) of the appended page in the notebook, or -1 if function fails

int appendPageMenu (Widget child, Widget tabLabel, Widget menuLabel);
Appends a page to @notebook, specifying the widget to use as the label in the popup menu.

Params:
Widget child the #GtkWidget to use as the contents of the page
Widget tabLabel the #GtkWidget to be used as the label for the page, or %NULL to use the default label, “page N”
Widget menuLabel the widget to use as a label for the page-switch menu, if that is enabled. If %NULL, and @tab_label is a #GtkLabel or %NULL, then the menu label will be a newly created label with the same text as @tab_label; if @tab_label is not a #GtkLabel, @menu_label must be specified if the page-switch menu is to be used.

Return:
the index (starting from 0) of the appended page in the notebook, or -1 if function fails

void detachTab (Widget child);
Removes the child from the notebook.

This function is very similar to gtk_container_remove(), but additionally informs the notebook that the removal is happening as part of a tab DND operation, which should not be cancelled.

Params:
Widget child a child

Since:
3.16

Widget getActionWidget (GtkPackType packType);
Gets one of the action widgets. See gtk_notebook_set_action_widget().

Params:
GtkPackType packType pack type of the action widget to receive

Return:
The action widget with the given @pack_type or %NULL when this action widget has not been set

Since:
2.20

int getCurrentPage ();
Returns the page number of the current page.

Return:
the index (starting from 0) of the current page in the notebook. If the notebook has no pages, then -1 will be returned.

string getGroupName ();
Gets the current group name for @notebook.

Return:
the group name, or %NULL if none is set

Since:
2.24

Widget getMenuLabel (Widget child);
Retrieves the menu label widget of the page containing @child.

Params:
Widget child a widget contained in a page of @notebook

Return:
the menu label, or %NULL if the notebook page does not have a menu label other than the default (the tab label).

string getMenuLabelText (Widget child);
Retrieves the text of the menu label for the page containing @child.

Params:
Widget child the child widget of a page of the notebook.

Return:
the text of the tab label, or %NULL if the widget does not have a menu label other than the default menu label, or the menu label widget is not a #GtkLabel. The string is owned by the widget and must not be freed.

int getNPages ();
Gets the number of pages in a notebook.

Return:
the number of pages in the notebook

Since:
2.2

Widget getNthPage (int pageNum);
Returns the child widget contained in page number @page_num.

Params:
int pageNum the index of a page in the notebook, or -1 to get the last page

Return:
the child widget, or %NULL if @page_num is out of bounds

bool getScrollable ();
Returns whether the tab label area has arrows for scrolling. See gtk_notebook_set_scrollable().

Return:
%TRUE if arrows for scrolling are present

bool getShowBorder ();
Returns whether a bevel will be drawn around the notebook pages. See gtk_notebook_set_show_border().

Return:
%TRUE if the bevel is drawn

bool getShowTabs ();
Returns whether the tabs of the notebook are shown. See gtk_notebook_set_show_tabs().

Return:
%TRUE if the tabs are shown

bool getTabDetachable (Widget child);
Returns whether the tab contents can be detached from @notebook.

Params:
Widget child a child #GtkWidget

Return:
%TRUE if the tab is detachable.

Since:
2.10

ushort getTabHborder ();
Returns the horizontal width of a tab border.

Deprecated:
this function returns zero

Return:
horizontal width of a tab border

Since:
2.22

Widget getTabLabel (Widget child);
Returns the tab label widget for the page @child. %NULL is returned if @child is not in @notebook or if no tab label has specifically been set for @child.

Params:
Widget child the page

Return:
the tab label

string getTabLabelText (Widget child);
Retrieves the text of the tab label for the page containing @child.

Params:
Widget child a widget contained in a page of @notebook

Return:
the text of the tab label, or %NULL if the tab label widget is not a #GtkLabel. The string is owned by the widget and must not be freed.

GtkPositionType getTabPos ();
Gets the edge at which the tabs for switching pages in the notebook are drawn.

Return:
the edge at which the tabs are drawn

bool getTabReorderable (Widget child);
Gets whether the tab can be reordered via drag and drop or not.

Params:
Widget child a child #GtkWidget

Return:
%TRUE if the tab is reorderable.

Since:
2.10

ushort getTabVborder ();
Returns the vertical width of a tab border.

Deprecated:
this function returns zero

Return:
vertical width of a tab border

Since:
2.22

int insertPage (Widget child, Widget tabLabel, int position);
Insert a page into @notebook at the given position.

Params:
Widget child the #GtkWidget to use as the contents of the page
Widget tabLabel the #GtkWidget to be used as the label for the page, or %NULL to use the default label, “page N”
int position the index (starting at 0) at which to insert the page, or -1 to append the page after all other pages

Return:
the index (starting from 0) of the inserted page in the notebook, or -1 if function fails

int insertPageMenu (Widget child, Widget tabLabel, Widget menuLabel, int position);
Insert a page into @notebook at the given position, specifying the widget to use as the label in the popup menu.

Params:
Widget child the #GtkWidget to use as the contents of the page
Widget tabLabel the #GtkWidget to be used as the label for the page, or %NULL to use the default label, “page N”
Widget menuLabel the widget to use as a label for the page-switch menu, if that is enabled. If %NULL, and @tab_label is a #GtkLabel or %NULL, then the menu label will be a newly created label with the same text as @tab_label; if @tab_label is not a #GtkLabel, @menu_label must be specified if the page-switch menu is to be used.
int position the index (starting at 0) at which to insert the page, or -1 to append the page after all other pages.

Return:
the index (starting from 0) of the inserted page in the notebook

void nextPage ();
Switches to the next page. Nothing happens if the current page is the last page.

int pageNum (Widget child);
Finds the index of the page which contains the given child widget.

Params:
Widget child a #GtkWidget

Return:
the index of the page containing @child, or -1 if @child is not in the notebook

void popupDisable ();
Disables the popup menu.

void popupEnable ();
Enables the popup menu: if the user clicks with the right mouse button on the tab labels, a menu with all the pages will be popped up.

int prependPage (Widget child, Widget tabLabel);
Prepends a page to @notebook.

Params:
Widget child the #GtkWidget to use as the contents of the page
Widget tabLabel the #GtkWidget to be used as the label for the page, or %NULL to use the default label, “page N”

Return:
the index (starting from 0) of the prepended page in the notebook, or -1 if function fails

int prependPageMenu (Widget child, Widget tabLabel, Widget menuLabel);
Prepends a page to @notebook, specifying the widget to use as the label in the popup menu.

Params:
Widget child the #GtkWidget to use as the contents of the page
Widget tabLabel the #GtkWidget to be used as the label for the page, or %NULL to use the default label, “page N”
Widget menuLabel the widget to use as a label for the page-switch menu, if that is enabled. If %NULL, and @tab_label is a #GtkLabel or %NULL, then the menu label will be a newly created label with the same text as @tab_label; if @tab_label is not a #GtkLabel, @menu_label must be specified if the page-switch menu is to be used.

Return:
the index (starting from 0) of the prepended page in the notebook, or -1 if function fails

void prevPage ();
Switches to the previous page. Nothing happens if the current page is the first page.

void removePage (int pageNum);
Removes a page from the notebook given its index in the notebook.

Params:
int pageNum the index of a notebook page, starting from 0. If -1, the last page will be removed.

void reorderChild (Widget child, int position);
Reorders the page containing @child, so that it appears in position @position. If @position is greater than or equal to the number of children in the list or negative, @child will be moved to the end of the list.

Params:
Widget child the child to move
int position the new position, or -1 to move to the end

void setActionWidget (Widget widget, GtkPackType packType);
Sets @widget as one of the action widgets. Depending on the pack type the widget will be placed before or after the tabs. You can use a #GtkBox if you need to pack more than one widget on the same side.

Note that action widgets are “internal” children of the notebook and thus not included in the list returned from gtk_container_foreach().

Params:
Widget widget a #GtkWidget
GtkPackType packType pack type of the action widget

Since:
2.20

void setCurrentPage (int pageNum);
Switches to the page number @page_num.

Note that due to historical reasons, GtkNotebook refuses to switch to a page unless the child widget is visible. Therefore, it is recommended to show child widgets before adding them to a notebook.

Params:
int pageNum 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 notebook, nothing will be done.

void setGroupName (string groupName);
Sets a group name for @notebook.

Notebooks with the same name will be able to exchange tabs via drag and drop. A notebook with a %NULL group name will not be able to exchange tabs with any other notebook.

Params:
string groupName the name of the notebook group, or %NULL to unset it

Since:
2.24

void setMenuLabel (Widget child, Widget menuLabel);
Changes the menu label for the page containing @child.

Params:
Widget child the child widget
Widget menuLabel the menu label, or %NULL for default

void setMenuLabelText (Widget child, string menuText);
Creates a new label and sets it as the menu label of @child.

Params:
Widget child the child widget
string menuText the label text

void setScrollable (bool scrollable);
Sets whether the tab label area will have arrows for scrolling if there are too many tabs to fit in the area.

Params:
bool scrollable %TRUE if scroll arrows should be added

void setShowBorder (bool showBorder);
Sets whether a bevel will be drawn around the notebook pages. This only has a visual effect when the tabs are not shown. See gtk_notebook_set_show_tabs().

Params:
bool showBorder %TRUE if a bevel should be drawn around the notebook

void setShowTabs (bool showTabs);
Sets whether to show the tabs for the notebook or not.

Params:
bool showTabs %TRUE if the tabs should be shown

void setTabDetachable (Widget child, bool detachable);
Sets whether the tab can be detached from @notebook to another notebook or widget.

Note that 2 notebooks must share a common group identificator (see gtk_notebook_set_group_name()) to allow automatic tabs interchange between them.

If you want a widget to interact with a notebook through DnD (i.e.: accept dragged tabs from it) it must be set as a drop destination and accept the target “GTK_NOTEBOOK_TAB”. The notebook will fill the selection with a GtkWidget** pointing to the child widget that corresponds to the dropped tab.

Note that you should use gtk_notebook_detach_tab() instead of gtk_container_remove() if you want to remove the tab from the source notebook as part of accepting a drop. Otherwise, the source notebook will think that the dragged tab was removed from underneath the ongoing drag operation, and will initiate a drag cancel animation.

|[ static void on_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *data, guint info, guint time, gpointer user_data) { GtkWidget *notebook; GtkWidget **child;

notebook = gtk_drag_get_source_widget (context); child = (void*) gtk_selection_data_get_data (data);

process_widget (*child); gtk_notebook_detach_tab (GTK_NOTEBOOK (notebook), *child); } ]|

If you want a notebook to accept drags from other widgets, you will have to set your own DnD code to do it.

Params:
Widget child a child #GtkWidget
bool detachable whether the tab is detachable or not

Since:
2.10

void setTabLabel (Widget child, Widget tabLabel);
Changes the tab label for @child. If %NULL is specified for @tab_label, then the page will have the label “page N”.

Params:
Widget child the page
Widget tabLabel the tab label widget to use, or %NULL for default tab label

void setTabLabelText (Widget child, string tabText);
Creates a new label and sets it as the tab label for the page containing @child.

Params:
Widget child the page
string tabText the label text

void setTabPos (GtkPositionType pos);
Sets the edge at which the tabs for switching pages in the notebook are drawn.

Params:
GtkPositionType pos the edge to draw the tabs at

void setTabReorderable (Widget child, bool reorderable);
Sets whether the notebook tab can be reordered via drag and drop or not.

Params:
Widget child a child #GtkWidget
bool reorderable whether the tab is reorderable or not

Since:
2.10

gulong addOnChangeCurrentPage (bool delegate(int, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);


gulong addOnCreateWindow (Notebook delegate(Widget, int, int, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);
The ::create-window signal is emitted when a detachable tab is dropped on the root window.

A handler for this signal can create a window containing a notebook where the tab will be attached. It is also responsible for moving/resizing the window and adding the necessary properties to the notebook (e.g. the #GtkNotebook:group-name ).

Params:
page the tab of @notebook that is being detached
x the X coordinate where the drop happens
y the Y coordinate where the drop happens

Return:
a #GtkNotebook that @page should be added to, or %NULL.

Since:
2.12

gulong addOnFocusTab (bool delegate(GtkNotebookTab, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);


gulong addOnMoveFocusOut (void delegate(GtkDirectionType, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);


gulong addOnPageAdded (void delegate(Widget, uint, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);
the ::page-added signal is emitted in the notebook right after a page is added to the notebook.

Params:
child the child #GtkWidget affected
pageNum the new page number for @child

Since:
2.10

gulong addOnPageRemoved (void delegate(Widget, uint, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);
the ::page-removed signal is emitted in the notebook right after a page is removed from the notebook.

Params:
child the child #GtkWidget affected
pageNum the @child page number

Since:
2.10

gulong addOnPageReordered (void delegate(Widget, uint, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);
the ::page-reordered signal is emitted in the notebook right after a page has been reordered.

Params:
child the child #GtkWidget affected
pageNum the new page number for @child

Since:
2.10

gulong addOnReorderTab (bool delegate(GtkDirectionType, bool, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);


gulong addOnSelectPage (bool delegate(bool, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);


gulong addOnSwitchPage (void delegate(Widget, uint, Notebook) dlg, ConnectFlags connectFlags = cast(ConnectFlags)0);
Emitted when the user or a function changes the current page.

Params:
page the new current page
pageNum the index of the page

Page was generated with on Fri Jan 6 23:09:20 2017