AG_Notebook — agar
    notebook container widget
#include <agar/core.h>
#include <agar/gui.h>
 
The AG_Notebook widget maintains a set of
    AG_Box(3)
    containers, only one of which is visible at any given time. The user can
    select the visible container by clicking on a tab, or it can be selected
    programmatically.
AG_Notebook *
  
  AG_NotebookNew(AG_Widget
    *parent, Uint
    flags);
  
  void
  
  AG_NotebookSetPadding(AG_Notebook
    *nb, int
  padding);
  
  void
  
  AG_NotebookSetSpacing(AG_Notebook
    *nb, int
  spacing);
  
  void
  
  AG_NotebookSetTabAlignment(AG_Notebook
    *nb, enum
    ag_notebook_tab_alignment alignment);
  
  void
  
  AG_NotebookSetTabVisibility(AG_Notebook
    *nb, int flag);
The
    AG_NotebookNew()
    function allocates, initializes, and attaches a new
    AG_Notebook widget. Acceptable
    flags include:
  - AG_NOTEBOOK_HIDE_TABS
- Don't display the tab selector controls.
- AG_NOTEBOOK_HFILL
- Expand horizontally in parent container.
- AG_NOTEBOOK_VFILL
- Expand vertically in parent container.
- AG_NOTEBOOK_EXPAND
- Shorthand for AG_NOTEBOOK_HFILL|AG_NOTEBOOK_VFILL.
AG_NotebookSetPadding()
    and AG_NotebookSetSpacing() sets the default
    AG_Box(3)
    padding and spacing to use for new tabs.
By default, tabs are drawn at
    the top of the widget.
    AG_NotebookSetTabAlignment()
    changes the location of the tabs, where the argument is one of:
enum ag_notebook_tab_alignment {
	AG_NOTEBOOK_TABS_TOP,
	AG_NOTEBOOK_TABS_BOTTOM,
	AG_NOTEBOOK_TABS_LEFT,
	AG_NOTEBOOK_TABS_RIGHT
};
 
AG_NotebookSetTabVisibility()
    toggles the visibility of the tab header.
AG_NotebookTab *
  
  AG_NotebookAdd(AG_Notebook
    *nb, const char
    *name, enum ag_box_type
    type);
  
  void
  
  AG_NotebookDel(AG_Notebook
    *nb, AG_NotebookTab
    *tab);
  
  AG_NotebookTab *
  
  AG_NotebookGetByID(AG_Notebook
    *nb, int
  tabID);
  
  AG_NotebookTab *
  
  AG_NotebookGetByName(AG_Notebook
    *nb, const char
    *text);
  
  void
  
  AG_NotebookSelect(AG_Notebook
    *nb, AG_NotebookTab
    *tab);
  
  void
  
  AG_NotebookSelectByID(AG_Notebook
    *nb, int id);
AG_NotebookAdd()
    creates a new tabbed container. name is an arbitrary
    text label to be displayed on the tab header. The type
    argument sets the type of
    AG_Box(3),
    that is either for AG_BOX_HORIZ horizontal packing,
    or AG_BOX_VERT for vertical packing (see
    AG_Box(3)
    for details). AG_NotebookAdd() returns a pointer to
    the newly created AG_NotebookTab container widget (a
    subclass of
    AG_Box(3)).
AG_NotebookDel()
    removes the given tabbed container, detaching and freeing all associated
    child widgets.
AG_NotebookGetByID()
    returns the tab with given numerical ID (or NULL).
AG_NotebookGetByName()
    looks up a tab based on the contents of its text label and returns a pointer
    to the tab (or NULL).
The
    AG_NotebookSelect()
    function selects the active tabbed container.
AG_NotebookSelectByID()
    selects the container by numerical ID.
The AG_Notebook widget does not generate
    any event.
For the AG_Notebook object:
  - TAILQ tabs
- The list of tabs as AG_NotebookTab objects.
- Uint nTabs
- Total number of tabs.
- AG_NotebookTab *selTab
- Pointer to the currently selected tab.
- int selTabID
- Numerical ID of currently selected tab.
For the AG_NotebookTab object:
  - AG_Label *lbl
- Pointer to the
      AG_Label(3)
      of the tab (or NULL).
- int id
- The numerical ID associated with the tab.
The following code fragment creates a notebook with two tabs:
AG_Notebook *nb;
AG_Notebook *ntab;
nb = AG_NotebookNew(parent, AG_NOTEBOOK_EXPAND);
{
	ntab = AG_NotebookAdd(nb, "Tab #1", AG_BOX_VERT);
	AG_LabelNew(ntab, 0, "This is Tab #1");
	ntab = AG_NotebookAdd(nb, "Tab #2", AG_BOX_VERT);
	AG_LabelNew(ntab, 0, "This is Tab #2");
}
 
The AG_Notebook widget first appeared in
    Agar 1.0. AG_NotebookGetByID() and
    AG_NotebookSelectByID() appeared in Agar 1.6.0.