The jstools distribution in the neosoft Tcl code archive contains
a number of general-purpose libraries, as well as applications.
(I expect the distribution to be installed in
<URL:ftp://ftp.aud.alcatel.com/tcl/code/jstools-tk4.0v4.0.tar.gz>.)

The following describes the various libraries distributed as part of
jstools (version 4.1/4.2).  They are used by the jstools applications,
and you can also use them in your own applications.  Full documentation
for (most of) the libraries is available through the jdoc application;
read "jdoc jslibraries" for an overview.

Unfortunately, documentation is lagging a little behind the code; 
some new features aren't documented yet, and many aren't documented 
as thoroughly as I would like.  I don't think there are any places 
where programming to the documentation is likely to cause trouble, 
though.

The preferences mechanism, and in particular the user interface for 
preferences, has been significantly updated since version 4.0/4.1, 
along the model of that in Brent Welch's EXMH application.  This is 
not quite complete, though; in particular, you may need to write your 
own code to save preferences.  I intend to finish this soon.

Significantly updated libraries since version 4.0/4.0 are marked with a
plus sign.

NATURAL LANGUAGE DATABASE SUPPORT
  This library lets your application look up strings it wants to display
  and present them in the user's preferred language.  It's designed to be
  independent from the other jstools libraries, so it can be used alone.
  It's also fairly small.
  
  jldb.tcl - localisation support for natural-language strings

UTILITY LIBRARIES
  These libraries don't provide significant functionality that the
  end-user can see, but they are used by the other libraries, or provide
  convenience proedures to save a few lines of code in applications.
  
  jdebug.tcl - debugging support
  jfileio.tcl - convenience procedures for reading from and writing to files
  jinit.tcl - the common jstools initialisation sequence
  jparseargs.tcl - procedures for parsing procedure and application arguments
  jprefixmatch.tcl - filename expansion and abbreviation matching procedures
+ jprefs.tcl - general routines for loading, saving, and using preferences
  	(see also jprefpanel.tcl)
  jstools.tcl - miscellaneous procedures shared by jstools applications
  jtkutils.tcl - convenience procedures and user-interface layout support
  jtclutils.tcl - convenience procedures that don't require Tk
  jtkversion.tcl - procedures for writing code compatible with both Tk 3 and 
  	Tk 4
  jviewers.tcl - show manual pages or URLs with the user's preferred tools

COMPOUND WIDGETS AND WIDGET WRAPPERS
  These libraries enhance the functionality of an existing Tk widget by
  providing a wrapper around it, or provide new widget-like entities with
  new functionality.
  
  jmetawidgets.tcl - compound widgets including a colour chooser
  joptionbutton.tcl - a button that lets the user choose one of several 
  	options
  jtext.tcl - wrappers around the text widget's widget command

POPUP PANELS
  These libraries provide popup panels or dialogue boxes of various kinds.
  Except for the find panel provided by jfindpanel.tcl and the text
  display panel provided by jmore.tcl, these panels are modal.
  
  jabout.tcl - richtext about panels
  	(see also jrichtext.tcl)
  jalert.tcl - popup notification panels
  jconfirm.tcl - a panel asking the user to confirm actions
  jfindpanel.tcl - a search-and-replace panel for the text widget
  jfs.tcl - a file-selector panel
  jmore.tcl - a text-display panel
+ jprefpanel.tcl - a preference panel for setting shared jstools preferences
  jprompts.tcl - procedures to ask the user for various kinds of information

PROCEDURES FOR MANAGING USER-VISIBLE COMMANDS
  The procedures in jcommand.tcl make managing user-visible commands
  (i.e., commands the user would give to your application, e.g. by
  clicking on a button or choosing a menu entry) easier.  Those in
  jmenu.tcl let you construct menus of those commands, as well as other
  kinds of menus, without a lot of typing.
  
  jcommand.tcl - procedures to manage user-invokable commands
  jmenu.tcl - procedures to manage menus

PROCEDURES FOR USING TAGGED TEXT
  These procedures let you and your users use, type, load, and save tagged
  text, which may display multiple fonts or colours or include hypertext.
  The jtagconvert.tcl library provides a way of converting multifont text
  in a text widget into other rich-text formats.
  
  jrichtext.tcl - procedures to embed rich text in Tk applications
+ jtagconvert.tcl - procedures for saving multifont text in various formats
+ jtexttags.tcl - extensive support for working with tagged text
  	(see also jtext.tcl)

BINDINGS LIBRARIES
  These libraries manage keyboard (and mouse) bindings for text and entry
  widgets.  Together with the preferences libraries, they let the user
  choose among `basic' bindings (more complete than the standard Tk 3.6
  bindings), Emacs bindings, and vi bindings.  They depend on jtext.tcl,
  and support jtexttags.tcl if you're using it.
  
  Currently, only jbindentry.tcl, jbindtext.tcl, jcompose.tcl, and
  jlatin1.tcl are documented at all, and they aren't documented very
  thoroughly.  However, the others are not intended to be called directly;
  they're called by the libraries mentioned above.
  
  jbindentry.tcl - several user-selected styles of entry bindings
  jbindtext.tcl - several user-selected styles of text bindings
  	(see also jtext.tcl)
  jcompose.tcl - support for the Compose key
  jentrybasic.tcl - support for minimalist bindings
  jentryedt.tcl - rudimentary support for EDT bindings
  jentryemacs.tcl - support for Emacs-style entry bindings
  jentrykeys.tcl - general support for entry keyboard bindings
  jentrymouse.tcl - support for entry mouse bindings
  jentryvi.tcl - support for vi-style entry bindings
  jlatin1.tcl - additional support for the Compose key
  jtextbasic.tcl - support for minimalist text bindings
  jtextedt.tcl - rudimentary support for EDT bindings
  jtextemacs.tcl - support for Emacs-style text bindings
  jtextkeys.tcl - support for text keyboard bindings
  jtextmouse.tcl - support for text mouse bindings
  jtextvi.tcl - support for vi-style text bindings

Jay Sekora
<js@aq.org>
1996.05.19
