prefab-compound man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

PREFAB-COMPOUND(2)					    PREFAB-COMPOUND(2)

NAME
       prefab: Compound - windows for ITV toolkit

SYNOPSIS
       include "draw.m";
       include "prefab.m";
       prefab := load Prefab Prefab->PATH;

       Compound: adt
       {
	   image:     ref Draw->Image;
	   environ:   ref Environ;
	   r:	      Draw->Rect;
	   title:     ref Element;
	   contents:  ref Element;

	   iconbox:   fn(env: ref Environ,
		      p: Draw->Point, title: string, icon,
		      mask: ref Draw->Image):
		      ref Compound;
	   textbox:   fn(env: ref Environ,
		      r: Draw->Rect,  title, text: string):
		      ref Compound;
	   layoutbox: fn(env: ref Environ,
		      r: Draw->Rect,  title: string, lay: list of Layout):
		      ref Compound;
	   box:	      fn(env: ref Environ,
		      p: Draw->Point, title, elist: ref Element):
		      ref Compound;
	   draw:      fn(comp: self ref Compound);
	   redraw:	fn(comp: self ref Compound, r: Draw->Rect);
	   scroll:    fn(comp: self ref Compound, elem: ref Element,
		      d: Draw->Point);
	   show:      fn(comp: self ref Compound, elem: ref Element): int;
	   select:    fn(comp: self ref Compound,
		      elem: ref Element, i: int, c: chan of int):
		      (int, int, ref Element);
	   tagselect: fn(comp: self ref Compound,
		      elem: ref Element, i: int, c: chan of int):
		      (int, int, ref Element);
	   highlight: fn(comp: self ref Compound,
		      elem: ref Element, on: int);
       };

DESCRIPTION
       Compound	 is  the  data	type defining boxes drawn on the screen.  Each
       appears in a new window, Compound.image, and  holds  a  (possibly  nil)
       title  Element  and  contents  Element.	 It  occupies the space on the
       screen defined by Compound.r.  Allocating a Compound creates  a	window
       but  does  not draw it; after the Compound is built, Compound.draw must
       be called to make it visible.  Compounds have  a	 border	 around	 them,
       drawn  in  Style.edgecolor and contain from top to bottom the title (if
       any), a horizontal line (if there is a title), and the contents.

       Compound.iconbox(env, p, title, icon, mask)
	      Creates a Compound whose	contents  are  made  by	 calling  Ele‐
	      ment.icon	 (see prefab-element(2)) using the icon and mask.  The
	      Compound's upper left corner is at p; its size is determined  by
	      the size of the icon and mask.

       Compound.textbox(env, r, title, text)
	      Creates  a  Compound  whose  contents  are  made by calling Ele‐
	      ment.text using the supplied text.  As  with  Element.text,  the
	      resulting	 contents Element will be actually a list of text Ele‐
	      ments if the text occupies multiple lines on  the	 screen.   The
	      rectangle behaves as in Element.text.

       Compound.layoutbox(env, r, title, layoutlist)
	      Like  Compound.textbox,  but based on Element.layout rather than
	      Element.text.

       Compound.box(env, p, title, element)
	      Creates a Compound whose contents are made from an existing Ele‐
	      ment.   To  build	 complex  structures, use the Element-building
	      functions, size the Element appropriately, and use Compound.box.
	      The  result  is  positioned with its upper left corner at p, and
	      with size determined by that of the Element.

       However a Compound is built, its size computation makes	allowance  for
       the  border  and	 title.	 Moreover, if the requested size and placement
       makes part appear offscreen, the result may be moved to display it bet‐
       ter.

       Compound.draw()
	      This  function uses the description of the title and contents to
	      paint the on-screen image.   It  takes  no  arguments;  all  the
	      information is included in the description.

       Compound.redraw(r)
	      Like  Compound.draw,  but restricts the drawing to the specified
	      Rect r.

       Compound.select( element, index, c ): (int, int, Element)
	      The channel c is a chan of int connected to an IR remote control
	      interface, typically acquired through the program's Context (see
	      draw-context(2)).	 The element is contained in the Compound, and
	      may  be  at  any	level of its structure.	 It is most usefully a
	      list, but may be a singleton, in which case it  behaves  like  a
	      list  of	one  element.	The  arrow  keys on the remote control
	      scroll through the members of the list,  using  the  Style.high‐
	      lightcolor  associated  with  each  member  element  to indicate
	      selection.  A Select key on the remote control  triggers	select
	      to return a tuple (key, index, elem); key is the key code of the
	      action (here Select), index is the number of the element in  the
	      list  (ignoring  separators),  and elem is the list member high‐
	      lighted when the key was hit.  Any other key  returns  the  same
	      tuple with index -1 and the value of the key.  The elem returned
	      is always the most recently highlighted, even if the result  was
	      not  a  selection.   When select returns, it always restores the
	      default appearance of the list.

       Compound.tagselect( element, index, c): (int, int, Element)
	      Like Compound.select, but rather than selecting  among  all  the
	      elements	of  a  list, it selects among only those elements with
	      defined tags in the structure  contained	within	the  specified
	      element.

       Compound.highlight(element,  on)
	      Set  the	highlighting  to  be ``on'' or ``off'' for the element
	      within the compound.

       Compound.scroll(element,	 d)
	      Like Element.scroll: scroll the  element	within	the  compound.
	      The updated image is redrawn after the scrolling.

       Compound.show(element,  d)
	      Like  Element.show:  make sure the element is visible within the
	      rectangle of the top-level Element of the Compound, that is,  in
	      effect call Element.show(Compound.contents, element);

SOURCE
       /libinterp/prefab.c
       /libprefab/*.c

SEE ALSO
       prefab-element(2), prefab-environ(2), prefab-style(2)

							    PREFAB-COMPOUND(2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net