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

  
 
  

home | help
TICKIT(7)		Miscellaneous Information Manual	       TICKIT(7)

NAME
     tickit - Terminal Interface Construction KIT

SYNOPSIS
     #include <tickit.h>

     typedef struct Tickit;

DESCRIPTION
     tickit  is a library for building full-screen interactive programs that use
     a terminal interface. A program using this library would start by	creating
     a	toplevel Tickit instance, from which one or more divisions of the termi-
     nal area, called "windows" are created. These form a heirarchial tree  that
     subdivides the content area into independent regions that can be managed by
     different	parts  of  the program structure. Each window can react to input
     events such as keyboard or mouse interaction.

     As well as creating the initial root window, the toplevel	Tickit	instance
     also  performs a few other jobs for the containing program. It can act as a
     containing event loop for the program,  performing  IO  multiplexing  tasks
     both for tickit's own needs and the needs of the program as a whole.

FUNCTIONS
     A	 new   toplevel   instance   is   created   by	 using	tickit_build(3),
     tickit_new_stdio(3) or tickit_new_stdtty(3). A toplevel instance  stores  a
     reference	count to make it easier for applications to manage its lifetime.
     A new toplevel instance starts with a count of one, and it can be	adjusted
     using  tickit_ref(3)  and	tickit_unref(3). When the count reaches zero the
     instance is destroyed.

     The toplevel instance manages a tree of TickitWindow instances. The root of
     this tree is obtained by tickit_get_rootwin(3) and thereafter  can  be  di-
     vided  further  by  other	functions  on  the  window,  described	more  in
     tickit_window(7).

     The TickitTerm instance behind the toplevel instance  can	be  obtained  by
     tickit_get_term(3), and is described more in tickit_term(7).

     Event  handling callback functions can be installed to be called at a later
     time,  by	 using	 tickit_watch_io(3),   tickit_watch_timer_after_msec(3),
     tickit_watch_timer_after_tv(3),   tickit_watch_later(3),  tickit_watch_sig-
     nal(3) or tickit_watch_process(3). The main IO event loop is controlled us-
     ing tickit_run(3) and tickit_stop(3).

     The compile-time and run-time version of the library can be inspected using
     the macros and functions described in tickit_version(7).

TYPICAL STRUCTURE
     A typical program using this library would start by creating  the	toplevel
     instance,	by  calling tickit_new_stdtty(3), then obtain its root window on
     it by calling tickit_get_rootwin(3). This root window can then  be  sub-di-
     vided  into  regions of interest by calling tickit_window_new(3) to build a
     tree of windows. Window can then have some event handlers attached by call-
     ing tickit_window_bind_event(3) - each  window  will  need  to  handle  the
     TICKIT_WINDOW_ON_EXPOSE  event,  but  might also wish to handle other kinds
     like geometry change for dynamic resizing, or keyboard or mouse to react to
     user input. Finally, once the initial window tree is created,  the  program
     would enter the main event loop by invoking tickit_run(3).

COMMON TYPES
     The  flags argument to the various tickit_..._bind_event() functions should
     be zero, or a bitmask of the following constants.

     typedef enum {
       TICKIT_BIND_FIRST,
       TICKIT_BIND_UNBIND,
       TICKIT_BIND_DESTROY,
       TICKIT_BIND_ONESHOT,
     } TickitBindFlags;

     TICKIT_BIND_FIRST indicates that this handler should  be  inserted  at  the
     start of the list, rather than the default position at the end.

     TICKIT_BIND_UNBIND  indicates  that  this handler should also be invoked at
     the time it is unbound, either due to a specific call to the tickit_..._un-
     bind_event() function, or because the bound object is being destroyed.

     TICKIT_BIND_DESTROY indicates that this handler should also be  invoked  at
     the time that the bound object is being destroyed.

     TICKIT_BIND_ONESHOT  indicates  that  the	handler should be invoke at-most
     once, and unbound the first time it is invoked. When invoked  it  will  re-
     ceive both the TICKIT_EV_FIRE and TICKIT_EV_UNBIND flags at once.

     Some  API	functions take or return the following enum type, to represent a
     tri-state extended boolean concept of true, false, or some third  condition
     typically indicating a "don't care" or "unknown" state; the exact semantics
     will vary between specific uses and should be documented specifically.

     typedef enum {
       TICKIT_YES = 1,
       TICKIT_NO = 0,
       TICKIT_MAYBE = -1,
     } TickitMaybeBool;

     The  various tickit_*ctl_type() and tickit_pen_attrtype(3) functions return
     the following enum type, to indicate what type  of  value	each  individual
     control or attribute takes.

     typedef enum {
       TICKIT_TYPE_NONE,
       TICKIT_TYPE_BOOL,
       TICKIT_TYPE_INT,
       TICKIT_TYPE_COLOUR,
     } TickitType;

COMMON EVENTS
     Every  object  instance that supports events supports the following type of
     event, in addition to the specific ones listed for that kind of object:

     TICKIT_..._ON_DESTROY
	    Invoked when the object instance is being destroyed.  This	will  be
	    the  last  time the application can use the stored data argument; it
	    may perform any resource reclaiming operations that are required  at
	    this time.

EVENT FLAGS
     When  an event handler function is invoked, it is passed a bitmask of flags
     to indicate the reason for its invocation.

     typedef enum {
       TICKIT_EV_FIRE,
       TICKIT_EV_UNBIND,
       TICKIT_EV_DESTROY,
     } TickitEventFlags;

     TICKIT_EV_FIRE
	    This handler is being invoked because its associated event	has  oc-
	    curred.  The  info	pointer will point to a structure containing the
	    relevant information.

     TICKIT_EV_UNBIND
	    This handler is being invoked because it is being removed  from  the
	    object.  This  will  only  be  observed  if  it  was  bound with the
	    TICKIT_BIND_UNBIND flag. The info pointer will be NULL.

     TICKIT_EV_DESTROY
	    This handler is being invoked because the object instance itself  is
	    being  destroyed.  This  will  be  observed if it was bound with the
	    TICKIT_BIND_DESTROY  flag,	or  because   it   is	bound	to   the
	    TICKIT_..._ON_DESTROY event. The info pointer will be NULL.

	    Any  event handlers for this event will be invoked in reverse order;
	    the newest is run first and the oldest last.

CONTROLS
     A toplevel instance has a number of runtime-configuration	control  options
     that affect its behaviour. These can be set using tickit_setctl_int(3), and
     queried  using  tickit_getctl_int(3).  The  individual controls have human-
     readable string names  that  can  be  obtained  by  tickit_ctl_name(3)  and
     searched  by  name using tickit_ctl_lookup(3). The type of a control option
     can be queried using tickit_ctl_type(3).

     The options are given in an enumeration  called  TickitCtl.  The  following
     control values are recognised:

     TICKIT_CTL_USE_ALTSCREEN (bool)
	    The value is a boolean indicating whether the instance will activate
	    the terminal alternate screen buffer mode when started.

SEE ALSO
     tickit_window(7),	   tickit_term(7),     tickit_pen(7),	 tickit_rect(7),
     tickit_rectset(7),        tickit_renderbuffer(7),	       tickit_string(7),
     tickit_utf8_count(3), tickit_version(7)

								       TICKIT(7)

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

home | help