Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
notcurses_tabbed(3)					   notcurses_tabbed(3)

NAME
       notcurses_tabbed	- tabbed interface widget

SYNOPSIS
       #include	<notcurses/notcurses.h>

	      #define NCTABBED_OPTION_BOTTOM 0x0001

	      struct nctabbed;
	      struct ncplane;
	      struct nctab;

	      typedef struct nctabbed_options {
		uint64_t selchan; // channel for the selected tab header
		uint64_t hdrchan; // channel for unselected tab	headers
		uint64_t sepchan; // channel for the tab separator
		const char* separator; // separator string (copied by nctabbed_create())
		uint64_t flags;	  // bitmask of	NCTABBED_OPTION_*
	      }	nctabbed_options;

	      typedef void (*tabcb)(struct nctab* t, struct ncplane* ncp, void*	userptr);

       struct	 nctabbed*    nctabbed_create(struct   ncplane*	  ncp,	 const
       nctabbed_options* opts);

       void nctabbed_destroy(struct nctabbed* nt);

       void nctabbed_redraw(struct nctabbed* nt);

       void nctabbed_ensure_selected_header_visible(struct nctabbed* nt);

       struct nctab* nctabbed_selected(struct nctabbed*	nt);

       struct nctab* nctabbed_leftmost(struct nctabbed*	nt);

       int nctabbed_tabcount(struct nctabbed* nt);

       struct ncplane* nctabbed_plane(struct nctabbed* nt);

       struct ncplane* nctabbed_content_plane(struct nctabbed* nt);

       tabcb nctab_cb(struct nctab* t);

       const char* nctab_name(struct nctab* t);

       int nctab_name_width(struct nctab* t);

       void* nctab_userptr(struct nctab* t);

       struct nctab* nctab_next(struct nctab* t);

       struct nctab* nctab_prev(struct nctab* t);

       struct nctab* nctabbed_add(struct nctabbed* nt,	struct	nctab*	after,
       struct nctab* before, tabcb tcb,	const char* name, void*	opaque**);

       int nctabbed_del(struct nctabbed* nt, struct nctab* t);

       int  nctab_move(struct nctabbed*	nt, struct nctab* t, struct nctab* af-
       ter, struct nctab* before);

       void nctab_move_right(struct nctabbed* nt, struct nctab*	t);

       void nctab_move_left(struct nctabbed* nt, struct	nctab* t);

       void nctabbed_rotate(struct nctabbed* nt, int amt);

       struct nctab* nctabbed_next(struct nctabbed* nt);

       struct nctab* nctabbed_prev(struct nctabbed* nt);

       struct nctab* nctabbed_select(struct nctabbed* nt, struct nctab*	t);

       void nctabbed_channels(struct nctabbed* nt, uint64_t* RESTRICT hdrchan,
       uint64_t* RESTRICT selchan, uint64_t* RESTRICT sepchan);

       uint64_t	nctabbed_hdrchan(struct	nctabbed* nt);

       uint64_t	nctabbed_selchan(struct	nctabbed* nt);

       uint64_t	nctabbed_sepchan(struct	nctabbed* nt);

       const char* nctabbed_separator(struct nctabbed* nt);

       int nctabbed_separator_width(struct nctabbed* nt);

       void nctabbed_set_hdrchan(struct	nctabbed* nt, uint64_t chan);

       void nctabbed_set_selchan(struct	nctabbed* nt, uint64_t chan);

       void nctabbed_set_sepchan(struct	nctabbed* nt, uint64_t chan);

       tabcb nctab_set_cb(struct nctab*	t, tabcb newcb);

       int nctab_set_name(struct nctab*	t, const char* newname);

       void* nctab_set_userptr(struct nctab* t,	void* newopaque);

       int nctabbed_set_separator(struct nctabbed* nt, const char* separator);

DESCRIPTION
       An nctabbed is a	widget with one	area for data display and a  bar  with
       names  of  tabs.	 Unless	there are no tabs, exactly one tab is "select-
       ed", and	exactly	one tab	is "leftmost".	The selected tab  is  the  one
       that  controls  the  tab	content	plane.	The leftmost tab is the	one of
       which the header	is visible furthest to the left.  Any tab can be moved
       to and from anywhere in the list.  The tabs can be "rotated", which re-
       ally means the leftmost tab gets	shifted.  The  widget  is  drawn  only
       when nctabbed_redraw or ntabbed_create are called.

   LAYOUT
       The widget has a	tab list either	on the top or the bottom, 1 row	thick.
       The  tab	 list contains tab headers (i.e.  their	names),	separated with
       the separator specified in nctabbed_create  or  nctabbed_set_separator.
       The  channels  for the selected tab's header, other tab headers and the
       separator can be	set independently of each other.   The	tab  separator
       can  be	0-length, or NULL, in which case there is no visible separator
       between tab headers.  The selected tab can be made sure to  be  visible
       when  drawn  (by	 changing  the leftmost	tab) by	calling	the very long-
       named nctabbed_ensure_selected_header_visible.  The rest	of the	widget
       is an ncplane housing the selected tab content.	(if any)

   THE TAB CALLBACK
       The  tab	 callback  (of type tabcb) takes a tab,	the tab	content	plane,
       and the opaque pointer given to nctabbed_add  or	 nctabbed_set_userptr.
       It is called when the tab content is supposed to	be drawn, that is when
       the whole widget	is redrawn.  It	should draw the	tab content and	possi-
       bly  make  other	 actions,  but it should not assume anything about the
       current state of	the tab	content	plane, nor should it modify  the  wid-
       get's or	the tab's state.

RETURN VALUES
       nctabbed_create returns the newly created widget, or NULL when the wid-
       get  failed  to be created.  This destroys the ncplane given to it even
       if it fails.

       nctabbed_selected and nctabbed_leftmost return the selected  and	 left-
       most tabs, respectively.	 If there are no tabs, these return NULL.

       nctab_name  returns  the	tab's name.  This is not a copy, and it	should
       not be stored, since it is freed	when the tab's name is changed or  the
       tab is deleted.

       nctabbed_next,  nctabbed_prev  and nctabbed_select return the newly se-
       lected tab.

       nctabbed_separator returns the tab separator.  This is not a copy,  and
       it  should  not	be  stored,  since  it	is freed when the separator is
       changed or the widget is	deleted.

       Functions returning int return -1 on failure.

SEE ALSO
       notcurses(3), notcurses_channels(3), notcurses_plane(3)

AUTHORS
       v3.0.8.

							   notcurses_tabbed(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=notcurses_tabbed&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help