Welcome to libsx, the simple X library.  Libsx is an attempt to
simplify the vagaries of programming under X windows, making it simple
to create user interfaces for programs.  With libsx, 10 lines of code
may be all you need to create a user-interface complete with many
different types of widgets.

Libsx is layered on top of the Athena widget set and basically acts as
a front end to all the Athena and Xlib garbage so that programming
reasonable interfaces isn't so painful.  For example, libsx has a
simple to use one-line string entry widget that you can create with a
single function call (it's based on the Athena text widget but hides
all the gory details).  Libsx encapsulates the common operations
people usually want to perform in a window system and makes them easy
to accomplish (at the loss of some flexibility).

If you've ever wanted to just open a window with a few buttons and
draw some graphics, but were turned away by the complexity of trying
to do that, then libsx may be your ticket.  Libsx is capable of easily
creating many types of user-interface components each with a single
function call of a few arguments.  The library supports the following
Athena ``widgets'': 

              -- Labels
              -- Buttons
              -- Toggle buttons and Radio buttons
	      -- String Entry areas
              -- Scrolling Lists
	      -- Menus
	      -- Scrollbars
	      -- Drawing Areas
	      -- Text Edit boxes

The goal of libsx was to make the creation and manipulation of each of
these items as simple as possible.  The standard simplicity litmus
test is a "Hello World" program, which in libsx is:

              #include "libsx.h"

              main()
	      {
	        MakeLabel("Hello World");
		MainLoop();
	      }

More complicated interfaces use a similar style of creation and
complete applications usually require less than 30 lines of code to
create an entire user interface complete with menus, buttons, string
entry widgets, etc.  For example, to create an application that opens
a window with a drawing area and a ``Quit'' button, all one must do
is:

           #include "libsx.h"

           main()
	   {
	     Widget quit_button, draw_area;
	      
	     quit_button = MakeButton("Quit",     quit,       NULL);
	     draw_area   = MakeDrawArea(500, 500, draw_stuff, NULL);

             SetWidgetPos(draw_area, PLACE_UNDER, quit_button, NO_CARE, NULL);

             MainLoop();
	   }

So in only a handful of lines of code, we created a simple X
application that would have required inordinate amounts of code using
traditional methods.  All that is required now is for the user to
write the routines ``quit'' and ``draw_stuff''.  
