gi-gtk-4.0.11: Gtk bindings
CopyrightWill Thompson and Iñaki García Etxebarria
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellNone
LanguageHaskell2010

GI.Gtk.Objects.Notebook

Description

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

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

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:

xml code

<object class="GtkNotebook">
  <child>
    <object class="GtkLabel" id="notebook-content">
      <property name="label">Content</property>
    </object>
  </child>
  <child type="tab">
    <object class="GtkLabel" id="notebook-tab">
      <property name="label">Tab</property>
    </object>
  </child>
</object>

Shortcuts and Gestures

GtkNotebook supports the following keyboard shortcuts:

  • <kbd>Shift</kbd>+<kbd>F10</kbd> or <kbd>Menu</kbd> opens the context menu.
  • <kbd>Home</kbd> moves the focus to the first tab.
  • <kbd>End</kbd> moves the focus to the last tab.

Additionally, the following signals have default keybindings:

Tabs support drag-and-drop between notebooks sharing the same group-name, or to new windows by handling the ::create-window signal.

Actions

GtkNotebook defines a set of built-in actions:

  • menu.popup opens the tabs context menu.

CSS nodes

notebook
├── header.top
│   ├── [<action widget>]
│   ├── tabs
│   │   ├── [arrow]
│   │   ├── tab
│   │   │   ╰── <tab label>
┊   ┊   ┊
│   │   ├── tab[.reorderable-page]
│   │   │   ╰── <tab label>
│   │   ╰── [arrow]
│   ╰── [<action widget>]
│
╰── stack
    ├── <child>
    ┊
    ╰── <child>

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 notebookSetShowBorder).

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:

Synopsis

Exported types

newtype Notebook Source #

Memory-managed wrapper type.

Constructors

Notebook (ManagedPtr Notebook) 

Instances

Instances details
Eq Notebook Source # 
Instance details

Defined in GI.Gtk.Objects.Notebook

GObject Notebook Source # 
Instance details

Defined in GI.Gtk.Objects.Notebook

ManagedPtrNewtype Notebook Source # 
Instance details

Defined in GI.Gtk.Objects.Notebook

TypedObject Notebook Source # 
Instance details

Defined in GI.Gtk.Objects.Notebook

Methods

glibType :: IO GType #

HasParentTypes Notebook Source # 
Instance details

Defined in GI.Gtk.Objects.Notebook

IsGValue (Maybe Notebook) Source #

Convert Notebook to and from GValue. See toGValue and fromGValue.

Instance details

Defined in GI.Gtk.Objects.Notebook

type ParentTypes Notebook Source # 
Instance details

Defined in GI.Gtk.Objects.Notebook

class (GObject o, IsDescendantOf Notebook o) => IsNotebook o Source #

Type class for types which can be safely cast to Notebook, for instance with toNotebook.

Instances

Instances details
(GObject o, IsDescendantOf Notebook o) => IsNotebook o Source # 
Instance details

Defined in GI.Gtk.Objects.Notebook

toNotebook :: (MonadIO m, IsNotebook o) => o -> m Notebook Source #

Cast to Notebook, for types for which this is known to be safe. For general casts, use castTo.

Methods

Click to display all available methods, including inherited ones

Expand

Methods

actionSetEnabled, activate, activateAction, activateDefault, addController, addCssClass, addMnemonicLabel, addTickCallback, allocate, announce, appendPage, appendPageMenu, bindProperty, bindPropertyFull, childFocus, computeBounds, computeExpand, computePoint, computeTransform, contains, createPangoContext, createPangoLayout, detachTab, disposeTemplate, dragCheckThreshold, errorBell, forceFloating, freezeNotify, getv, grabFocus, hasCssClass, hasDefault, hasFocus, hasVisibleFocus, hide, inDestruction, initTemplate, insertActionGroup, insertAfter, insertBefore, insertPage, insertPageMenu, isAncestor, isDrawable, isFloating, isFocus, isSensitive, isVisible, keynavFailed, listMnemonicLabels, map, measure, mnemonicActivate, nextPage, notify, notifyByPspec, observeChildren, observeControllers, pageNum, pick, popupDisable, popupEnable, prependPage, prependPageMenu, prevPage, queueAllocate, queueDraw, queueResize, realize, ref, refSink, removeController, removeCssClass, removeMnemonicLabel, removePage, removeTickCallback, reorderChild, resetProperty, resetRelation, resetState, runDispose, shouldLayout, show, sizeAllocate, snapshotChild, stealData, stealQdata, thawNotify, translateCoordinates, triggerTooltipQuery, unmap, unparent, unrealize, unref, unsetStateFlags, updateNextAccessibleSibling, updateProperty, updateRelation, updateState, watchClosure.

Getters

getAccessibleParent, getAccessibleRole, getActionWidget, getAllocatedBaseline, getAllocatedHeight, getAllocatedWidth, getAllocation, getAncestor, getAtContext, getBaseline, getBounds, getBuildableId, getCanFocus, getCanTarget, getChildVisible, getClipboard, getColor, getCssClasses, getCssName, getCurrentPage, getCursor, getData, getDirection, getDisplay, getFirstAccessibleChild, getFirstChild, getFocusChild, getFocusOnClick, getFocusable, getFontMap, getFontOptions, getFrameClock, getGroupName, getHalign, getHasTooltip, getHeight, getHexpand, getHexpandSet, getLastChild, getLayoutManager, getMapped, getMarginBottom, getMarginEnd, getMarginStart, getMarginTop, getMenuLabel, getMenuLabelText, getNPages, getName, getNative, getNextAccessibleSibling, getNextSibling, getNthPage, getOpacity, getOverflow, getPage, getPages, getPangoContext, getParent, getPlatformState, getPreferredSize, getPrevSibling, getPrimaryClipboard, getProperty, getQdata, getRealized, getReceivesDefault, getRequestMode, getRoot, getScaleFactor, getScrollable, getSensitive, getSettings, getShowBorder, getShowTabs, getSize, getSizeRequest, getStateFlags, getStyleContext, getTabDetachable, getTabLabel, getTabLabelText, getTabPos, getTabReorderable, getTemplateChild, getTooltipMarkup, getTooltipText, getValign, getVexpand, getVexpandSet, getVisible, getWidth.

Setters

setAccessibleParent, setActionWidget, setCanFocus, setCanTarget, setChildVisible, setCssClasses, setCurrentPage, setCursor, setCursorFromName, setData, setDataFull, setDirection, setFocusChild, setFocusOnClick, setFocusable, setFontMap, setFontOptions, setGroupName, setHalign, setHasTooltip, setHexpand, setHexpandSet, setLayoutManager, setMarginBottom, setMarginEnd, setMarginStart, setMarginTop, setMenuLabel, setMenuLabelText, setName, setOpacity, setOverflow, setParent, setProperty, setReceivesDefault, setScrollable, setSensitive, setShowBorder, setShowTabs, setSizeRequest, setStateFlags, setTabDetachable, setTabLabel, setTabLabelText, setTabPos, setTabReorderable, setTooltipMarkup, setTooltipText, setValign, setVexpand, setVexpandSet, setVisible.

appendPage

notebookAppendPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c) 
=> a

notebook: a GtkNotebook

-> b

child: the GtkWidget to use as the contents of the page

-> Maybe c

tabLabel: the GtkWidget to be used as the label for the page, or Nothing to use the default label, “page N”

-> m Int32

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

Appends a page to notebook.

appendPageMenu

notebookAppendPageMenu Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c, IsWidget d) 
=> a

notebook: a GtkNotebook

-> b

child: the GtkWidget to use as the contents of the page

-> Maybe c

tabLabel: the GtkWidget to be used as the label for the page, or Nothing to use the default label, “page N”

-> Maybe d

menuLabel: the widget to use as a label for the page-switch menu, if that is enabled. If Nothing, and tabLabel is a GtkLabel or Nothing, then the menu label will be a newly created label with the same text as tabLabel; if tabLabel is not a GtkLabel, menuLabel must be specified if the page-switch menu is to be used.

-> m Int32

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

Appends a page to notebook, specifying the widget to use as the label in the popup menu.

detachTab

notebookDetachTab Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a child

-> m () 

Removes the child from the notebook.

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

getActionWidget

notebookGetActionWidget Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> PackType

packType: pack type of the action widget to receive

-> m (Maybe Widget)

Returns: The action widget with the given packType or Nothing when this action widget has not been set

Gets one of the action widgets.

See notebookSetActionWidget.

getCurrentPage

notebookGetCurrentPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m Int32

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

Returns the page number of the current page.

getGroupName

notebookGetGroupName Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m (Maybe Text)

Returns: the group name, or Nothing if none is set

Gets the current group name for notebook.

getMenuLabel

notebookGetMenuLabel Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a widget contained in a page of notebook

-> m (Maybe Widget)

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

Retrieves the menu label widget of the page containing child.

getMenuLabelText

notebookGetMenuLabelText Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

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

-> m (Maybe Text)

Returns: the text of the tab label, or Nothing 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.

Retrieves the text of the menu label for the page containing child.

getNPages

notebookGetNPages Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m Int32

Returns: the number of pages in the notebook

Gets the number of pages in a notebook.

getNthPage

notebookGetNthPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> Int32

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

-> m (Maybe Widget)

Returns: the child widget, or Nothing if pageNum is out of bounds

Returns the child widget contained in page number pageNum.

getPage

notebookGetPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a child of notebook

-> m NotebookPage

Returns: the GtkNotebookPage for child

Returns the GtkNotebookPage for child.

getPages

notebookGetPages Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m ListModel

Returns: a GListModel for the notebook's children

Returns a GListModel that contains the pages of the notebook.

This can be used to keep an up-to-date view. The model also implements SelectionModel and can be used to track and modify the visible page.

getScrollable

notebookGetScrollable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m Bool

Returns: True if arrows for scrolling are present

Returns whether the tab label area has arrows for scrolling.

getShowBorder

notebookGetShowBorder Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m Bool

Returns: True if the bevel is drawn

Returns whether a bevel will be drawn around the notebook pages.

getShowTabs

notebookGetShowTabs Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m Bool

Returns: True if the tabs are shown

Returns whether the tabs of the notebook are shown.

getTabDetachable

notebookGetTabDetachable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a child GtkWidget

-> m Bool

Returns: True if the tab is detachable.

Returns whether the tab contents can be detached from notebook.

getTabLabel

notebookGetTabLabel Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: the page

-> m (Maybe Widget)

Returns: the tab label

Returns the tab label widget for the page child.

Nothing is returned if child is not in notebook or if no tab label has specifically been set for child.

getTabLabelText

notebookGetTabLabelText Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a widget contained in a page of notebook

-> m (Maybe Text)

Returns: the text of the tab label, or Nothing if the tab label widget is not a GtkLabel. The string is owned by the widget and must not be freed.

Retrieves the text of the tab label for the page containing child.

getTabPos

notebookGetTabPos Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m PositionType

Returns: the edge at which the tabs are drawn

Gets the edge at which the tabs are drawn.

getTabReorderable

notebookGetTabReorderable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a child GtkWidget

-> m Bool

Returns: True if the tab is reorderable.

Gets whether the tab can be reordered via drag and drop or not.

insertPage

notebookInsertPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c) 
=> a

notebook: a GtkNotebook

-> b

child: the GtkWidget to use as the contents of the page

-> Maybe c

tabLabel: the GtkWidget to be used as the label for the page, or Nothing to use the default label, “page N”

-> Int32

position: the index (starting at 0) at which to insert the page, or -1 to append the page after all other pages

-> m Int32

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

Insert a page into notebook at the given position.

insertPageMenu

notebookInsertPageMenu Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c, IsWidget d) 
=> a

notebook: a GtkNotebook

-> b

child: the GtkWidget to use as the contents of the page

-> Maybe c

tabLabel: the GtkWidget to be used as the label for the page, or Nothing to use the default label, “page N”

-> Maybe d

menuLabel: the widget to use as a label for the page-switch menu, if that is enabled. If Nothing, and tabLabel is a GtkLabel or Nothing, then the menu label will be a newly created label with the same text as tabLabel; if tabLabel is not a GtkLabel, menuLabel must be specified if the page-switch menu is to be used.

-> Int32

position: the index (starting at 0) at which to insert the page, or -1 to append the page after all other pages.

-> m Int32

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

Insert a page into notebook at the given position, specifying the widget to use as the label in the popup menu.

new

notebookNew Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> m Notebook

Returns: the newly created GtkNotebook

Creates a new GtkNotebook widget with no pages.

nextPage

notebookNextPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m () 

Switches to the next page.

Nothing happens if the current page is the last page.

pageNum

notebookPageNum Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a GtkWidget

-> m Int32

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

Finds the index of the page which contains the given child widget.

popupDisable

notebookPopupDisable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m () 

Disables the popup menu.

popupEnable

notebookPopupEnable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m () 

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.

prependPage

notebookPrependPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c) 
=> a

notebook: a GtkNotebook

-> b

child: the GtkWidget to use as the contents of the page

-> Maybe c

tabLabel: the GtkWidget to be used as the label for the page, or Nothing to use the default label, “page N”

-> m Int32

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

Prepends a page to notebook.

prependPageMenu

notebookPrependPageMenu Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c, IsWidget d) 
=> a

notebook: a GtkNotebook

-> b

child: the GtkWidget to use as the contents of the page

-> Maybe c

tabLabel: the GtkWidget to be used as the label for the page, or Nothing to use the default label, “page N”

-> Maybe d

menuLabel: the widget to use as a label for the page-switch menu, if that is enabled. If Nothing, and tabLabel is a GtkLabel or Nothing, then the menu label will be a newly created label with the same text as tabLabel; if tabLabel is not a GtkLabel, menuLabel must be specified if the page-switch menu is to be used.

-> m Int32

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

Prepends a page to notebook, specifying the widget to use as the label in the popup menu.

prevPage

notebookPrevPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> m () 

Switches to the previous page.

Nothing happens if the current page is the first page.

removePage

notebookRemovePage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> Int32

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

-> m () 

Removes a page from the notebook given its index in the notebook.

reorderChild

notebookReorderChild Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: the child to move

-> Int32

position: the new position, or -1 to move to the end

-> m () 

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.

setActionWidget

notebookSetActionWidget Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

widget: a GtkWidget

-> PackType

packType: pack type of the action widget

-> m () 

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.

setCurrentPage

notebookSetCurrentPage Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> Int32

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.

-> m () 

Switches to the page number pageNum.

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.

setGroupName

notebookSetGroupName Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> Maybe Text

groupName: the name of the notebook group, or Nothing to unset it

-> m () 

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 Nothing group name will not be able to exchange tabs with any other notebook.

setMenuLabel

notebookSetMenuLabel Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c) 
=> a

notebook: a GtkNotebook

-> b

child: the child widget

-> Maybe c

menuLabel: the menu label, or Nothing for default

-> m () 

Changes the menu label for the page containing child.

setMenuLabelText

notebookSetMenuLabelText Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: the child widget

-> Text

menuText: the label text

-> m () 

Creates a new label and sets it as the menu label of child.

setScrollable

notebookSetScrollable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> Bool

scrollable: True if scroll arrows should be added

-> m () 

Sets whether the tab label area will have arrows for scrolling if there are too many tabs to fit in the area.

setShowBorder

notebookSetShowBorder Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> Bool

showBorder: True if a bevel should be drawn around the notebook

-> m () 

Sets whether a bevel will be drawn around the notebook pages.

This only has a visual effect when the tabs are not shown.

setShowTabs

notebookSetShowTabs Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook

-> Bool

showTabs: True if the tabs should be shown

-> m () 

Sets whether to show the tabs for the notebook or not.

setTabDetachable

notebookSetTabDetachable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a child GtkWidget

-> Bool

detachable: whether the tab is detachable or not

-> m () 

Sets whether the tab can be detached from notebook to another notebook or widget.

Note that two notebooks must share a common group identifier (see notebookSetGroupName) 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 by adding to it a DropTarget controller that accepts the GType GTK_TYPE_NOTEBOOK_PAGE. The :value of said drop target will be preloaded with a NotebookPage object that corresponds to the dropped tab, so you can process the value via ::accept or ::drop signals.

Note that you should use notebookDetachTab instead of notebookRemovePage 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.

c code

static void
on_drag_data_received (GtkWidget        *widget,
                       GdkDrop          *drop,
                       GtkSelectionData *data,
                       guint             time,
                       gpointer          user_data)
{
  GtkDrag *drag;
  GtkWidget *notebook;
  GtkWidget **child;

  drag = gtk_drop_get_drag (drop);
  notebook = g_object_get_data (drag, "gtk-notebook-drag-origin");
  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.

setTabLabel

notebookSetTabLabel Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b, IsWidget c) 
=> a

notebook: a GtkNotebook

-> b

child: the page

-> Maybe c

tabLabel: the tab label widget to use, or Nothing for default tab label

-> m () 

Changes the tab label for child.

If Nothing is specified for tabLabel, then the page will have the label “page N”.

setTabLabelText

notebookSetTabLabelText Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: the page

-> Text

tabText: the label text

-> m () 

Creates a new label and sets it as the tab label for the page containing child.

setTabPos

notebookSetTabPos Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a) 
=> a

notebook: a GtkNotebook.

-> PositionType

pos: the edge to draw the tabs at

-> m () 

Sets the edge at which the tabs are drawn.

setTabReorderable

notebookSetTabReorderable Source #

Arguments

:: (HasCallStack, MonadIO m, IsNotebook a, IsWidget b) 
=> a

notebook: a GtkNotebook

-> b

child: a child GtkWidget

-> Bool

reorderable: whether the tab is reorderable or not

-> m () 

Sets whether the notebook tab can be reordered via drag and drop or not.

Properties

enablePopup

If True, pressing the right mouse button on the notebook shows a page switching menu.

constructNotebookEnablePopup :: (IsNotebook o, MonadIO m) => Bool -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “enable-popup” property. This is rarely needed directly, but it is used by new.

getNotebookEnablePopup :: (MonadIO m, IsNotebook o) => o -> m Bool Source #

Get the value of the “enable-popup” property. When overloading is enabled, this is equivalent to

get notebook #enablePopup

setNotebookEnablePopup :: (MonadIO m, IsNotebook o) => o -> Bool -> m () Source #

Set the value of the “enable-popup” property. When overloading is enabled, this is equivalent to

set notebook [ #enablePopup := value ]

groupName

Group name for tab drag and drop.

clearNotebookGroupName :: (MonadIO m, IsNotebook o) => o -> m () Source #

Set the value of the “group-name” property to Nothing. When overloading is enabled, this is equivalent to

clear #groupName

constructNotebookGroupName :: (IsNotebook o, MonadIO m) => Text -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “group-name” property. This is rarely needed directly, but it is used by new.

getNotebookGroupName :: (MonadIO m, IsNotebook o) => o -> m (Maybe Text) Source #

Get the value of the “group-name” property. When overloading is enabled, this is equivalent to

get notebook #groupName

setNotebookGroupName :: (MonadIO m, IsNotebook o) => o -> Text -> m () Source #

Set the value of the “group-name” property. When overloading is enabled, this is equivalent to

set notebook [ #groupName := value ]

page

The index of the current page.

constructNotebookPage :: (IsNotebook o, MonadIO m) => Int32 -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “page” property. This is rarely needed directly, but it is used by new.

getNotebookPage :: (MonadIO m, IsNotebook o) => o -> m Int32 Source #

Get the value of the “page” property. When overloading is enabled, this is equivalent to

get notebook #page

setNotebookPage :: (MonadIO m, IsNotebook o) => o -> Int32 -> m () Source #

Set the value of the “page” property. When overloading is enabled, this is equivalent to

set notebook [ #page := value ]

pages

A selection model with the pages.

getNotebookPages :: (MonadIO m, IsNotebook o) => o -> m (Maybe ListModel) Source #

Get the value of the “pages” property. When overloading is enabled, this is equivalent to

get notebook #pages

scrollable

If True, scroll arrows are added if there are too many pages to fit.

constructNotebookScrollable :: (IsNotebook o, MonadIO m) => Bool -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “scrollable” property. This is rarely needed directly, but it is used by new.

getNotebookScrollable :: (MonadIO m, IsNotebook o) => o -> m Bool Source #

Get the value of the “scrollable” property. When overloading is enabled, this is equivalent to

get notebook #scrollable

setNotebookScrollable :: (MonadIO m, IsNotebook o) => o -> Bool -> m () Source #

Set the value of the “scrollable” property. When overloading is enabled, this is equivalent to

set notebook [ #scrollable := value ]

showBorder

Whether the border should be shown.

constructNotebookShowBorder :: (IsNotebook o, MonadIO m) => Bool -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “show-border” property. This is rarely needed directly, but it is used by new.

getNotebookShowBorder :: (MonadIO m, IsNotebook o) => o -> m Bool Source #

Get the value of the “show-border” property. When overloading is enabled, this is equivalent to

get notebook #showBorder

setNotebookShowBorder :: (MonadIO m, IsNotebook o) => o -> Bool -> m () Source #

Set the value of the “show-border” property. When overloading is enabled, this is equivalent to

set notebook [ #showBorder := value ]

showTabs

Whether tabs should be shown.

constructNotebookShowTabs :: (IsNotebook o, MonadIO m) => Bool -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “show-tabs” property. This is rarely needed directly, but it is used by new.

getNotebookShowTabs :: (MonadIO m, IsNotebook o) => o -> m Bool Source #

Get the value of the “show-tabs” property. When overloading is enabled, this is equivalent to

get notebook #showTabs

setNotebookShowTabs :: (MonadIO m, IsNotebook o) => o -> Bool -> m () Source #

Set the value of the “show-tabs” property. When overloading is enabled, this is equivalent to

set notebook [ #showTabs := value ]

tabPos

Which side of the notebook holds the tabs.

constructNotebookTabPos :: (IsNotebook o, MonadIO m) => PositionType -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “tab-pos” property. This is rarely needed directly, but it is used by new.

getNotebookTabPos :: (MonadIO m, IsNotebook o) => o -> m PositionType Source #

Get the value of the “tab-pos” property. When overloading is enabled, this is equivalent to

get notebook #tabPos

setNotebookTabPos :: (MonadIO m, IsNotebook o) => o -> PositionType -> m () Source #

Set the value of the “tab-pos” property. When overloading is enabled, this is equivalent to

set notebook [ #tabPos := value ]

Signals

changeCurrentPage

type NotebookChangeCurrentPageCallback Source #

Arguments

 = Int32

page: the page index

-> IO Bool

Returns: whether the page was changed

Emitted when the current page should be changed.

The default bindings for this signal are <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>PgUp</kbd>, <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>PgDn</kbd>, <kbd>Ctrl</kbd>+<kbd>PgUp</kbd> and <kbd>Ctrl</kbd>+<kbd>PgDn</kbd>.

afterNotebookChangeCurrentPage :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookChangeCurrentPageCallback) -> m SignalHandlerId Source #

Connect a signal handler for the changeCurrentPage signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #changeCurrentPage callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookChangeCurrentPage :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookChangeCurrentPageCallback) -> m SignalHandlerId Source #

Connect a signal handler for the changeCurrentPage signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #changeCurrentPage callback

createWindow

type NotebookCreateWindowCallback Source #

Arguments

 = Widget

page: the tab of notebook that is being detached

-> IO (Maybe Notebook)

Returns: a GtkNotebook that page should be added to

The createWindow 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 ).

afterNotebookCreateWindow :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookCreateWindowCallback) -> m SignalHandlerId Source #

Connect a signal handler for the createWindow signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #createWindow callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookCreateWindow :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookCreateWindowCallback) -> m SignalHandlerId Source #

Connect a signal handler for the createWindow signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #createWindow callback

focusTab

type NotebookFocusTabCallback Source #

Arguments

 = NotebookTab

tab: the notebook tab

-> IO Bool

Returns: whether the tab has been focused

Emitted when a tab should be focused.

afterNotebookFocusTab :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookFocusTabCallback) -> m SignalHandlerId Source #

Connect a signal handler for the focusTab signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #focusTab callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookFocusTab :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookFocusTabCallback) -> m SignalHandlerId Source #

Connect a signal handler for the focusTab signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #focusTab callback

moveFocusOut

type NotebookMoveFocusOutCallback Source #

Arguments

 = DirectionType

direction: the direction to move the focus

-> IO () 

Emitted when focus was moved out.

The default bindings for this signal are <kbd>Ctrl</kbd>+<kbd>Tab</kbd>, <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Tab</kbd>, <kbd>Ctrl</kbd>+<kbd>←</kbd>, <kbd>Ctrl</kbd>+<kbd>→</kbd>, <kbd>Ctrl</kbd>+<kbd>↑</kbd> and <kbd>Ctrl</kbd>+<kbd>↓</kbd>.

afterNotebookMoveFocusOut :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookMoveFocusOutCallback) -> m SignalHandlerId Source #

Connect a signal handler for the moveFocusOut signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #moveFocusOut callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookMoveFocusOut :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookMoveFocusOutCallback) -> m SignalHandlerId Source #

Connect a signal handler for the moveFocusOut signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #moveFocusOut callback

pageAdded

type NotebookPageAddedCallback Source #

Arguments

 = Widget

child: the child GtkWidget affected

-> Word32

pageNum: the new page number for child

-> IO () 

the pageAdded signal is emitted in the notebook right after a page is added to the notebook.

afterNotebookPageAdded :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookPageAddedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the pageAdded signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #pageAdded callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookPageAdded :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookPageAddedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the pageAdded signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #pageAdded callback

pageRemoved

type NotebookPageRemovedCallback Source #

Arguments

 = Widget

child: the child GtkWidget affected

-> Word32

pageNum: the child page number

-> IO () 

the pageRemoved signal is emitted in the notebook right after a page is removed from the notebook.

afterNotebookPageRemoved :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookPageRemovedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the pageRemoved signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #pageRemoved callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookPageRemoved :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookPageRemovedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the pageRemoved signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #pageRemoved callback

pageReordered

type NotebookPageReorderedCallback Source #

Arguments

 = Widget

child: the child GtkWidget affected

-> Word32

pageNum: the new page number for child

-> IO () 

the pageReordered signal is emitted in the notebook right after a page has been reordered.

afterNotebookPageReordered :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookPageReorderedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the pageReordered signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #pageReordered callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookPageReordered :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookPageReorderedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the pageReordered signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #pageReordered callback

reorderTab

type NotebookReorderTabCallback Source #

Arguments

 = DirectionType

direction: the direction to move the tab

-> Bool

moveToLast: whether to move to the last position

-> IO Bool

Returns: whether the tab was moved.

Emitted when the tab should be reordered.

The default bindings for this signal are <kbd>Alt</kbd>+<kbd>Home</kbd>, <kbd>Alt</kbd>+<kbd>End</kbd>, <kbd>Alt</kbd>+<kbd>PgUp</kbd>, <kbd>Alt</kbd>+<kbd>PgDn</kbd>, <kbd>Alt</kbd>+<kbd>←</kbd>, <kbd>Alt</kbd>+<kbd>→</kbd>, <kbd>Alt</kbd>+<kbd>↑</kbd> and <kbd>Alt</kbd>+<kbd>↓</kbd>.

afterNotebookReorderTab :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookReorderTabCallback) -> m SignalHandlerId Source #

Connect a signal handler for the reorderTab signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #reorderTab callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookReorderTab :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookReorderTabCallback) -> m SignalHandlerId Source #

Connect a signal handler for the reorderTab signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #reorderTab callback

selectPage

type NotebookSelectPageCallback Source #

Arguments

 = Bool

moveFocus: whether to move focus

-> IO Bool

Returns: whether the page was selected

Emitted when a page should be selected.

The default binding for this signal is <kbd>␣</kbd>.

afterNotebookSelectPage :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookSelectPageCallback) -> m SignalHandlerId Source #

Connect a signal handler for the selectPage signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #selectPage callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookSelectPage :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookSelectPageCallback) -> m SignalHandlerId Source #

Connect a signal handler for the selectPage signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #selectPage callback

switchPage

type NotebookSwitchPageCallback Source #

Arguments

 = Widget

page: the new current page

-> Word32

pageNum: the index of the page

-> IO () 

Emitted when the user or a function changes the current page.

afterNotebookSwitchPage :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookSwitchPageCallback) -> m SignalHandlerId Source #

Connect a signal handler for the switchPage signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after notebook #switchPage callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit ?self parameter. Note that this requires activating the ImplicitParams GHC extension.

onNotebookSwitchPage :: (IsNotebook a, MonadIO m) => a -> ((?self :: a) => NotebookSwitchPageCallback) -> m SignalHandlerId Source #

Connect a signal handler for the switchPage signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on notebook #switchPage callback