[Contents] [Back] [Prev] [Up] [Next] [Forward]

# Package Gtk.Notebook

A Gtk_Notebook is a container that displays all of its children at the same location on the screen. They are organized into pages, that can be selected through tabs (either by clicking on them or by a contextual menu). This is the best way to organize complicated interfaces that have a lot of widgets, by putting the children into groups of coherent widgets.

- Gtk.Notebook Widget Hierarchy
- Gtk.Notebook Signals
- Gtk.Notebook Types
- Gtk.Notebook Subprograms

## Widget Hierarchy

    Gtk_Object                    (see section Package Gtk.Object)
       \___ Gtk_Widget            (see section Package Gtk.Widget)
          \___ Gtk_Container      (see section Package Gtk.Container)
             \___ Gtk_Notebook    (see section Package Gtk.Notebook)

## Signals

- "switch_page" procedure Handler (Notebook : access Gtk_Notebook_Record'Class;
  Page : in Gtk_Notebook_Page;
  Page_Num : Guint);
  Notify when the current page is modified in the notebook. This is called every time the user selected a new page, or the program selected a new page with Next_Page, Prev_Page, ...

## Types

    subtype Gtk_Notebook_Page is Gtk.Gtk_Notebook_Page;

## Subprograms

### Creating a notebook and inserting pages

    procedure Gtk_New
      (Widget             : out    Gtk_Notebook);

| Create a new empty notebook.

    function Get_Type              return Gtk.Gtk_Type;

| Return the internal value associated with a Gtk_Notebook.

    procedure Append_Page
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Label          : access Gtk.Widget.Gtk_Widget_Record'Class);

| Insert a new page in Notebook. The page is put at the end of the list of pages. The user will select it through a button that contains the Tab_Label widget, which is generally a Gtk_Label, but could be a box with a pixmap in it for instance. No entry is associated with the page in the contextual menu.

    procedure Append_Page_Menu
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Label          : access Gtk.Widget.Gtk_Widget_Record'Class;
       Menu_Label         : access Gtk.Widget.Gtk_Widget_Record'Class);

| Insert a new page in Notebook. The page is put at the end of the list of pages. The user will select it through a button that contains the Tab_Label widget, which is generally a Gtk_Label, but could be a box with a pixmap in it for instance. A new entry is inserted into the contextual menu. This new entry is made with Menu_Label.

    procedure Prepend_Page
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Label          : access Gtk.Widget.Gtk_Widget_Record'Class);

| Insert a new page in Notebook. The page is put at the beginning of the list of pages. The user will select it through a button that contains the Tab_Label widget, which is generally a Gtk_Label, but could be a box with a pixmap in it for instance. No entry is associated with the page in the contextual menu.

    procedure Prepend_Page_Menu
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Label          : access Gtk.Widget.Gtk_Widget_Record'Class;
       Menu_Label         : access Gtk.Widget.Gtk_Widget_Record'Class);

| Insert a new page in Notebook. The page is put at the beginning of the list of pages. The user will select it through a button that contains the Tab_Label widget, which is generally a Gtk_Label, but could be a box with a pixmap in it for instance. A new entry is inserted into the contextual menu. This new entry is made with Menu_Label.

    procedure Insert_Page
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Label          : access Gtk.Widget.Gtk_Widget_Record'Class;
       Position           : in     Gint);

| Insert a new page at a specific position in Notebook. The page is put at the beginning of the list of pages. The user will select it through a button that contains the Tab_Label widget, which is generally a Gtk_Label, but could be a box with a pixmap in it for instance. No entry is associated with the page in the contextual menu. The first position in the list of pages is 0.

    procedure Insert_Page_Menu
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Label          : access Gtk.Widget.Gtk_Widget_Record'Class;
       Menu_Label         : access Gtk.Widget.Gtk_Widget_Record'Class;
       Position           : in     Gint);

Insert a new page at a specific position in Notebook.
The page is put at the beginning of the list of pages. The user will select it through a button that contains the Tab_Label widget, which is generally a Gtk_Label, but could be a box with a pixmap in it for instance. A new entry is inserted into the contextual menu. This new entry is made with Menu_Label. The first position in the list of pages is 0.

    procedure Remove_Page
      (Notebook           : access Gtk_Notebook_Record;
       Page_Num           : in     Gint);

| Remove a page from the notebook. The first position in the list of pages is 0.

    function Get_Child
      (Page               : in     Gtk_Notebook_Page)
       return Gtk.Widget.Gtk_Widget;

| Return the child from a page. A page is automatically created by GtkAda when you inserted a widget in the notebook. The child is the widget you created itself.

### Modifying and getting the current page

    function Get_Current_Page
      (Notebook           : access Gtk_Notebook_Record)
       return Gint;

| Get the number of the current page. The first page has the number 0.

    function Get_Cur_Page
      (Widget             : access Gtk_Notebook_Record'Class)
       return Gtk_Notebook_Page;

| Return the current page.

    function Get_Nth_Page
      (Widget             : access Gtk_Notebook_Record'Class;
       Page_Num           :        Gint)
       return Gtk.Widget.Gtk_Widget;

| Convert from a page number to the real page.

    function Page_Num
      (Widget             : access Gtk_Notebook_Record'Class;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class)
       return Gint;

| Convert from a child to a page number. Note that Child is not the notebook page, but the widget you inserted with Insert_Page, Append_Page,...

    procedure Set_Page
      (Notebook           : access Gtk_Notebook_Record;
       Page_Num           : in     Gint := -1);

| Modify the current page. The current page is the page that is currently visible on the screen. Nothing happens if there is no such page. Note also that the page has to be visible on the screen (ie you must have called Gtk.Widget.Show on it first). Use -1 to set the current page to the last one.

    procedure Next_Page
      (Notebook           : access Gtk_Notebook_Record);

| Display the next page on the screen.

    procedure Prev_Page
      (Notebook           : access Gtk_Notebook_Record);

| Display the previous page on the screen.

### Style and visual aspect

    procedure Set_Show_Border
      (Notebook           : access Gtk_Notebook_Record;
       Show_Border        : in     Boolean := True);

| Indicate whether the notebook should display borders. This border gives a 3D aspect to the notebook.

    procedure Set_Show_Tabs
      (Notebook           : access Gtk_Notebook_Record;
       Show_Tabs          : in     Boolean := True);

| Indicate whether the tabs should be displayed. If the tabs are not displayed, the only way for the user to select a new page is through the contextual menu, and thus you should make sure that the pages were created with the Insert_Page_Menu, ... subprograms.

    procedure Set_Tab_Pos
      (Notebook           : access Gtk_Notebook_Record;
       Pos                : in     Gtk.Enums.Gtk_Position_Type);

| Change the position of the tabs. The tabs can be display on any of the four sides of the notebook.

    function Get_Tab_Pos
      (Widget             : access Gtk_Notebook_Record)
       return Gtk.Enums.Gtk_Position_Type;

| Return the current position of the tabs.

    procedure Set_Homogeneous_Tabs
      (Notebook           : access Gtk_Notebook_Record;
       Homogeneous        : in     Boolean := True);

| Indicate whether all the tabs should have the same size (width or height, depending on which side they are displayed on).

    procedure Set_Tab_Border
      (Notebook           : access Gtk_Notebook_Record;
       Border_Width       : in     Gint);

| Change the width of the tabs' borders. This modifies both the horizontal border and the vertical border.

    procedure Set_Tab_Hborder
      (Notebook           : access Gtk_Notebook_Record;
       Border_Width       : in     Gint);

| Modify the width of the horizontal borders of the tabs.

    procedure Set_Tab_Vborder
      (Notebook           : access Gtk_Notebook_Record;
       Border_Width       : in     Gint);

| Modify the height of the vertical borders of the tabs.

    procedure Set_Scrollable
      (Notebook           : access Gtk_Notebook_Record;
       Scrollable         : in     Boolean := True);

| Indicate whether Notebook display scrolling arrows when there are too many tabs. The default is not to display such scrolling arrows. Note also that a notebook with too many pages, even if the scrolling is activated, is sometimes hard to use for the user.

### Popup Menu

The pages of a notebook can be selected both via tabs and a contextual menu (right mouse button). Note however that the menu is available only if the pages were inserted with Insert_Page_Menu, Append_Page_Menu or Prepend_Page_Menu.

    procedure Popup_Disable
      (Notebook           : access Gtk_Notebook_Record);

| Disable the popup menu. This menu won't be display any more when the user pressed the right mouse button.

    procedure Popup_Enable
      (Notebook           : access Gtk_Notebook_Record);

| Enable the popup menu. When the user pressed the right mouse button, a menu is selected that allows him to select a new page.

### Page properties

    function Get_Allocation_Width
      (Page               :        Gtk_Notebook_Page)
       return Guint;

| Return the current width of the page.

    function Get_Allocation_Height
      (Page               :        Gtk_Notebook_Page)
       return Guint;

| Return the current height of the page.

    function Get_Allocation_X
      (Page               :        Gtk_Notebook_Page)
       return Gint;

| Return the current position of the page, relative to its parent.

    function Get_Allocation_Y
      (Page               :        Gtk_Notebook_Page)
       return Gint;

| Return the current position of the page, relative to its parent.

    function Get_Tab_Label
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class)
       return Gtk.Widget.Gtk_Widget;

| Return the widget displayed in the tab used to select Page. This widget is in fact the one given in argument to Insert_Page,etc. when the page was created.

    function Get_Tab_Label
      (Page               :        Gtk_Notebook_Page)
       return Gtk.Widget.Gtk_Widget;

| Same as the previous function, but this applies on a specific page, which you can get for instance as the result of Get_Cur_Page.

    procedure Set_Tab_Label
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Label          : access Gtk.Widget.Gtk_Widget_Record'Class);

| Modify the widget displayed in the tab for the page that contains Child. Tab_Label is generally a Gtk_Label, although it can also be a Gtk_Box that contains a Gtk_Pixmap and a Gtk_Label if you want to show pixmaps.

    procedure Set_Tab_Label_Text
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Tab_Text           : in     String);

| Modify the text displayed in the tab for the page that contains Child. This is a less general form of Set_Tab_Label above.

    function Get_Menu_Label
      (Page               : in     Gtk_Notebook_Page)
       return Gtk.Widget.Gtk_Widget;

| Return the widget displayed in the contextual menu for the page. This is the widget given in argument to Insert_Page_Menu, Append_Page_Menu and Prepend_Page_Menu

    procedure Set_Menu_Label
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Menu_Label         : access Gtk.Widget.Gtk_Widget_Record'Class);

| Modify the widget displayed in the contextual menu for the page that contains Child.

    procedure Set_Menu_Label_Text
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Menu_Text          : in     String);

| Modify the text displayed in the contextual menu for the page that contains Child. This is a less general form of Set_Menu_Label above.

    procedure Query_Tab_Label_Packing
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Expand             : out    Boolean;
       Fill               : out    Boolean;
       Pack_Type          : out    Gtk.Enums.Gtk_Pack_Type);

| Return the packing used for the tab associated with the page that contains Child. See the Gtk.Box package for more information on the parameters.

    procedure Set_Tab_Label_Packing
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Expand             : in     Boolean;
       Fill               : in     Boolean;
       Pack_Type          : in     Gtk.Enums.Gtk_Pack_Type);

| Modify the packing used for the tab associated with the page that contains Child.

    procedure Reorder_Child
      (Notebook           : access Gtk_Notebook_Record;
       Child              : access Gtk.Widget.Gtk_Widget_Record'Class;
       Position           :        Gint);

| Change the position of the page that contains Child.

### List of pages

    function Get_Children
      (Widget             : access Gtk_Notebook_Record)
       return Page_List.Glist;

| Return the list of all pages in the notebook.

[Contents] [Back] [Prev] [Up] [Next] [Forward]