DIVIDERS(2)                                           DIVIDERS(2)

     NAME
          Dividers - user-draggable tk dividing bars

     SYNOPSIS
          include "dividers.m";
          dividers := load Dividers Dividers->PATH;
          Divider: import dividers;

          init: fn();
          Divider: adt {
              new: fn(win: ref Tk->Toplevel, w: string, wl: list of string, dir: int):
                  (ref Divider, chan of string);
              event: fn(d: self ref Divider, e: string);
          };

     DESCRIPTION
          Dividers presents an interface allowing Tk widgets to be
          arranged within a window, divided by bars which can be
          dragged by the user to determine the proportion of the
          available space to allocate to each widget.  The groups can
          be stacked vertically or horizontally.  Divider widgets can
          be nested.

          Init must be called before anything else, to allow Dividers
          to initialise its internal state.  Divider.new creates a new
          divider widget; it will be named w, and it will divide up
          the widgets named in the list wl. Dir can be Dividers->NS,
          to stack the widgets one on top of another, or Dividers->EW
          to stack the widgets left-right.  Divider.new returns a new
          Divider adt, and a channel through which Divider events will
          be received.  The application should arrange that events
          received on this channel be passed to the event() function.

          A Divider widget must be informed if its size has changed by
          configuring its width and height appropriately; it does the
          same to the items it is dividing.

     SOURCE
          /appl/lib/dividers.b

     BUGS
          It should not be necessary to inform the Divider widget of
          size changes.

          The event-based mechanism seems somewhat contrary to the
          preferred Limbo way of doing things.

     Page 1                       Plan 9            (printed 12/21/24)