
USE -- a tool for designing windowing user shells with Tcl and Tk

Whom USE is written for -- why did I write it?
----------------------------------------------

USE is written for people who:
  - are experienced Tcl user and want to become more effective
  - prefer to edit Tk code by hand instead of searching (or missing)
    Tcl's and Tk's features in an "easy to start" interface builder
  - want to see and test their results immediately
  - would like to have more support for designing modular user shells
    with Tcl and Tk

Two simple Tcl procedures for a standard wish allow:
  - writing user shell components with Tcl that appear like Tk widgets
  - overloading of widgets to add (or modify) subcommands

USE provides a graphical tool for designing user shells with Tcl and Tk
as a hierarchical trees of widgets. Every node may be a tree itself.

Tcl code is added to nodes (for configuration, lay-outing or behaviour).
Tcl scripts may be generated for running under wish or for
integrating with binaries.

Todays USE has only little support for specific widgets, however,
every Tk widget, John Ousterhouts or your own, written in C or with Tcl,
is supported from the moment it exists.

USE is designed and bootstrapped with itself.


How to get and test USE:
------------------------

0. Requirements

  Following packages are needed:
    - Tcl, Tk
      (tested with Tk 3.3b3, 3.6 and according Tcl;
       it won't run with Tk 3.2 or older)
    - BLT (especially drag&drop, table, bgexec, win)
      (tested with 1.0, 1.5)

  FTP Server:
    cranach.rz.tu-ilmenau.de

1. Uncompress and untar the distribution file.

   gunzip -c use1.0.tar.gz | tar -xf -

   This will create a directory "use1.0".

2. Run ./configure

   Go into the "use1.0" directory 
   and run the auto-configuration script "./configure"

	cd use1.0
	./configure 

   * C-Compiler
	- gcc is used if available
 	- else it defaults to cc

        self defined:
        CC='lcc -whatever' ./configure

   * Installation Prefix
        - you are queried for the installation prefix

	or predefined:
	./configure --prefix=/home/someone

   * Tcl includes and libraries
        - it is looked beyond your installation prefix
	- if nothing is found, you are queried for locations

   * Generated files
        - install.mk
	- Makefile
	- tpc/Makefile
	- src/Makefile
        - src/shared/Makefile

3. Compile the package.

	make 

4. Testing

   run USE
    
        cd examples
	../custom/use &

   Examples for loading can be found in the "examples" directory.
   Read the documentation for detailed information.

5. Installing

   USE will be installed beyond the installation prefix as follows:

        make install

   -+- bin -+- use
    |       |
    |       +- tpc
    |
    +- include --- use.h
    |
    +- lib -+- libuse.*
            |
            +- use -+- tclIndex
                    |
                    +- *.tcl
                    |
                    +- examples --- *
                    |
                    +- custom -+- use.ad
                               |
                               +- Makefile
                               |
                               +- useEntInit.c

   * If you don't install USE, you will need to set the USE_LIBRARY
     environment variable. Otherwise you may not to be able to generate 
     stand-alone applications that need two procedures of "use_basic.tcl".

6. Send correspondence, bug reports etc. to

	rf@rz.tu-ilmenau.de

Known problems:
---------------
* The function "Tk_CreateMainWindow" got with Tk3.3 a fourth argument.
  If you want to compile USE with an older Tk (e.g. Tk3.3b3) you shall
  need to delete the fourth argument "Tk" from the function call 
  in the file "src/useInstallTk.c".

* On some machines installation doesn't work with option "-m". 
  However, all installation is coded in the toplevel Makefile, 
  that should be easy to modify.

* With BLT1.0 starting an external editor might crash USE.
  With BLT1.5 I couldn't produce that problem.

* There are two problems with Tk
  - USE works with the "send" command to a local interpreter,
    that dismisses results sometimes.
    (e.g. error string for exceptions -- shown with empty braces () then)
  - options (e.g. fonts) are invalid sometimes
  I have reported these bugs to John Ousterhout and hope that a corrected
  release will be available soon.
  If you want to patch them today, I can send you my changes for Tk.
