Notebook

open class Notebook : Widget, NotebookProtocol

GtkNotebook is a container whose children are pages switched between using tabs.

An example GtkNotebook

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

GtkNotebook as GtkBuildable

The GtkNotebook implementation of the GtkBuildable interface supports placing children into tabs by specifying “tab” as the “type” attribute of a <child> 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 <child> type attribute.

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

An example of a UI definition fragment with GtkNotebook:

&lt;object class="GtkNotebook"&gt;
  &lt;child&gt;
    &lt;object class="GtkLabel" id="notebook-content"&gt;
      &lt;property name="label"&gt;Content&lt;/property&gt;
    &lt;/object&gt;
  &lt;/child&gt;
  &lt;child type="tab"&gt;
    &lt;object class="GtkLabel" id="notebook-tab"&gt;
      &lt;property name="label"&gt;Tab&lt;/property&gt;
    &lt;/object&gt;
  &lt;/child&gt;
&lt;/object&gt;

CSS nodes

notebook
├── header.top
   ├── [&lt;action widget&gt;]
   ├── tabs
      ├── [arrow]
      ├── tab
         ╰── &lt;tab label&gt;
      
      ├── tab[.reorderable-page]
         ╰── &lt;tab label&gt;
      ╰── [arrow]
   ╰── [&lt;action widget&gt;]

╰── stack
    ├── &lt;child&gt;
    
    ╰── &lt;child&gt;

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 [methodGtk.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, regardless of text direction.

Accessibility

GtkNotebook uses the following roles:

  • GTK_ACCESSIBLE_ROLE_GROUP for the notebook widget
  • GTK_ACCESSIBLE_ROLE_TAB_LIST for the list of tabs
  • GTK_ACCESSIBLE_ROLE_TAB role for each tab
  • GTK_ACCESSIBLE_ROLE_TAB_PANEL for each page

The Notebook type acts as a reference-counted owner of an underlying GtkNotebook instance. It provides the methods that can operate on this data type through NotebookProtocol conformance. Use Notebook as a strong reference or owner of a GtkNotebook instance.

  • Designated initialiser from the underlying `C` data type.
    

    This creates an instance without performing an unbalanced retain i.e., ownership is transferred to the Notebook instance.

    Declaration

    Swift

    @inlinable
    public init(_ op: UnsafeMutablePointer<GtkNotebook>)

    Parameters

    op

    pointer to the underlying object

  • Designated initialiser from a constant pointer to the underlying C data type. This creates an instance without performing an unbalanced retain i.e., ownership is transferred to the Notebook instance.

    Declaration

    Swift

    @inlinable
    public init(_ op: UnsafePointer<GtkNotebook>)

    Parameters

    op

    pointer to the underlying object

  • Optional initialiser from a non-mutating gpointer to the underlying C data type. This creates an instance without performing an unbalanced retain i.e., ownership is transferred to the Notebook instance.

    Declaration

    Swift

    @inlinable
    override public init!(gpointer op: gpointer?)

    Parameters

    op

    gpointer to the underlying object

  • Optional initialiser from a non-mutating gconstpointer to the underlying C data type. This creates an instance without performing an unbalanced retain i.e., ownership is transferred to the Notebook instance.

    Declaration

    Swift

    @inlinable
    override public init!(gconstpointer op: gconstpointer?)

    Parameters

    op

    pointer to the underlying object

  • Optional initialiser from a constant pointer to the underlying C data type. This creates an instance without performing an unbalanced retain i.e., ownership is transferred to the Notebook instance.

    Declaration

    Swift

    @inlinable
    public init!(_ op: UnsafePointer<GtkNotebook>?)

    Parameters

    op

    pointer to the underlying object

  • Optional initialiser from the underlying C data type. This creates an instance without performing an unbalanced retain i.e., ownership is transferred to the Notebook instance.

    Declaration

    Swift

    @inlinable
    public init!(_ op: UnsafeMutablePointer<GtkNotebook>?)

    Parameters

    op

    pointer to the underlying object

  • Designated initialiser from the underlying C data type. Will retain GtkNotebook. i.e., ownership is transferred to the Notebook instance.

    Declaration

    Swift

    @inlinable
    public init(retaining op: UnsafeMutablePointer<GtkNotebook>)

    Parameters

    op

    pointer to the underlying object

  • Reference intialiser for a related type that implements NotebookProtocol Will retain GtkNotebook.

    Declaration

    Swift

    @inlinable
    public init<T>(notebook other: T) where T : NotebookProtocol

    Parameters

    other

    an instance of a related type that implements NotebookProtocol

  • Unsafe typed initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    override public init<T>(cPointer p: UnsafeMutablePointer<T>)

    Parameters

    cPointer

    pointer to the underlying object

  • Unsafe typed, retaining initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    override public init<T>(retainingCPointer cPointer: UnsafeMutablePointer<T>)

    Parameters

    cPointer

    pointer to the underlying object

  • Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    override public init(raw p: UnsafeRawPointer)

    Parameters

    p

    raw pointer to the underlying object

  • Unsafe untyped, retaining initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    override public init(retainingRaw raw: UnsafeRawPointer)
  • Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    public required init(raw p: UnsafeMutableRawPointer)

    Parameters

    p

    mutable raw pointer to the underlying object

  • Unsafe untyped, retaining initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    required public init(retainingRaw raw: UnsafeMutableRawPointer)

    Parameters

    raw

    mutable raw pointer to the underlying object

  • Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    override public init(opaquePointer p: OpaquePointer)

    Parameters

    p

    opaque pointer to the underlying object

  • Unsafe untyped, retaining initialiser. Do not use unless you know the underlying data type the pointer points to conforms to NotebookProtocol.

    Declaration

    Swift

    @inlinable
    override public init(retainingOpaquePointer p: OpaquePointer)

    Parameters

    p

    opaque pointer to the underlying object

  • Creates a new GtkNotebook widget with no pages.

    Declaration

    Swift

    @inlinable
    public init()