<TITLE> Tcl/Tk FAQ </TITLE>

<PRE>

 Archive-name: tcl-commercial-faq
 Version: 2.0
 Last-modified: March 31, 1993
 Posted:	Around the 1st of each month

                       COMMERCIAL USE OF TCL/TK

This file contains brief descriptions of how Tcl/Tk is being used in
commercial products.  If you have questions about specific postings,
contact the person who made the submission directly.  The purpose of
this listing is to show that Tcl/Tk is being used in commercial products
and to discuss that use.

INDEX

0. Rumors and other miscellaneous...
1. Use of TCL/TK for Computational Fluid Dynamics Applications
2. CASE Tool Code Generation
3. CPU's Supervisory Control And Data Aquisition Sytem (SCADA)
4. NeoSoft Tcl
5. Other NeoSoft products
6. Training by AT&T: 
	"Object Oriented Programming with [incr Tcl]"
7. Training by Computerized Processes Unlimied: 
	"Introduction to Programming in Tcl/Tk"
8. Training by Computerized Processes Unlimied: 
	"Building Graphical User Interfaces in Tk"
9. Training by NeoSoft:
	"Tcl and Tk: An Applications-Based Approach"

Each posting is prefaced by a line with dashes so you can search to the
beginning of the next message.  

Please submit further postings to gwl@cpu.com

---------------------------------
ENTRY 0.

Several companies are using Tcl or Tcl/Tk in their products but
do not advertise that fact.  

It is rumored that the following computer vendors may be using tlc/tk in
a future version of some of their management tools: SCO, Digital, Cray.

In addition, numerous companies are using Tcl to automate regression
testing.  In essence, they are using the framework developed by folks
at Sun that is used to test the Tcl implementation.  Take a look at
the files in tcl/tests.

---------------------------------
ENTRY 1.
Usage: Computational Fluid Dynamics Applications
Company: Pacific Marketing and Communication, Berkeley CA
Contact: Wayne A. Christopher
Email: pmac!faustus@uunet.uu.net

P.M.A.C. is a small company that develops software for computational
fluid dynamics.  Our programs are used for generating meshes to
represent objects such as mechanical parts, which are used as input to
fluid flow solvers that typically run on supercomputers.

We have used TCL and TK for two products so far.  The first is a
"manager" or graphical shell that coordinates many other programs
that have different and often idiosyncratic interfaces, and presents a
unified view of the high-level data they manipulate.  This is a
natural task for TCL and TK, since it is very easy to add new programs
and options, and the simplicity of TCL makes it feasible to include
instructions for users to customize it for their own applications.

The second application is a grid and surface visualizer.  This allows
the user to view the grids generated by the system prior to the fluid
flow analysis step, and later, the results of the analysis.  The most
graphics-intensive section of the code, which involves calls to both X
and GL and must be able to store and render up to a million polyhedra,
was implemented as a special TK widget, but most of the other code,
including all user interface code, was written in TCL.

-----------------------------------
ENTRY 2.
Usage: CASE Tool Code Generation
Company: Westmount Technology BV, Holland
Contact: Eko Bousema
Email: ekbo@wmt.nl
US Subsidary: Westmount Inc, Boulder, CO 80302
Telephone: +1-303-4439733
Fax: +1-303-4439835

Products:
ISEE is an Open Integrated CASE tool for RDBMS and 4GL developers.
It supports Yourdon SA/SD including Dataflow Diagrams, Entity Relationship 
Diagrams and Structure Charts. Full code generation for database and 
3GL and 4GL applications is provided. Supported 4GL's include Ingres,
Informix and ACCELL/SQL.

TSEE  is a Open Integrated CASE tool for developers of technical systems.
It supports Yourdon SA/SD including Dataflow Diagrams, Entity Relationship 
Diagrams and Structure Charts.  Code can be generated for C and C with 
embedded SQL applications.


TCL/Tk:
The code generation is based on parsing diagrams and generating code
from that. This conversion is written in C++, the generation in Tcl.
The advantage of that is that user can adapt the codegeneration themself,
which is even more interesting because they can also extend the
diagram definitions.

We have extended Tcl with some features which converts diagrams
from the repository into an internal datastructure (model) which
can be accessed from within Tcl.

---------------------
ENTRY 3.
Usage: Supervisory Control And Data Aquisition (SCADA)
Company: Computerized Processes Unlimited 
Contact: Gerald W. Lester
Email: gwl@cpu.com


Computerized Processes Unlimited primary business is Systems Integration
Consulting, especially in the area of Supervisory Control And Data Aquisition
(SCADA) systems.  Our traditional area of business is in Oil & Gas Production
and Pipelines, but we also do SCADA outside of that, from Electric Utilities to
Food Processing control systems.

Our current generation SCADA system is based on a product from HP called RTAP.
This is toolkit for building SCADA systems, not a complete SCADA package. One
is expected to write the remaining applications, including the GUI, to make it
a SCADA system.   What we have done is to bring all of RTAP's API (call
interface) up into tcl as tcl commands (this is the only C/C++ programming we
do anymore).  All of our GUI and any application programs we now write are in
SCL Plus (tcl/tk with our RTAP extensions).   Our current system is a
distributed client/server model.

We have deployed this system at client sites, the most notable one being the
Shell Auger production platform in the Gulf of Mexico.  Auger is a Tension Leg
Platform (TLP) that is expected to produce 150 million cubic feet of natural
gas and 40,000  barrels of crude oil per day.  The total cost of Auger was
$1.35 billion, of which about $5 million was for the control systems we put on
the platform.  Our control systems operate all aspects of the platform.

We currently have produced over 250,000 lines of tcl/tk code, counting
comments. This, to the best of my knowledge, is the largest tcl/tk project to
date.


For pricing and more detailed information, please contact:

 Gerald W. Lester                        
 Computerized Processes Unlimited        
 4200 S. I-10 Service Road, Suite #205   
 Metairie, LA  70001

Voice:  (504)-889-2784
FAX:    (504)-889-2799
E-Mail: gwl@cpu.com 

---------------------
ENTRY 4.
Usage: Support
Company: NeoSoft
Contact: Karl Lehenbauer
Email: sales@NeoSoft.com.

NeoSoft Commercial Tcl Support

Thank you for your interest in NeoSoft's commercial Tcl support.
We offer a flexible support plan that can be tailored to your
organization's needs.

NeoSoft Tcl is our integration of the core Tcl technologies into a
professionally maintained and supported release.

Below is a description of NeoSoft Tcl and our Tcl services.

To set up a support contract, or if you need more information, please 
contact us at +1 713 684 5969 9-4 M-F, or send email to sales@NeoSoft.com.


NeoSoft Tcl:

    Includes the latest Tcl, Extended Tcl, Tk, and XF source.

    Includes the graph and photo widgets, compiled in at your option.
	
    NeoSoft's Tcl support libraries are included, providing useful tools 
       such as dialog boxes, a file requester, and many additional functions.

    Includes xpm pixmap library to allow any widget's bitmap to be a
       color pixmap, TIFF, GIF, etc.

    Point releases of Tcl, Extended Tcl, Tk and XF integrated and
       made available within thirty days.

    Major releases made when code is stable and needed tools are
       available.

    No license is required to redistribute with an application.

    Documentation comes in nroff and postscript (tm) formats.

    Available via FTP, DC-600A data cartridge, DAT tape 
       (in DATA/DAT format) or 3.5" high density floppy disks.



Service types:

Basic service:
    Source copy of NeoSoft Tcl.
    Binaries built on your machine using telnet or modem, if needed.
    Free updates for a year (available via FTP or media).
    20 hours of remote support, including consulting, bug fixing, etc.
    Standard documentation set.
    Release notes.
    NeoSoft Tcl T-shirt (specify L or XL).
    Additional support available on an hourly basis.

    Price: $2500/year


Additional services (billed as Time and Materials):
    Help desk.
    24 hour emergency support.
    Training.
    On-site work.
    Hard-copy documentation sets.
    Software development.
    Software integration, release building and porting.
    Builds for additional architectures.


---------------------
ENTRY 5.
Usage: Other
Company: NeoSoft
Contact: Karl Lehenbauer
Email: sales@NeoSoft.com.

Additional NeoSoft products:
    Tcl source encryption system.
    Tcl X-windows desktop.
    Control Station - programmable network monitoring software.
    CUTE - programmable, Tcl-based telecommunications program.

To set up a support contract, or if you need more information, please 
contact us at +1 713 684 5969 9-4 M-F, or send email to sales@NeoSoft.com.

---------------------
ENTRY 6.
Usage: Training
Company: AT&T Bell Laboratories
Contact: Michael J. McLennan
Email: michael.mclennan@att.com


Course Title:		Object-Oriented Programming with [incr Tcl]

Course Length:		2 Days

Course Format:		Course material is presented in a lecture format.

Course Fee:		$600.00

Course Description:	When Tcl/Tk scripts grow larger than a few hundred
			lines, the code complexity can be difficult to manage.
			[incr Tcl] provides a set of object-oriented extensions
			for the Tcl language, enabling programmers to write
			high-level building blocks that are more easily
			assembled into a finished application.  This course
			describes object-oriented programming with [incr Tcl].
			Fundamental concepts are presented on the first day,
			showing how [incr Tcl] can be used to write more modular
			code.  On the second day, these same concepts are used
			to create "mega-widgets", high-level widgets that look
			and act like the usual Tk widgets but are constructed
			entirely with [incr Tcl] code.

			Topics include:
				- Designing object classes
				- Public/protected data members
				- Shared data members
				- Member functions (methods)
				- Inheritance
				- Multiple inheritance
				- Object construction/destruction
				- Manipulating scope
				- Persistent objects
				- Anatomy of a mega-widget
				- A mega-widget base class
				- Example widgets
				- Adding new bindings
				- Creating reusable libraries

Course Level:		Technical: Beginner to Intermediate

Prerequisites:		Exposure to tcl/tk programming concepts

For pricing and availablity information, please contact:

 Michael J. McLennan
 AT&T Bell Laboratories
 1247 S. Cedar Creast Blvd., Rm 2C-226
 Allentown, PA 18103

Voice:  (610)-712-2842
FAX:    (610)-712-3843
E-Mail: michael.mclennan@att.com

---------------------
ENTRY 7.
Usage: Training
Company: Computerized Processes Unlimited 
Contact: Gerald W. Lester
Email: gwl@cpu.com

Course Title:		Introduction to Programming in Tcl

Course Length:		2 Days

Course Format:		Course material is presented in a lecture format and
			through a hands on laboratory using a
			network of X terminals connected to a RISC workstation.

Course Description:	This course introduces the participant to programming
			in Tcl/TclX.  

			Topics include:
				- Variables
				- Arrays
				- Lists
				- Keyed Lists
				- Syntax
				- Flow control
				- Procedures
				    o Creating
				    o Invoking
				    o Passing variables
				    o Passing arrays
				    o Passing lists
				- Running programs from Tcl
				- Communicating with child processes
				- Signal handling
				- Error processing
				- Accessing system facilities
				- Programming techniques
				   o Using autoloading procedures
				   o Proper use of quoting

Course Level:		Technical: Beginner to Intermediate

Prerequisites:		Use of vi or emacs editors
			Exposure to programming concepts
			Use of csh/ksh (not programming)

For pricing and availablity information, please contact:

 Gerald W. Lester                        
 Computerized Processes Unlimited        
 4200 S. I-10 Service Road, Suite #205   
 Metairie, LA  70001

Voice:  (504)-889-2784
FAX:    (504)-889-2799
E-Mail: gwl@cpu.com 

---------------------
ENTRY 8.
Usage: Training
Company: Computerized Processes Unlimited 
Contact: Gerald W. Lester
Email: gwl@cpu.com

Course Title:		Building Graphical User Interfaces in Tk

Course Length:		2 Days

Course Format:		Course material is presented in a lecture format and
			re-enforced through a hands on laboratory using a
			network of X terminals connected to a RISC workstation.

Course Description:	This course introduces the participant to building
			graphical user interfaces using Tcl/Tk.

			Topics include:
				- Background Concepts
				- A tour of the widgets
				- Adding Bindings
				- Widget Class Bindings
				- Geometry Managers
				- Running programs from Tcl/Tk
				- Communicating with child processes
				- Writing widgets in Tcl/Tk
				- Programming techniques
				   o Proper use of quoting
				- Interface Builders for Tk

Course Level:		Technical: Beginner to Intermediate

Prerequisites:		CPU's "Introduction to Programming in Tcl" course
			or understanding and experience using Tcl

For pricing and availablity information, please contact:

 Gerald W. Lester                        
 Computerized Processes Unlimited        
 4200 S. I-10 Service Road, Suite #205   
 Metairie, LA  70001

Voice:  (504)-889-2784
FAX:    (504)-889-2799
E-Mail: gwl@cpu.com 

---------------------
ENTRY 9.
Usage: Training
Company: NeoSoft
Contact: Karl Lehenbauer
Email: sales@NeoSoft.com.

NeoSoft Tcl and Tk Training Information


NeoSoft is perhaps the premier corporate contributor to the Tcl and Tk toolkit
efforts.  Our groundbreaking work in Tcl and Tk dates back to its first
appearance in 1990, and is reflected by the copious amount of concepts and code
taken from Extended Tcl for use in the Tcl baseline.  We continue to
collaborate with Dr. John Ousterhout, the author of baseline Tcl and Tk, on the
forthcoming release of Tcl 7.0 and Extended Tcl 7.0.

NeoSoft's Tcl training efforts have been a natural outgrowth of our work with,
and extensions of, Tcl.

The philosophy of the course is one of immediate, maximum impact by rapid
immersion into hands-on building of X-windows graphical user interfaces and the
Tcl programs that underly a number of useful applications.  This approach grew
out of our first-generation Tcl training course, where we discovered that
students became very excited once the Tk toolkit was introduced and they could
begin typing statements and interactively creating sophisticated X-windows
interfaces.

This same philosophy is the backbone of a book we're writing, Tcl and Tk:  An
Applications-Based Approach, due to be published in the first quarter of 1994
by Prentice-Hall Technical Publications.

Training Options

We are flexible and can customize a course to your specific needs.  We have
found that almost everyone is content with one of a few options.  The class
lasts for two or three days, at your option.  The class can be structured to
support new Tcl and Tk users and/or users with significant prior experience. 
In either case, it is nice to allocate some unstructured time at the end of the
class to talk about specific applications and issues that the students are
interested in, including new users, approaches, tools, environments, and the
future of Tcl itself.

Course Location and Times

The course can be taught at your company's facility, or at our training
facility located in Houston, Texas.  Enrollment is limited to ten people per
class to provide a substantial amount of instructor attention to each student. 
If the course it to be held at your company's facility, there should be no less
than one workstation per two students, if at all possible.  The class can be
taught over a weekend.  Contact NeoSoft for pricing and availability.

Instructor

The class will be taught by Karl Lehenbauer, the co-author of Extended Tcl. 
Karl is an experienced trainer, having taught and/or developed previous courses
on Unix, Unix system administration and Tcl/Tk.


Course Goals

Teach Tcl and Tk with the maximum impact by building real world applications in
the classroom.

Site Prerequisites

Integrated copy of Tcl and Tk, including Extended Tcl, running on site.

Course Contents
Below is the list of basic sections of the class, beginning with the elementary
things that we would teach to users without prior Tcl experience and ending
with building several tools that are useful, real-world applications in their
own right.  We can work with you to tailor the course to your organization's
specific needs. 

Section 1 Hello, World

Concepts:
	Typing commands interactively into the interpreter.
	The most important command in Tcl: "proc"
	Passing arguments to Tcl procedures.
	The C "Hello, World" koan in a graphical context:
The button command
The pack command

Section 2 Making Choices with Buttons

Concepts:
	Variables and variable substitution
	Radiobuttons
	Checkbuttons
	More on the pack command

Section 3 A quartet of application launchers

Concepts:
	Launching applications
	Tcl Language elements:
		Variable assignment
		Conditional expressions
		Beginning file I/O
		Square-bracket substitution
		Generating window elements from data
		Accessing command line arguments

Section 4 Building a support library:  The dialog box

Concepts:
	The message widget
	Control structures:  if/else/endif
	Default values for procedure arguments
	First mention of Tk's event loop
	Subordinate toplevel windows
	'tkwait' to support sequential control
	
Section 5 Building pulldown and popup menus

Concepts:
	The menu widget
	Binding commands to keypress events

Section 6 A few simple but useful applications

Concepts:
	Intermediate file I/O
	Delayed execution with 'after'
	Temporal commands (getclock, fmtclock)
	Capturing a spawned command's output in a variable

Section 7 Building a support library: The file selector

Concepts:
	The listbox and scrollbar widgets
	The frame widget
	More about the packer

Section 8 Creating a text editor with the text widget

Concepts:
	The text widget
	Text widget tags
	More about key bindings
Integrating support library examples

Section 9 Creating a hypertext system with the text widget

Concepts:
	More about the text widget
	More about text widget tags
	Builds on the text editor



Section 10 X resource customizer

Concepts:
	Use of the "send" command to access another interpreter.
	More about text widget tags.
	Builds on the text editor to make a new tool.

Section 11 Introduction to the canvas widget

Concepts:
	Introduces the canvas widget.
	Tags and tag processing.
	More on list processing.
           Use of different canvas widget types.

Section 12 A second encounter with the canvas widget

Concepts:
	Commands and options within the canvas widget.
	Combining items with actions.
	A new application launcher.

Section 13 Creating a drawing tool with the canvas widget

Concepts:
	Traversing items within a canvas widget.

Section 14 Sysadmin tool:  New user creator

Section 15 Sysadmin tool:  ttytab editor

Section 16 Developer tool:  The proc browser

Concepts:
	More on using "send" to access another interpreter.
	Using "info" to find variables and procedures.
           Using entry widgets.

Section 17 Color editor

Concepts:
	Slider widget
	Performing math with the "expr" command

To set up a support contract, or if you need more information, please 
contact us at +1 713 684 5969 9-4 M-F, or send email to sales@NeoSoft.com.
Newsgroups: comp.lang.tcl,comp.answers,news.answers
Path: lvirden
From: lwv26@cas.org (Larry W. Virden)
Subject: FAQ: comp.lang.tcl Frequently Asked Questions (1/5)
	(Last updated: April 20, 1994)
Followup-To: comp.lang.tcl
Summary: A regular posting of the comp.lang.tcl Frequently Asked Questions 
	(FAQ) and their answers.  This is the first of five parts.
	This part introduces Tcl and Tk and discusses documentation, etc.
Originator: lvirden@cas.org
Keywords: tcl, extended tcl, tk, expect
Sender: lvirden@cas.org
Reply-To: lvirden@cas.org (Larry W. Virden)
Approved: news-answers-request@MIT.Edu

Archive-name: tcl-faq/part1
Version: 5.0
Last-modified: April 20, 1994


	For more information concerning Tcl (see "tcl-faq/part2"),
(see "tcl-faq/part3"), (see "tcl-faq/part4"), or (see "tcl-faq/part5").

Index of questions:

I.   Origin of the comp.lang.tcl FAQ information.
II.  What is Tcl?  Tk?  Extended Tcl?
III. Do these packages run on my machine?
	A. Unix
	B. MacOS
	C. INTEL DOS-like systems
	D. VMS
	E. AmigaDOS
	F. NeXT
	G. Other
IV.  Other than C, What languages can talk to tcl/tk?
	A. Shell
	B. C++
        C. Modula-3
	D. Eiffel
	E. Ada
	F. Other
V.   Is there a bibliography of material relating to these programs?
	A. The Tcl distribution 
	B. The Expect distribution
	C. Miscellaneous other online materials
	D. Published articles, books, and similarly available resources
	E. Training courses, materials, etc.
	F. Time-related seminars, conferences, sessions.
VI.  Where do I report problems, bugs, or enhancements - or -
	What is comp.lang.tcl?
VII. Are there any mailing lists covering topics related to Tcl/Tk?
VIII. Where can I find the FAQ and who do I contact for more information 
	about it?
	
End of FAQ Index

----------------------------------------------------------------------

------------------------------

From: FAQ General information
Subject: -I- Origin of the comp.lang.tcl FAQ information.

	The information in this set of FAQs comes from several sources.  The
primary source of information is the group itself - I spend (much too
much) time each month culling through what I feel are some of the best
answers, gathering up new information on ports, etc. and adding it
here.  I also gather new application information and add it as
best I can.  The next most predominant source of information comes from
the authors of the various software packages.  Finally, a small amount
comes from my personal experiences.

	I am always on the search for folk to assist in the maintenance
of these FAQs.  In fact, if you feel that you would like to coordinate
this effort, PLEASE let me know!

------------------------------

From: FAQ General information
Subject: -II- What is Tcl?  Tk?  Extended Tcl? 

	Tcl and Tk originated with Dr. John Ousterhout (Oh'-stir-hout -
last syllable rhymes with rout, not root) from the University of California,
Berkeley, California.

	Tcl (current release version 7.3) stands for ``tool command
language'' and is pronounced ``tickle.'' The author's home ftp site for
the Tcl source code is ftp.cs.berkeley.edu.  Tcl is actually two
things: a language and a library.  First, Tcl is a simple textual
language, intended primarily for issuing commands to interactive
programs such as text editors, debuggers, illustrators, and shells.  It
has a simple syntax and is also programmable, so Tcl users can write
command procedures to provide more powerful commands than those in the
built-in set.

	Second, Tcl is a library package that can be embedded in
application programs.  The Tcl library consists of a parser for the Tcl
language, routines to implement the Tcl built-in commands, and
procedures that allow each application to extend Tcl with additional
commands specific to that application.  The application program
generates Tcl commands and passes them to the Tcl parser for
execution.  Commands may be generated by reading characters from an
input source, or by associating command strings with elements of the
application's user interface, such as menu entries, buttons, or
keystrokes.  When the Tcl library receives commands it parses them into
component fields and executes built-in commands directly.  For commands
implemented by the application, Tcl calls back to the application to
execute the commands.  In many cases commands will invoke recursive
invocations of the Tcl interpreter by passing in additional strings to
execute (procedures, looping commands, and conditional commands all
work in this way).

	An application program gains three advantages by using Tcl for
its command language.  First, Tcl provides a standard syntax:  once
users know Tcl, they will be able to issue commands easily to any
Tcl-based application.  Second, Tcl provides programmability.  All a
Tcl application needs to do is to implement a few application-specific
low-level commands.  Tcl provides many utility commands plus a general
programming interface for building up complex command procedures.  By
using Tcl, applications need not re-implement these features.  Third,
extensions to Tcl, such as the Tk toolkit, provide mechanisms for
communicating between applications by sending Tcl commands back and
forth.  The common Tcl language framework makes it easier for
applications to communicate with one another.

	Tk (current release 3.6) - an extension to Tcl which provides
the programmer with an interface to the X11 windowing system.  The
author's home ftp site for the Tk source is ftp.cs.berkeley.edu.
Note that many users will encounter Tk via the ``wish'' command.  Wish
is a simple windowing shell which permits the user to write Tcl
applications in a prototyping environment.

	Extended Tcl (tclX) (Version 7.3a) - This is an extended set of
commands for Tcl developed by Karl Lehenbauer and Mark Diekhans.  The
authors' home ftp site for Extended Tcl is ftp.neosoft.com.  Extended
Tcl is oriented towards system programming tasks, with many additional
interfaces to the Unix operating system along with other useful
utilities.

------------------------------

From: FAQ General information
Subject: -III- Do these packages run on my machine?

A. Unix

	Tcl runs on Sun 3s and 4s running SunOS 4 and SunOS 5 (Solaris
1.x and 2.x), DECstations running Ultrix, DEC VAXen running Ultrix or
BSD, DEC Alphas running OSF/1, 386s running SCO Unix, Xenix, Bell-Tech,
Silicon Graphics running IRIX, HPs running HP-UX as well as HP Snakes
running OSF/1 and HP-UX.  Intel [34]86 systems running 386bsd, netbsd,
freebsd, BSDI, and Linux have Tcl ported.  Various CPUs running System
V.4 report having ported Tcl.  Tcl also appears to be running on
Sequent Symmetry running Dynix as well as OSF/1.  It also has been
reported to run fine on IBM RS6000 under AIX 3.x as well as IBM ES/9000
and AIX/ESA.  There were few problems getting it running under Mt. Xinu
Mach.  It also has been ported to Encore 91's running UMAX V (an 88k
based System V with BSD extension Unix).  It also runs on Apollos
running BSD/SYSV.  Tcl runs on a Cray running Unicos.  At least one
person has ported Tcl to a Mac (IIfx) running A/UX v3.0.  Someone
ported Tcl to a Sony NeWS machine running NEWS-OS 4.2.
A port to a Convex 3220 and 3880 was also reported.

	Tk (being based on Tcl) generally requires X11R4 or better as the only 
additional software requirement.  It runs on any of the above Unix
systems with that base of software.  It also runs on VMS and OSF/1.

	For information on Tcl/Tk/TclX availability (see "tcl-faq/part4").


B. MacOS

	See below for details of a Macintosh Tcl Mailing list.


---

	Ray Johnson <rjohnson@aic.lockheed.com> has a package called
MacTcl.  This is a fairly straight port of Tcl to the Macintosh.  It is
designed to be used as libraries to be embedded into other
applications.  A basic shell is included.  Most Tcl features are
present, including many Unix-like features.  Additional features
include supporting the env variable and sourcing Tcl code from a 
resource.  The current version is available at
ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/MacTcl7.3.sea.hqx

	As of this time, I have no leads on anyone porting Tk to MacOS.
I also have not heard of anyone porting Tcl/Tk to an Apple PowerPC.

	Also (see "tcl-faq/part4"), the Tcl programs/packages catalog,
for the latest port locations and versions.


C. INTEL DOS-like systems

	Numerous ports to DOS are available.  One unsupported port to MS-DOS
of Tcl and Extended Tcl V6.0a, done by "Karl Lehenbauer" <Karl@NeoSoft.com>, 
is available on ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/dostcl.zoo for
binaries and ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/dostcl60.zoo for
source.

	A port of Tcl V6.2 to MS-DOS was done by 
"John Martin" <johnm@cajal.uoregon.edu> and is available via FTP from
ftp://cajal.uoregon.edu/pub/tcl.dos.port/ and
ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/tcl62.dos.tar.Z .

	A source code only port of Tcl V6.7 to MS-DOS, done by 
PSPRENG@CIPVAX.BIOLAN.UNI-KOELN.DE (Peter Sprenger), is available from
him, somewhere on wuarchive.wustl.edu
or as
ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/tcl67dos.zip .

	A port of Tcl, version 7.3, to MS-DOS, done by
tpoind@advtech.uswest.com (Tom Poindexter), is available as
ftp://harbor.ecn.purdue/edu/pub/tcl/distrib/mstcl73*.zip .  This
also includes TclX 7.3a and Tk ported to Desqview/X libraries.

	A port of Tcl, V6.1 ?, done by unknown, to MS-DOS Windows
V 3.1 ?, is available as binary at
ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/w_tclbin.zip and as source at
ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/w_tclsrc.zip .

	An MS-DOS Windows DLL instance of Tcl 6.2 was generated by
Ugo Cei <ugo@oliver.sublink.org>.  Contact him for more details.

	A Windows DLL was made by ekki@prakinf.tu-ilmenau.de (Ekkehard Beier)
by slightly modifying a DOS 6.2 Tcl port.  There are still problems
with the system/WinExec command.  A very rudimentary Debugger User Interface
using Borland's Classlib is part of the zip-file, too.
I used it with BC3.1++/AF on MS W3.1.  You can get a copy from

ftp://metallica.prakinf.tu-ilmenau.de/pub/DOS/wintcl.zip

via anonymous ftp.  Unfortunately Ekki doesn't have time currently to
finish the Windows port and user Interface.

	miyata@sra.co.jp (Shigeaki Miyata) reports being in a group
which is preparing a commercial port of Tk to MSDOS Windows.  More
details are to follow.

	Omar Stanford <omar@fcm.missouri.edu> reported in March of 1994
that he had almost completed his port of Tcl 7.3 to MS-Windows 3.1.
He had incorporated extensions for networking (including NetWare),
Windows Sockets, and many Windows API functions.  He also was working on
a facility for dynamically allocating commands to the Tcl environment.
If there are other extensions that one would like to see under Windows 3.1,
or if you are interested in beta testing, drop him a line.

	Also, Simon Kenyon <simon@news.itc.icl.ie> of the Information
Technology Centre, Dublin, IRELAND, mentions that they are starting to
port Tk to MS-Windows.  There is a mailing list (see below) for
folk who are interested.

	Someone, whose name I don't have, reported porting Tcl to QNX
with a fair amount of hacking.

	A port of Tcl 7.3, except for glob or commadn pipelines, to OS/2 2.x
using C Set++ has been done by wwb@wwa.com (Bud Bach).  As of this date, I
have no leads on anyone porting Tk to any version of OS/2.

	Also (see "tcl-faq/part4"), the Tcl programs/packages catalog,
for the latest port locations.


D. VMS

	A port of Tcl 7.3 and Tk 3.6 to VMS was done by Angel Li
<angel@flipper.rsmas.miami.edu>.  The files are at
ftp://mango.rsmas.miami.edu/pub/VMS-tcl/tcl73-tk36-itcl13.tar.Z
and were compressed with the Unix compress command.  The pathname may
be subject to change as I have seen notes from Angel Li mentioning that
BLT 1.6 and the photo widget have also been ported.  These were compiled
on an Alpha running OpenVMS T6.1.

	A port of Tcl 6.3 onto VMS 5.5 was done by Wolfgang Kechel
<wolfgang@pr-wiesbaden.de> and Till Imanuel Panzschke.  Contact them
directly for assistance.

	A port of most of Tcl 6.7 and Tk 3.2 was done by John Kimball
<jkimball@src.honeywell.com> to VMS 5.5.  The files are on:
ftp://src.honeywell.com/pub/tcl67-tk32-on-vms55.tar.Z .

	A port of Tcl 7.0 and Tk 3.3 has being done to VMS on the
VAX and Alpha.  These are available as:
ftp://src.honeywell.com/pub/vms-tcl/tcl70-tk33-on-vms55.tar.Z
or
ftp://src.honeywell.com/pub/tcl70-tk33-on-vms55.tar.Z

	Gerald W. Lester (gwlester@cpu.com) says the following _should_ work.
If you installed the POSIX package on VMS (its free), then you should be 
able to configure and make tcl.  To access tcl you would have to do one 
of the following: 1) Use the POSIX shell, or 2) do a "psx tcl".
Tcl scripts would not execute directly from DCL; to execute a script foo.tcl
from DCL you would have to do "psx foo.tcl".
DISCLAIMER: I have not built any version of tcl under VMS POSIX, these
comments are based on other work I've done with VMS POSIX.

	Also (see "tcl-faq/part4"), the Tcl programs/packages catalog,
for the latest port locations.


E. AmigaDOS

	Karl Lehbauer <karl@sugar.NeoSoft.com> has indicated that
he started a port of Tcl 3.x to the Amiga.  He has a working
version, but is no longer working on it.  His version uses the
Amiga's shared libraries and implements the "send" command.
He wrote a MIDI file loader and player as well.  Contact him for
further details.  

	Ty Sarna <tsarna@endicor.com> has ported Tcl 6.x to the Amiga.  
He says:
> I've ported 3.3 and several 6.x versions to the Amiga, and it can be
> done in under and hour if you leave out the "Unix" functionality.
> However, "Unix" functionality includes things like file I/O!

	Another Amiga user, colas@opossum.inria.fr (Colas Nahaboo), mentioned
that using Amiga gcc and the PD X server DaggeX and Xlibs that a port of
Tk might be possible.

	hnm@hermes.bouw.tno.nl (Marco van der Heiden) has completed a port
to the Amiga, and suggests Amiga developers contact him by email.  

	Also (see "tcl-faq/part4"), the Tcl programs/packages catalog,
for the latest port locations.


F. NeXT

Gianmaria Bertanzon <gm@itnsun4.lii.unitn.it> reports:
> We are using tk3.2 on NeXT ( Motorola ) under NextStep 3.0 under X.
> The compilation was easy. (we do not remember precisely all the steps)

	Also (see "tcl-faq/part4"), the Tcl programs/packages catalog,
for the latest port locations.


G. Other

	A port to the Apple IIgs and GNO 1.1/GSOS environment is underway.


	A beta port of Tcl 7 has been done to VxWorks.
	You can find it at thor.atd.ucar.edu:~ftp/pub/vx/tclvx7.0.v2.tar.gz .

	Also (see "tcl-faq/part4"), the Tcl programs/packages catalog,
for the latest port locations.


------------------------------

From: FAQ General information
Subject: -IV- Other than C, what languages can talk to tcl/tk?

A. Shell
	There are at least two interfaces which are shell-like.  The
first is wish, which is a windowing shell like interface that is a part
of the Tk package.  The second is tcl, a line command interpreter that
is part of the Extended Tcl package.

B. C++
	Check out tcl++.h in Extended Tcl.  Based on an original
implementation by Parag Patel, it defines a Tcl interpreter class by
which Tcl interpreters can be created as objects under C++.

	Also, ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/tk3.2forC++.patch
is a patch that allows tk 3.2 main.c and other extension routines
to be compiled with a C++ compiler.  Thanks to Ken Yap <ken@syd.dit.csiro.au>
for this code.

	Mark Diekhans and Karl Lehenbauer have used this, in
combination with the handle facility in Extended Tcl, to build Tcl
commands around C++ classes.

	The Tcl handle facility provides a way to manage table entries
that can be referenced by a textual handle from Tcl code.  This is
provided for applications that need to create data structures in one
command, return a reference (i.e. pointer) to that particular data
structure and then access that data structure in other commands.  An
example application is file handles.

	A handle table was built containing pointers to the instances
of a class that were to be accessed from Tcl, say a class `foo_cl', and
then a "new" command defined that created an instance of that class and
returned a Tcl handle to it.  The handle could then passed among Tcl
commands that accessed each member function.  The handle is in effect
an explicit `this' pointer.

	For example:

     set obj [foo_cl::new]
     foo_cl::baz $obj "Hello world"
     foo_cl::delete $obj

It's not totally object-oriented, but it's still very usable.

C. Modula-3
	Norman Ramsey <elan.uucp!nr> says:
	A long time back, Eric Muller posted a Modula-3 interface to
the C Tcl library.  I wrote down a Modula-3/Tcl interface that used
Modula-3 types rather than C types, and that used objects to build
closures for commands.  I wrote part of the implementation but never
finished it.  I have mailed copies to carroll@udel.edu, who asked the
question, and I will post them if there seems to be general interest.

D. Eiffel
	stephan@cs.tu-berlin.de (Stephan Herrmann) says:
	... [the tclish package provides] the marriage of two very different
principles by means of combining two programming languages into a
hybrid program architecture.  

E. Ada
	dennis@dennis.cs.colorado.edu (Dennis Heimbigner) introduced
an adatcl package which gives Ada programmers access to Tcl interpreters.
See the catalog for details of the package.

F. Other

	Duncan Sinclair <sinclair@dcs.gla.ac.uk> has details of a hack
into wish.c some hooks for a Tk <-> any language system, and has been using 
it for communication with functional languages such as Haskell and Lazy ML.
A paper, plus sample code, is available by ftp from
ftp://ftp.dcs.gla.ac.uk/pub/glasgow-fp/authors/Duncan_Sinclair/fumx.* .


------------------------------

From: FAQ General information
Subject: -V- Is there a bibliography of material relating to these 
		programs?


A. The Tcl distribution 

	With the Tcl distribution there is a Postscript version of a Usenix
paper introducing Tcl.  With the Tk distribution, there is a Postscript
version of a Usenix paper introducing Tk.

Ousterhout, J.K., (1990) ``TCL: An Embeddable Command Language'', in
the Proceedings of the 1990 Winter USENIX Conference, pp 133-146.

Ousterhout, J.K., (1991) ``An X11 Toolkit Based on the TCL Language'',
in the Proceedings of the 1991 Winter USENIX Conference, pp 105-115.

Postscript file for introductory papers on Tcl and Tk are available as
the public FTP area on ftp.cs.berkeley.edu (Internet address
128.32.149.78).  Their address is:

ftp://ftp.cs.berkeley.edu/ucb/tcl/tclUsenix90.ps
ftp://ftp.cs.berkeley.edu/ucb/tcl/tkUsenix91.ps
ftp://ftp.cs.berkeley.edu/ucb/tcl/tkF10.ps

(The last of these files is the contents of Figure 10 of the Tk paper)

If you have trouble retrieving the papers via FTP or printing them,
send bmiller@cs.berkeley.edu your U.S. Mail address and he will mail
you paper copies.


B. The Expect distribution

	With the Expect distribution, there are several Postscript documents
available which have been published.

1. "Curing Those Uncontrollable Fits of Interaction", Don Libes, Proceedings
of the Summer 1990 USENIX Conference, Anaheim, CA, June 11-15, 1990.  

	This paper is discussion of implementation, philosophy, and design.  
	It's address is:

ftp://ftp.cme.nist.gov/pub/expect/seminal.ps.Z 

2. "Using expect to Automate System Administration Tasks", Don Libes, 
Proceedings of the 1990 USENIX Large Systems Administration Conference (LISA)
IV, Colorado Springs, CO, October 17-19, 1990.  

	This paper is discussion and examples, specifically aimed at system 
	administrators.  The address of this paper is:

ftp://ftp.cme.nist.gov/pub/expect/sysadm.ps.Z

3. "expect: Scripts for Controlling Interactive Programs", Don Libes, Computing
Systems, Vol. 4, No. 2, University of California Press Journals, 1991.

	A comprehensive paper of example scripts.  This paper's address is:

ftp://ftp.cme.nist.gov/pub/expect/scripts.ps.Z

4. "Regression Testing and Conformance Testing Interactive Programs",
Don Libes, Proceedings of the Summer 1992 USENIX Conference, San Antonio, CA,
June 8-12, 1992. 

	This paper discusses the application of expect to the verification
	of software.  This paper's address is:

ftp://ftp.cme.nist.gov/pub/expect/regress.ps.Z

5. "Kibitz - Connecting Multiple Interactive Programs Together",
Don Libes, Software - Practice & Experience, John Wiley & Sons, West
Susses, England, Vol. 23, No. 5, May 1993.

	This paper is a discussion of using Tcl and Expect to connect multiple
	interactive programs together.  This paper's address is:

ftp://ftp.cme.nist.gov/pub/expect/kibitz.ps.Z

6. "X Wrappers for Non-Graphic Interactive Programs", Don Libes,
draft for Xhibition 94.

	This paper discusses encapsulating standard command interfaces
into a graphical user interface.  This paper's address is:

ftp://ftp.cme.nist.gov/pub/expet/expectk.ps.Z

C. Miscellaneous other online materials

1. The ftp address for a FrameMaker MIF file containing a Quick Reference guide 
to Tcl is:

ftp://harbor.ecn.purdue.edu/pub/tcl/docs/QuickRef.tar.gz 

Many thanks to "Jeff Tranter" <Jeff.Tranter@software.mitel.com> for 
contributing it.

2. PostScript versions of the man pages were provided by 
"Adrian Ho" <adrianho@barkley.berkeley.edu>.  The addresses for these are:

ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tcl6.3.manps.tar.Z
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tclX6.2b.manps.tar.Z
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tk2.1.manps.tar.Z

3. An early draft of the Ousterhout text book was available on the net.

	The section dealing with writing Tcl scripts is:
ftp://ftp.cs.berkeley.edu/ucb/tcl/book.p1.ps.Z 

	The section dealing with writing Tcl scripts for Tk is:
ftp://ftp.cs.berkeley.edu/ucb/tcl/book.p2.ps.Z 

	The section dealing with writing Tcl applications in C is:
ftp://ftp.cs.berkeley.edu/ucb/tcl/book.p3.ps.Z 

	The section dealing with writing Tk widgets and geometry managers
in C is:
ftp://ftp.cs.berkeley.edu/ucb/tcl/book.p4.ps.Z 

The first two parts are about 130 pages in length and the third and fourth
parts are less than 70 pages in length each.  This is ONLY a draft and is not
permitted to be redistributed.

4. A series of PostScript slides used in a tutorial on Tcl and Tk at
the 1993 X Conference are available as:

ftp://ftp.cs.berkeley.edu/ucb/tcl/tut.tar.Z

5. A set of Postscript files collected for the Tcl 93 workshop proceedings
is available as:

ftp://harbor.ecn.purdue.edu/pub/tcl/workshop/tcl93-proceedings.tar.Z

	This file contains the following papers:

a. "A Debugger for Tcl Applications", by Don Libes, National Institute
of Standards and Technology.

	Describes a debugger for Tcl applications.

b. "A Compiler for the Tcl Language", by Adam Sah and Jon Blow, University
of California, Berkeley, CA.

	A discussion of the design issues for providing a compiler for the Tcl
	language.

c. "[incr tcl] - Object-Oriented Programming in TCL", by Michael J. McLennan,
AT&T Bell Laboratories, Allentown, PA.

	Describes a set of extensions for organizing Tcl procedures and
data into packages.

d. "CASTE: A class system for Tcl", by Michael S. Braverman, University of
California, Berkeley, CA.

	Introduces a structured object class extension for Tcl.

e. "Interfacing an Object-Oriented Database System from Tcl", by 
Dietmar Theobald, Forschungszentrum Informatik, Karlsruhe Germany

	A generic interface extension to an object-oriented database.

f. "Tcl Distributed Programming", by Brian C. Smith, Lawrence A. Rowe, and
Stephen C. Yen, University of California, Berkeley, CA.

	Introduces the Tcl-DP extension to Tcl.

g. "Cooperating Applications through Tcl/Tk and DCE", by David Richardson,
University of Michigan

	Description of integrating Tcl/Tk into Open Software Foundation's
Distributed Computing Environment.

h. "NeoSoft Whiteboard - A framework for Internet-based Collaboration",
by Karl Lehenbauer, Ellyn Mustard, NeoSoft, Inc., Brad Morrison,
Paranet, Inc.

	Describes a generic groupware framework using Tcl/Tk.

i. "Tcl/Tk as a Basis for Groupware", by Mark Roseman, University of Calgary,
Alberta Canada

	Why Tcl/Tk provides a good environment for groupware developers. 

j. "Tcl and Tk Use in the Artifact Based Collaboration System", by
John Menges and Mark Parris, University of North Carolina.

	Describes a collaboration system being built at UNC whose user
interfaces are based on Tk.

k. "Ak: An Audio Toolkit for Tcl/Tk", by Andrew C. Payne, Digital Equipment
Corporation, Cambridge Research Lab.

	Describes Ak, an audio extension for Tcl build on the AudioFile
System.

l. "A Tcl/Tk Continuous Media Player", by Brian C. Smith, Lawrence A. Rowe, and
Stephen C. Yen, University of California, Berkeley, CA.

	A Tk application that supports playback of live digital audio and
	video on a Unix workstation.

m. "Tcl in a High-Throughput Biological Lab", by Scott P. Hunicke-Smith &
Dan Mosedale, Stanford Yeast Genome Project

	Description of use of Tcl based control of a laboratory robot.

n. "Autonomous Knowledge Agents - How Agents use the Tool Command Language",
by Raymond W. Johnson, Lockheed Missiles and Space Corporation, Palo Alto,
CA.

	Descriptions of traits of a software agent and how one of these
traits led to the use of Tcl.

o. "Implementing a Visualization of an Industrial Productions Cell Using
Tcl/Tk", by Arthur Brauer, Claus Lewerentz, and Thomas Lindner,
Forschungszentrum Informatik, Karlsruhe Germany.

	Discussion of a complex animated simulation written using Tk/Tcl.

p. "Writing Object-oriented Tcl-based Systems using Objectify", by 
Wayne A. Christopher, University of California, Berkeley, CA.

	Describes Objectify, a facility for integrating C++ classes into
	Tcl-based systems.

q. "Use of Tcl/Tk in DTS, an Interactive Optimization and Scheduling System",
by Benjamin Fried, Aleks Gollu and Othar Hansson, Heuristicrats Research Inc.

	An abstract of the work being done with Tcl in a NASA scheduling
system.

r. "Embedding a Scheme Interpreter in the Tk Toolkit", by
Erick Gallesio, Valbonne, France.

	Describes STk, which is a Tk package with Scheme replacing Tcl.

s. "The Next, Best Thing in File Browsers", by Michael A. Harrison,
Thomas A. Phelps, University of California, Berkeley, CA.

	Describes NBT, an extended NeXTSTEP file selection box.

t. "Tcl/Tk - An Integration Vehicle for the Microwave/Millimeter-Wave
Pilot Sites (MMPS)", by Kevin B. Kenny, Brion D. Sarachan,
Robert N. Sum Jr., and Wayne H. Uejio, GE Corporate R&D.

	Describes developing wrappes for commercial vendor
applications like FrameMaker (R) and Xess (R).

u. "Generalising a File Manager into an Address Book and Other Things",
by J. D. Newmarch, University of Canberra, Australia

	Describing a redesign of an X file manager to allow the best
features of a command line environment and a graphical interface.

v. "Noosa: Execution Monitoring using Tcl and Tk", by Anthony M. Sloane,
University of Colorado.

	An overview of an event-based execution monitoring system.

w. "An Interactive Compiler Development System", by Gary S. Tyson,
Robert J. Shaw and Matthew K. Farrens, University of California, Davis, CA.

	Describes an interactive graphical optimizer.

6. A second set of Postscript files consisting primarily of overhead slides
is available as:

ftp://harbor.ecn.purdue.edu/pub/tcl/workshop/tcl93-proceedings2.tar.Z

	This file (tcl93-proceedings2) contains the following slides:

a. "Cooperating Applications through Tcl/Tk and DCE", by David Richardson,
University of Michigan.

b. "Ak An Audio Toolkit for Tcl & Tk", by Andrew Payne, Digital Equipment
Corporation, Cambridge Research Laboratory.

c. "Tcl Distributed Programming", by Brian C. Smith, Lawrence A. Rowe,
Stephen C. Yen, University of California at Berkeley.

d. "Supervisory Control Language - Applying Tcl to the Realtime Arena"
presentation by Computerized Processes Unlimited, Inc.

e. "Tcl / Tk as a Basis for Groupware" by Mark Roseman

	This file (tcl93-proceedings2) contains the PostScript for the paper:

f. "A Table Manager for Tk", by G. A. Howlett <George.A.Howlett@att.com>,
ATT.

	This file (tcl93-proceedings2) also contains Usenet postings by:

h.	/* ???? */
i.	/* ???? */
j.	/* ???? */
k.	/* ???? */

7. The Tcl Compiler (TC) Frequently Asked Questions by Adam Sah
<asah@cs.Berkeley.EDU> is a document describing TC, which is a work
in progress.  Contact Adam for details.

8. A compact yet detailed overview of Tcl, Tk and Xf is available thanks
to the graciousness of theobald@fzi.de (Dietmar Theobald) at:

ftp://ftp.fzi.de/pub/OBST/OBST3-3/psfiles/TclTk_notes.ps.Z
(compressed format) and
ftp://ftp.fzi.de/pub/OBST/OBST3-3/psfiles/TclTk_notes.ps.gz (gzip format)

9. Softcopy of an article about PhoneStation, a tool using Tk and Tcl, was
presented at the 1993 Winter USENIX Conference.

Uhler, Stephen A. (1993) ``PhoneStation, Moving the Telephone onto the 
Virtual Desktop'', in the Proceedings of the 1993 Winter USENIX Conference,
pp ??-??

A softcopy of the paper is available as 
ftp://bellcore.com/pub/PhoneStation/USENIX.ps 

10. VanAndel, J.H., 1993: ``Design of a New Radar Control and Data Acquisition 
System''.  Preprints, 26th Conference on Radar Meteorology, Norman, Oklahoma

The paper is available in postscript form via the experimental web server:
<a href="http://www.atd.ucar.edu/jva/RadarControl.AMS.ps"> Radar Control PS </a>

11. Mark A. Harrison <mharriso@utdallas.edu>  has written a Tk/Tcl
information sheet, providing an introductory look at why one might want to 
use Tcl and Tk.  Version 1.0 was posted to comp.lang.tcl as
<278ml0$457@news.utdallas.edu>.  Contact him for a copy.

12. Cedric Beust <beust@modja.inria.fr> has written a short article
giving guidelines on where to start when writing a Tcl extension.  You
may find it at ftp://avahi.inria.fr/tcl/writing-a-tcl-extension.ps .

13. Douglas Pan and Mark Linton <linton@marktwain.rad.sgi.com> have
written the paper ``Dish: A Dynamic Invocation Shell for Fresco''.
It is available at ftp://sgi.com/graphics/fresco/dish.ps.Z .  The FAQ
as well as some other papers are in ftp://sgi.com/graphics/fresco/ .
Fresco is an X Consortium project - non-members interested in contributing
to the effort should contact Mark Linton.

14. Michael Jipping, Hope College , (1993) ``Using Tcl as a Tool Talk
Encapsulation'', in the Sun User Group Eleventh Annual Conference and
Exhibition PROCEEDINGS, pp 161-174.  This details work done writing an
abstract extension to Tcl which enables one to encapsulate tools to
make them ToolTalk aware.

15. A WorldWideWeb (WWW) resource for Ada Tcl is available as:
http://www.cs.colorado.edu/homes/arcadia/public_html/adatcl.html

16. A WWW resource for the MBV Lab's Tcl/Tk support is:

http://cornea.mbvlab.wpafb.af.mil/tcl.html

17. A WWW resource for the HTCLtoTCL program is available at:

http://www.lbl.gov/~clarsen/clarsen.html

18. A WWW resource for describing the set of extra ServiceMail
Tcl scripts is available at:

http://keck.tamu.edu/cgi/staff/emailserver.html

19. A WWW resource describing the HTML to Tcl preprocessor is
available at:

http://www.lbl.gov/~clarsen/projects/htcl.html

20. A WWW resource discussing Tk/Tcl style issues is available at:

http://www.atd.ucar.edu/jva/TCL.style.html

21. A WWW resource discussing Visual Numerics PV-Wave with Tk/Tcl is
available at:

http://www.atd.ucar.edu/jva/rds/wave_tk.html

22. A set of WWW resources discussing the Fermilab's use of Tcl within
a massive data manipulation package can be found at:

http://fndauh.fnal.gov:8000/spectro/doc/www/spectro.home.html
http://fndauh.fnal.gov:8000/shiva/doc/www/shiva.home.html

as well as various pages underneath this set of homes.

23. A soft file containing notes on Tcl and quoting philosophy can be
found at ftp://harbor.ecn.purdue.edu/pub/tcl/docs/README.programmer.gz 

24. There are references to Tcl and Tk (and perhaps other Tcl based
interpreters) within the following WWW databases:

The Catalog of Free Compilers and Interpreters:
http://cui_www.unige.ch/freecomp

and
The Language List:
http://cui_www.unige.ch/langlist

25. The first Tcl 'home page' is now available via the WWW URL:

http://www.sco.com/IXI/of_interest/tcl/Tcl.html

Thanks to Mike Hopkirk for the time, energy and resources to make this
available.  Note that this page is also available for those behind a
firewall as:
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tclhtml.tar.gz


26. The home page for Jungle - the Tcl-based WWW server - is available
as:

http://catless.ncl.ac.uk/Programs/Jungle

27. The home page for Nautilus - the Tcl-based [incr tcl] browser -
is available at:

http://catless.ncl.ac.uk/Programs/Nautilus/

28. The home page for Zircon - the Tcl-based Internet Relay Communication
(IRC) browser - is available at:

http://catless.ncl.ac.uk/Programs/Zircon/

29. Documentation on the Tcl processing of WWW's server Common Gateway
Interface (known as CGI) can be found at:

http://www.lbl.gov/~clarsen/projects/htcl/http-proc-args.html

30. Mark Roseman <roseman@edm.isac.ca> has prepared a brief comparison
between Tcl/Tk and the Interviews C++ toolkit.  It is available via
email by contacting him.

31. Information about the SIMON Mosaic hotlist management tool can be
found at http://web.elec.qmw.ac.uk:12121/ .

32. Information about Fritz Heinrichmeyer's experimental Schematic SPICE
interface is available from http://ES-sun2.fernuni-hagen.de/editor.html .

33. Information about ical is now accessible from
http://clef.lcs.mit.edu/~sanjay/ical.html .

34. An attempt to provide various views on the lists of applications and
extensions available to the Tcl community can be found at the URL
http://web.cs.ualberta.ca/~wade/Auto/Tcl.html

35. The URL for a page describing threaded tknews is 
http://www.cis.ohio-state.edu/hypertext/people/mdm/tknews.html
showing what the next release should be like.

36. The URL for a Tk-based Karel the Robot project is
http://www.cis.ohio-state.edu/hypertext/people/mdm/karel.html

37. A Tk reference card can be found at:
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tkrefcard.tar.gz
This TeX and Postscript version of a Tk 3.3 card was provided by
Paul Raines <raines@bohr.physics.upenn.edu>.

38. A good document on Xauth is available at:
ftp://ph-meter.beckman.uiuc.edu/security/xsecurity.ps
or
ftp://ph-meter.beckman.uiuc.edu/security/xsecurity.txt

39. The documentation for the Xf command is available in European page format
as:
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/xf-doc.ps.gz
as well as United States page format as:
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/xf-doc-us.ps.gz

40. Vivek Khera <khera@cs.duke.edu> has written a primer on setting up your
environment for xauth (by default a requirement under Tk 3.3) in the
document:
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/Xauthority.gz

41. Wade Holst has begun a hypertext document pointing to all Tcl
applications that he can locate.  His URL is
http://web.cs.ualberta.ca/~wade/Auto/Tcl.html

42. A list of MPEG animations, done with Tcl scripts using TSIPP can
be found at: http://www.mcs.csuhayward.edu/tebo/Anims .


D. Published articles, books, and similarly available resources


1. Computer Shopper, V12 N12, page 862 had an article referencing Tickle, 
the shareware package under Macintosh System 7 which is based on Tcl.

2. MacWEEK, Sept 14, 1992, V6 N32, page 91(1), Enhancing text editors for
Mac developers.
This article is a product announcement for Alpha 5.0, the Macintosh
editor which incorporates Tcl.

3. Computer Language, V9 N7, page 76 had an article referencing Tcl in
a hardware/software testing package which talks to a remote machine via 
a proprietary interface card.

4. SunWorld, V5 N10, pages 95-96 had a article discussing Tcl, Tk and
expect.

5. UNIX REVIEW, V11 N4, April 1993, pages 93-94, Tcl, Tk, and friends
by Richard Morin.
The article, a part of "The Internet Notebook", mentions a little about
Tcl and Tk, where to find the sources, where to find the draft of the
book, and where to find the contributed software.

6. SunExpert, V4 N3, pages 32-36, by Richard Morin.  As part of Morin's
I/Opener series of articles, this is just a brief overview of Tcl and Tk.
It mentions some of the technical ideas behind Tcl and Tk, where to find
the Tcl source and mentions that the draft of the book is available on
ftp.cs.berkeley.edu.  A 'hello, world' 3 line wish script is really
all that is shown.

7. Libes, Don, "Obfuscated C and Other Mysteries", Wiley & Sons,
January 1993.

This book has a whole chapter on Tcl.  Aimed at the C programmer, it
describes how to effectively use Tcl from C applications.  Another
chapter is on Expect - a walk-through of some of the more interesting
code in Expect.  These chapters originally appeared as separate
articles in The C Users Journal, Vol. 8, No. 7, July 1990, and Vol. 9,
No. 1, 1991.  (Incidentally, the reason the book has such a peculiar
title is that it also contains explanations of the Obfuscated C Code
Contest winners.)

8.  IEEE Design & Test of Computers, June 1993, pages 46-54,
"RISE++: A Symbolic Environment for Scan-Based Testing" by Steve Vinoski.
An article describing a system called the Remote Interactive Scan
Environment (RISE++) that marries Tcl with RPC for the purpose of
testing remote computer systems.

9. The X Journal, March-April 1993, pages 74-81, "HYPERTOOLS
A revolution in GUI applications" (listed in the TOC as "Hypertools: A GUI
revolution") by John K. Ousterhout and Lawrence A. Rowe.

10. Proceedings 1993 Tcl/Tk Workshop, Berkeley, CA, June, 1993.  See above
for online version information concerning these proceedings.

11. iX (multiuser/multitasking magazine), September 1993,
pages 76-84 and 182-185.  Two articles written in the German language.
These concern the design (interpreter and library) of Tcl/Tk and its
connections with C++.  The articles say where to find the packages and
some associated tools (such as XF).  There are short examples on how to
write programs with Tcl/Tk (taken from the demo-directory of the
package) and examples on using XF.  Very informative.

12. Network Computing (CMP Publishing, Inc), November 15, 1993, pp. 99 
"Very Rich E-Mail".  References safe-tcl.

13. The Addison-Wesley Publishing Company's quarterly newsletter "Innovations"
dated Winter 93/94 contains an interview with John K. Ousterhout on pp 2,9,10.
It mentions the April 1994 release date, Dr. Ousterhout's background
at UCB and involvement in Sprite.  John gives a overview of what Tk and
Tcl are, what companies are using Tcl, where Tcl/Tk fits in relationship
to AWK, Perl, Motif, and X Windows (sic), mentions there are between 10,000
and 50,000 people developing applications in Tcl/Tk, discusses where in
the classroom the textbook fits, and gives an overview of John's view
of the future of Tcl/Tk.

Also on page 3 of the same newsletter is the overview of the book 
listing it as 512 pages and a list price of $36.75.

One can send email to pradeeps@aw.com (Pradeepa Siva) to request a copy
of the newsletter, or call him at Addison-Wesley Publishing Company
617/944-3700, ext 2940, or call Addison-Wesley directly to request
it at 800/238-9682.

14. EXE, Nov. 1993, V8 N6, p84(4), Ticklish X windows.
This is a tutorial as a part of a regular Unix column. It covers Tcl/Tk as a
scripting language for writing small X-Windows applications.

15. UNIX Review, March 1994, V12 N3, p87-90.  Tickled Pink, by
Kevin Richard and Eric F. Johnson.  This is part of the programming column
"CROSS THOUGHTS".

The authors attempt to provide a very brief taste for Tcl/Tk and to convey
the purposes for which they consider Tcl suited.  They provide a standard
example of "Hello, world" in Tcl, and also a version written in Motif/C.

There were quite a few surprisingly negative remarks in a column which
tried to be positive about Tcl/Tk.

16. iX, January 1994, pp 148-152, another German article about the
interpretative  class system that is a part of the GOOD graphics system.

17. The first text book dedicated to Tcl and Tk has been published.
The title is _Tcl and the Tk Toolkit_, by John K. Ousterhout.  The
publisher is Addison-Wesley, and it became available in April, 1994.
The ISBN for the book is 0-201-63337-X.  A note from the author about
the book:

"The Tcl book is more up-to-date than the drafts;  for example, the
draft of Part II predates the Tk 3.6 release, so some of the example
scripts don't work with the current Tk release, and the drafts contain
a number of bugs that have been fixed in the final book.  The book
also has more information about the individual widget classes than
the draft, an explanation of Tcl_AppInit, and a number of other
improvements.  Finally, it has an index."

If you cannot find it in your local bookstore, one place you can call
is Addison-Wesley Publishing Company at 800/822-6339.  It is paperback
and the reference price is $36.75.

Note that the examples from the book are available in one large file
as ftp://ftp.cs.berkeley.edu/ucb/tcl/book.examples.Z .

18. Walnut Creek CDROM has published the Tcl/Tk CDROM.  This 
is a snapshot of the ftp.cs.berkeley.edu and harbor.ecn.purdue.edu
archives, as well as the archives for comp.lang.tcl newsgroup.
The snapshot of the current CDROM is from early April, 1994.
The price is $39.95, plus shipping and handling.  Contact:
 
        Walnut Creek CDROM
        1547 Palos Verdes Mall, Suite 260
        Walnut Creek, CA  94596
 
        1 800 786-9907
        1 510 674-0783
        1 510 674-0821 FAX
 
        orders@cdrom.com

The disc is available for FREE to anyone that has contributed any of their
own work to the Sprite or Harbor Tcl archives.  Just email me your name,
address, and the name of the files(s) that you contributed.  Overseas
addresses are okay.
 

Additional bibliographic references are still being sought.


E. Training courses, materials, etc.


1. There have been, in the past, seminars at Usenix and the MIT X
conference taught by John Ousterhout on Tcl and Tk.  See above for the
slides from the most recent of these presentations.  Other conferences
are also mentioning Tcl and Tk in their announcements.  Recently the
Usenix Very High Level Language Conference mentioned Tcl.

2. NeoSoft Communications Services ( info@NeoSoft.com, (713) 684-5900 ,
9am - 4pm CDT M-F ) can teach introductory and advanced Tcl courses on
site or at their location in Houston, Texas.  A syllabus and pricing
information are available on request.  Please contact Ellyn Mustard at
(713) 684-5900 or via email to ellyn@neosoft.com for more details.

3. Computerized Processes Unlimited ( gwl@cpu.com, (504) 889-2784 
4200 S. I-10 Service Road, Suite #205, Metairie, LA 70001 )
has a combined Tcl/Tclx reference manual for sale.  It groups the commands
by chapter based on functionality and has an extensive index.  They
also offer courses on Tcl.  For instance:

1. Course Title:           Introduction to Programming in Tcl

Course Length:          2 Days

Course Format:          Course material is presented in a lecture format and
                        through a hands on laboratory using a
                        network of X terminals connected to a RISC workstation.
Course Description:     This course introduces the participant to programming
                        in Tcl/TclX.

                        Topics include:
                                - Variables
                                - Arrays
                                - Lists
                                - Keyed Lists
                                - Syntax
                                - Flow control
                                - Procedures
                                    o Creating
                                    o Invoking
                                    o Passing variables
                                    o Passing arrays
                                    o Passing lists
                                - Running programs from Tcl
                                - Communicating with child processes
                                - Signal handling
                                - Error processing
                                - Accessing system facilities
                                - Programming techniques
                                   o Using autoloading procedures
                                   o Proper use of quoting

Course Level:           Technical: Beginner to Intermediate

Prerequisites:          Use of vi or emacs editors
                        Exposure to programming concepts
                        Use of csh/ksh (not programming)

2. Course Title:           Building Graphical User Interfaces in Tk

Course Length:          2 Days

Course Format:          Course material is presented in a lecture format and
                        re-enforced through a hands on laboratory using a
                        network of X terminals connected to a RISC workstation.
Course Description:     This course introduces the participant to building
                        graphical user interfaces using Tcl/Tk.

                        Topics include:
                                - Background Concepts
                                - A tour of the widgets
                                - Adding Bindings
                                - Widget Class Bindings
                                - Geometry Managers
                                - Running programs from Tcl/Tk
                                - Communicating with child processes
                                - Writing widgets in Tcl/Tk
                                - Programming techniques
                                   o Proper use of quoting
                                - Interface Builders for Tk

Course Level:           Technical: Beginner to Intermediate

Prerequisites:          CPU's "Introduction to Programming in Tcl" course
                        or understanding and experience using Tcl

4. A physical copy of the Tcl / Tk distributed documentation is
available at the Northside Copy Central in Berkeley under the name "TCL" and
is titled "Tcl/Tk Documents".  Northside Copy Central is at 1862 Euclid 
with a phone of (510) 849-9600.  It costs approx. $15-$20 for the book in
a spiral bound, pink cover, clear plastic front and back format.


F.  Time-related seminars, conferences, sessions.


1. An upcoming USENIX symposium will be dealing with Perl, Tcl and other
similar languages.  Here is the information I have to date.

Symposium on Very High Level Languages
October 26-28, 1994
El Dorado Hotel
Santa Fe, New Mexico
Program Chair: Tom Christiansen (tchrist@usenix.org)
Extended abstracts due June 30, 1994

2. The 1994 Tcl/Tk Workshop and Seminars is scheduled to occur June
20-25, 1994, in New Orleans, LA.  The seminars will be occuring on June
20-22.  They will last from 1-3 days and the number of seminars and
attendance is limited due to space constraints.  Cost depends on the
seminar chosen.  The seminars being offered are:

Title:          Building Graphical User Interfaces in Tcl/TclX/Tk
Duration:       3 Days
Format:         Lecture/Lab
Cost:           $1,300.00
Provider:       Gerald W. Lester, Computerized Processes Unlimited
Min:            10 persons
Max:            20 persons
Dates:          June 20-22
 
Title:          Object-Oriented Programming with [incr Tcl]
Duration:       2 Day
Format:         Lecture Only
Cost:           $600.00
Provider:       Michael J. McLennan, ATT&T Bell Laboratories
Min:            15 persons
Max:            30 persons
Dates:          June 21-22
 
Registration fees are due by May 20, 1994.

The workshop will be help June 23-25 and consist of current work and
future direction sessions and attendance will be limited.  Registration
fees are $200 and are also due May 20, 1994.

For more details on dates, fees, seminar topics, hotel special rates, etc.
etc., contact gwl@cpu.com.


------------------------------

From: FAQ General information
Subject: -VI- Where do I report problems, bugs, or enhancements - or -
		What is comp.lang.tcl?

	There are two alternatives for reporting bugs and problems.
The first is the USENET news group news:comp.lang.tcl, an unmoderated USENET
newsgroup, created for the discussion of the Tcl programming language
and tools that embed it, such as the Tk toolkit for the X window
system, expect, and Extended Tcl.  Please note that postings of source
code to comp.lang.tcl do not get archived to harbor.ecn.purdue.edu - if
you want your code to be available from the User Contributions archive
you will need to make arrangements for someone to ftp it there.  See
elsewhere in the FAQ for more details on the archive site.

	The second would be to report problems, suggestions, new
ideas, etc. to the author.  Email to

ouster@cs.berkeley.edu (John Ousterhout)

will get comments to the author of Tcl and Tk - to find the email
address of the authors of other Tcl/Tk based programs,
(see "tcl-faq/part3"), (see "tcl-faq/part4"), and (see "tcl-faq/part5").

	At least one short term archive of comp.lang.tcl is available for 
anonymous ftp from ftp://csc.canberra.edu.au/pub/motif/comp.lang.tcl/ .


------------------------------

From: FAQ General information
VII. Are there any mailing lists covering topics related to Tcl/Tk?

	There are quite a number of mailing lists which cover topics
relating to the Tcl community.  As you begin one, if you will send
me information relating to the mailing list, I will add it below.

o	Basic Object Systems (BOS) 

	BOS is a SELF-like objects extension to Tcl.

	To join, send email to snl+bos-requests@cmu.edu and then
	send messages to snl+box@cmu.edu .

o	Dejagnu 

	This set of mailing lists are NOT maintained by Cygnus, the
	developers of Dejagnu.

	Dejagnu is an expect 5.x based package designed to be a framework
	for testing other software.  Test suites exist for various GNU
	products such as GDB and binutils.

	3 mailing lists - dejagnu-bugs, dejagnu-developers, and
	dejagnu-questions - have been created as a part of the
	yggdrasil.com listserv.

	To subscribe, send the line:

	subscribe dejagnu-bugs yourname@yoursite.com 

	to the email address listserv@yggdrasil.com where you put your
	own email address in place of yourname@yoursite.com and you put
	the name of the mailing list you wish to join after subscribe.

o	Comp.Lang.Tcl by email

		For those USENET-deprived individuals who are thus unable
	to read comp.lang.tcl, an email alternative is available.
	If you get comp.lang.tcl you do not need to sign up for this list.

		A service called "listserv" is being run out of CERN to forward
	comp.lang.tcl postings via e-mail to people who don't have direct
	access to the newsgroup.  In addition, they are archiving the newsgroup
	so you can retrieve old postings from them.  Here is some more
	information about the service:

	1) send a mail to listserv@cernvm.cern.ch with one line in the body:

	subscribe tcltk

	2) see how it works (you will receive the mail with instructions from
	   listserv);

	3) unsubscribe by a mail to listserv@cernvm.cern.ch with one line 
	   in the body:

	signoff tcltk

	4) again, signing off will be confirmed by listserv

o	Macintosh Tcl

		W. Ross Brown <ross@bnr.ca> previously maintained a
	mailing list for discussion of Tcl on the Macintosh.  This list
	is being phased out and users are encouraged to move to the new
	Macintosh Tcl Mailing list.  Here is it's announcement:

	---

		This Mailing List is devoted to the issues of Tcl on
	the Macintosh.  This includes (but not limited to) such
	topics as ports of Tcl to the Mac (MacTcl), Tcl questions
	relating only to the Mac (file I/O etc.), and porting of Tk to
	the Mac.

		A previous mailing list was supported by Ross Brown.
	Ross, however, had to manage the list by hand.  This list will
	be managed by listserv software and will hopefully be more
	active.  If you were previously on Ross's mailing list you are
	encouraged to switch to this new list.  Ross's mailing will be
	phased out shortly.

		To get more information about the mailing list send a message
	to "listserv@aic.lockheed.com" with the line "information mactcl" in
	the body of the message (the subject is ignored).

		To subscribe to the mailing list send a message to
	"listserv@aic.lockheed.com" with the line "subscribe mactcl Your Name"
	in the body of the message.  Substitute 'Your Name' with
	whatever your real name is.

		Otherwise, all posting of articles to the mailing list
	should be sent to mactcl@aic.lockheed.com.

o	Microsoft Windows port of Tk

		Simon Kenyon <simon@news.itc.icl.ie> announced in early
	April 1994 that the Information Technology Centre of Dublin, IRELAND
	was undertaking the port of Tk to MS-Windows.  He has set up the
	mstk mailing list for those interested in discussing it.

		If interested, send mail to mstk-list-request@itc.icl.ie
	to join the list and send comments and code to mstk@itc.icl.ie .

o	Ptolomy 

	Ptolomy is a simulation and prototyping system which uses tcl.
	To join the mailing list, send email to
	ptolemy-request@ohm.eecs.berkeley.edu .

o	safe-tcl 

	Safe-tcl is an extension to Tcl which one can use to process
	incoming email msgs as tcl scripts.

	To subscribe, send a msg to safe-tcl-request@uunet.uu.net and
	then further email msgs to safe-tcl@uunet.uu.net .


o	ServiceMail Toolkit 

	ServiceMail is a stand-alone email server written in C and Tcl.
	It takes incoming email requests and can perform tasks for the
	sender.

	To join the mailing list, send email to servicemail-help@eitech.com
	or subscribe to servicemail-help mailing list by sending a message
	to the "listserv subscribe servicemail-help your-real-name" service at
	"services@eitech.com".

o	tclMotif

	tclMotif is an extension which provides true Motif access to a
	Tcl program.

	This mailing list is maintained by listserv@ise.canberra.edu.au .
	To subscript, send mail to this address with the request

	subscribe tclMotif <your name>

	and you will receive a mail message acknowledging this.  From then
	on, send mail to tclMotif@ise.canberra.edu.au and it will be 
	distributed.

o	TeenyMUD

	TinyMUD is a multi-user dungeon program - allows multiple users
	to role play and converse in 'real time'.  It uses Tcl.

	To join the mailing list, contact
	teeny-list-request@fido.econlab.arizona.edu and then send your 
	mail to teeny-list@fido.econlab.arizona.edu .

o	tkWWW

	tkWWW is a tk-based WorldWideWeb client.  Contact
	tk-www-request@athena.mit.edu to join the mailing list and send
	your messages to tk-www@athena.mit.edu .

o	VMS Tcl/Tk

	Folks interested in Tcl on VMS in general can sign up to the
	vms-tcl@src.honeywell.com mailing list for more details.
	An archive for the mailing list is available at:
	ftp://src.honeywell.com/pub/vms-tcl/mailinglist.archive

o	WAFE

	WAFE is a Athena Widget front end which uses Tcl.  To join
	the wafe mailing list, contact wafe@wu-wien.ac.at .

o	XF 

	XF is a Graphical User Interface builder which generates Tk and
	Tcl code.  To subscribe to the xf mailing list,
	send a "sub xf-l Your Name" line to listserv@tubvm.cs.tu-berlin.de

o	X Protocol Engine Library (XPEL) 

	To join, send email to xpel-request@cs.unc.edu .

	XPEL uses Tcl for an embedded interpretor as well as uses
	safe-tcl in external monitor programs.


------------------------------

From: FAQ General information
Subject: -VII- Where can I find the FAQ and who do I contact for more 
		information about it?

	I am going to attempt to keep a copy of this file up to date on
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tcl-faq.p0[1-5].gz .  There
are mirrors of harbor.ecn.purdue.edu maintained elsewhere - for
instance, it appears that cs.huji.il, ftp.denet.dk, ftp.luth.se,
hplyot.obspm.fr, rs3.hrz.th-darmstadt.de, sunsite.unc.edu,
swdsrv.edvz.univie.ac.at all have some portion of the harbor archives
available.  Also, I will be posting it on a regular basis to at least
comp.lang.tcl, news.answers, and comp.answers.

	Many FAQs, including this one, are available on the archive
site ftp://rtfm.mit.edu/pub/usenet/news/answers/ .  The subdirectory and
name under which a FAQ is archived appears in the Archive-name line at
the top of the article.  For example, this part of the comp.lang.tcl
FAQ is archived as
ftp://rtfm.mit.edu/pub/usenet/news/answers/tcl-faq/part1.Z .
There is a Northern European archive for the FAQ at
ftp://src.doc.ic.ac.uk/usenet/news.answers/comp.lang.tcl/ .

	There is also a mail server from which you can obtain a copy of
the FAQ.  Send an email message to mail-server@rtfm.mit.edu or
archive-server@nic.switch.ch) with the word help in the body of the
message to find out how to use it.

	Also, this FAQ is available from within gopher (by looking at
any one of the gopher holes presenting news.answers or FAQ lists), from
WAIS servers (such as the comp.lang.tcl.src), from a number of sites
which have available via ftp archives of news.answers and comp.answers
(use archie to locate one of these sites available around the world),
and probably other resources as well.

	Other news.answers/FAQ archives (which carry some or all of the FAQs
in the rtfm.mit.edu archive), sorted by country, are:

Belgium
-------

  gopher                cc1.kuleuven.ac.be port 70
  anonymous FTP         cc1.kuleuven.ac.be:/anonymous.202
  mail-server           listserv@cc1.kuleuven.ac.be  get avail faqs

Canada
------

  gopher		jupiter.sun.csd.unb.ca port 70

France
------

  anonymous ftp		cnam.cnam.fr:/pub/FAQ
  		 	grasp1.univ-lyon1.fr:/pub/faq
  			grasp1.univ-lyon1.fr:/pub/faq-by-newsgroup
  gopher		gopher.univ-lyon1.fr, port 70
  mail server		listserver@grasp1.univ-lyon1.fr
  
Germany
-------

  anonymous ftp		ftp.Germany.EU.net:/pub/newsarchive/news.answers
			ftp.informatik.uni-muenchen.de:/pub/comp/usenet/news.answers
			ftp.uni-paderborn.de:/doc/FAQ
			ftp.saar.de:/pub/usenet/news.answers (local access only)
  gopher		gopher.Germany.EU.net, port 70.
  			gopher.uni-paderborn.de
  mail server		archive-server@Germany.EU.net
			ftp-mailer@informatik.tu-muenchen.de
			ftp-mail@uni-paderborn.de
  World Wide Web	http://www.Germany.EU.net/
  FSP			ftp.Germany.EU.net, port 2001
  gopher index		gopher://gopher.Germany.EU.net:70/1.archive
			gopher://gopher.uni-paderborn.de:70/0/Service/FTP

The Netherlands
---------------

  anonymous ftp		ftp.cs.ruu.nl:/pub/NEWS.ANSWERS
  		 	ftp.win.tue.nl:/pub/usenet/news.answers
  gopher		ftp.win.tue.nl, port 70
			gopher.win.tue.nl, port 70
  mail server		mail-server@cs.ruu.nl
  World Wide Web	http://www.cs.ruu.nl/pub/NEWS.ANSWERS/tcl-faq/part[1-5]

Switzerland
-----------

  anonymous ftp		nic.switch.ch:/info_service/usenet/periodic-postings
  anonymous UUCP	chx400:ftp/info_service/Usenet/periodic-postings
  mail server		archiver-server@nic.switch.ch
  telnet		nic.switch.ch, log in as "info"


Taiwan
------

  anonymous ftp		nctuccca.edu.tw:/USENET/FAQ

United States
-------------

  anonymous ftp		ftp.uu.net:/usenet
  World Wide Web	http://www.cis.ohio-state.edu/hypertext/faq/usenet/top.html

	The Uniform Resource Locator (URL) id for the FAQ is:

http://www.cis.ohio-state.edu/hypertext/faq/usenet/tcl-faq/top.html

The user can use a WorldWideWeb client to access the FAQ from this point.

	A WWW URL for the FAQ, where the FAQ is treated simply as one
long scrollable document (suitable for doing a search against, for
instance) is:

http://realsoon.wpi.edu:8080/faqs/tcl.FAQ

	A complete archive of the newsgroup is available from:

ftp://ftp.neosoft.com/pub/archive/usenet/comp/lang/tcl/

A good place to start looking through this archive is:
ftp://ftp.neosoft.com/pub/usenet-archives/comp/lang/tcl/+Index
which contains a list of all the filenames and subject lines of each of the
articles.

	Let me know when you find the FAQ in new and unusual locations
so I can update this resource guide!

	The Tcl commercial use FAQ is available as
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tcl-commercial-faq.gz
currently.  The author, Gerald W. Lester <gwl@cpu.com>, may in the future
expand the locations where you may find this.  It contains information
either about commercial products which incorporate Tcl as a part of them
or which teach about Tcl and Tk in some manner.
	If you have corrections, enhancements, modifications,
clarifications, suggestions, ideas, new questions, new answers to
questions which have never been asked, or something else that I have
not covered above, contact me at lvirden@cas.org.


------------------------------

End of comp.lang.tcl Frequently Asked Questions (1/5)
*****************************************************
Newsgroups: comp.lang.tcl,comp.answers,news.answers
Path: lvirden
From: lwv26@cas.org (Larry W. Virden)
Subject: FAQ: comp.lang.tcl Frequently Asked Questions (2/5)
	(Last updated: April 20, 1994)
Followup-To: comp.lang.tcl
Summary: A regular posting of the comp.lang.tcl Frequently Asked Questions 
	(FAQ) and their answers.  This is the second of five parts.
	This part covers the how-to questions and answers.
Originator: lvirden@cas.org
Keywords: tcl, expect, extended tcl, wish, tk
Sender: lvirden@cas.org
Reply-To: lvirden@cas.org (Larry W. Virden)
Approved: news-answers-request@MIT.Edu

Archive-name: tcl-faq/part2
Version: 5.0
Last-modified: April 20, 1994

Please do not be offended if I neglect to acknowledge your contribution
to this FAQ!  I sometimes forget to put an attribution in.  I especially
try to add them if it appears that there is further experimentation or
debugging being done though.

	For more information concerning Tcl (see "tcl-faq/part1"),
(see "tcl-faq/part3"), (see "tcl-faq/part4"), or (see "tcl-faq/part5").

Index of questions:

VIII. Questions on building Tcl and friends on your system:
	Q8A. Is there anywhere I can find help with the details of getting 
		Tcl to work on my machine?
	Q8B. Why does the link step says that some of the functions Tcl,
		needs are missing when I am trying to build it?
	Q8C. Has anyone built Tcl 6 on an RS/6000 AIX 3.1? 
	Q8D. Has anyone gotten Tcl to compile under HP-UX?
	Q8E. Has anyone gotten Tcl to compile under VMS?
	Q8F. What does it take to get Tcl to compile under SCO Unix?
	Q8G. Why do I get format and scan errors when I run tclTest
		(NeXT, AIX, etc.)?
	Q8H. Why do I get lots of errors under Irix 4.0.1 when I run
		tclTest?
	Q8I. Does anyone else have problems with Tcl on a Cray?
	Q8J. Does anyone know how to get Tk to run on a SparcBook or other
		laptop with a limited number of colors?
	Q8K. What does it take to get Tcl/Tk to compile on 386bsd/Linux 
		or other POSIX/ANSI C systems not already supported?
	Q8L. Why do I get a parse error in tkInit.c when I try to compile
		Tk on my Irix machine?
	Q8M. What do I need to do to install Tcl 7.x/Tk 3.x on NeXTSTEP 3.1?
	Q8N. Why can't I print the draft of the Tcl/Tk book?
	Q8O. Why am I getting errors on my SGI Indigo workstation?
	Q8P. How do I build expect on Solaris 2.3?
	Q8Q. How do I add BLT to a TclX/Tk ?

IX.  How, in Tcl, can I XXX:
	Q9A. get association lists or property lists?
	Q9B. call one proc with the multi parameter value returned by 
		another proc?
	Q9C. pass an array into a proc?
	Q9D. pipe output of a command back into a Tcl parsing procedure?
	Q9E. merge extended Tcl into other programs such as wish or expect?
	Q9F. delete a procedure from within a script?
	Q9G. get parray to recognize an array variable I have created
		via upvar?
	Q9H. get more than 7 digits of double precision?
	Q9I. grab the command line whenever a non-built-in call is made?
	Q9J. get or set an environment variable?
	Q9K. use numbers with leading zeroes?
	Q9L. find the command line arguments to my application?
	Q9M. put comments in my script, for example in a case statement?
	Q9N. redirect stdin or stdout safely, including binary data?
	Q9O. trap signals, and other more Unix specific functions?
	Q9P. get quoted strings to work the way I want?
	Q9Q. share procedures between multiple tcl applications?
	Q9R. get items inserted into a list?
	Q9S. perform a non-blocking read on a file identifier?
	Q9T. read and write from a pipe without locking up?

X.  How, in Tk, can I XXX:
	A. Question on starting Tk applications

	Q10.A.1. get my wish application to execute - I just get a wish prompt!
	Q10.A.2. ,using a machine with less than 8 bit color, run?
	Q10.A.3. set X11 resources for a wish application in an 
		app-defaults file?
	Q10.A.4. specify bitmap patterns on the command line instead of 
		as a file name?
	Q10.A.5. get a Motif user interface?
	Q10.A.6. get an OpenLook user interface?
	Q10.A.7. get Tk 3.3 to even start - I get security error messages.

	B. Questions on Tk applications and the keyboard

	Q10.B.1. change the default class bindings?
	Q10.B.2. delete a binding?
	Q10.B.3. change a binding while it is being executed?
	Q10.B.4. bind the arrow key on my Sun keyboard?
	Q10.B.5. get root's mouse bindings to work in my Tk application?

	C. Questions on Tk and X11 interactions

	Q10.C.1. get an application to also use libXt?
	Q10.C.2. change the X11 cursor?
	Q10.C.3. raise or lower a window?
	Q10.C.4. re-map a withdrawn window id?
	Q10.C.5. use Tk in a subwindow of a non-Tk X11 application?
	Q10.C.6. bind <Enter> and <Leave> to a frame containing other widgets?
	Q10.C.7. mix interactions between Xt and Tk/Tcl?

	D. Questions on Tk listboxes

	Q10.D.1. resize a listbox?
	Q10.D.2. select two items that are not adjacent in the listbox at 
		one time?
	Q10.D.3. select items in more than one Tk listbox at a time?
	Q10.D.4. avoid fractional white space at the end of a resizable listbox?

	E. Questions on Tk canvases

	Q10.E.1. get output from a Tk canvas?
	Q10.E.2. fill a canvas which is bounded by lines as opposed to a
		shape like a polygon, oval, etc.?
	Q10.E.3. raise/lower canvas window objects or draw graphics onto a 
		window object inside a canvas?
	Q10.E.4. detect when the canvas has been resized?

	F. Other questions

	Q10.F.1. get the name of my own interpreter?
	Q10.F.2. get -relief to work on my text widgets?
	Q10.F.3. create a scrollable window of buttons?
	Q10.F.4. pack a text widget so that it can be resized interactively?
	Q10.F.5. create a widget with an upper case name?
	Q10.F.6. create equal sized buttons?
	Q10.F.7. vertically stack radio buttons aligning regardless of font?
	Q10.F.8. initialize an entry widget with some text?

End of FAQ Index

----------------------------------------------------------------------

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8A- Is there anywhere I can find help with the details of 
		getting Tcl to work on my machine?

A8A. Glad you asked!  Look in the Tcl distribution for the file called
"porting.notes".  This will contain a collection of notes that various people
have provided about porting Tcl to various machines and operating systems.
There are also a file called "README" which should be read FIRST - before
doing anything else with the code (this should always be one's first
step with any package).  Finally, there is a "changes" file which details
what has changed since the last release - be sure to read this to see
what might need to change in your programs.

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8B- Why does the link step says that some of the functions Tcl,
		needs are missing when I am trying to build it?

A8B. Did you run the "config" program first, by doing a "csh ./config" or
equivalent?  Without doing this, things such as strtoul or strerror
are sometimes mentioned as missing.

Tcl includes equivalents for at least the following functions and include files
which may not be found on some systems:

dirent.h       limits.h	      stdlib.h	     string.h

opendir.c      strerror.c     strstr.c	     strtol.c	    strtoul.c

strtod.c

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8C- Has anyone built Tcl 6 on an RS/6000 AIX 3.1? 

A8C. See porting notes - especially the note about strtoul.

One user got Tcl to compile with a few minor source modifications
(for example, duplicate case statements for errno and signal symbols in 
tclUnixStr.c). 

A few other problems arose in the tests.  One is caused by AIX printf
not formatting %#x and %#o correctly when the value to be printed is
zero:  they print "0x0" and "00" instead of "0" and "0" respectively.
This was reported as not a problem in earlier releases.  No fixes have
been posted.

Finally, a problem occurs in open.test.  test 13.6 hangs because "cat"
on the RS6000 is unbuffered.  A workaround is to change the execution
of "cat" in open.test to do a "cat -u".

Dov Grobgeld <dov@menora.weizmann.ac.il> provided info on creating Tcl
and Tk shared libraries under AIX 3.1.5:

For Tcl:

cc -o tkshar.o *.o -bE:tclshar.exp -bM:SRE -berok -lX11 -lm
ar r libtclshr tclshar.o

For Tk:

cc -o tkshar.o *.o -bE:tkshar.exp -bM:SRE -berok -Ltcl -lX11 -lm -ltclshr
ar r libtkshr tkshar.o

where tckshar.exp and tkshar.exp had lists of the external functions.

There are also problems with fonts on AIX and the IBM.  A patch is needed
from IBM to fix the X server so that fonts are working

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8D- Has anyone gotten Tcl to compile under HP-UX?

A8D. See the porting notes.

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8E- Has anyone gotten Tcl to compile under VMS?

A8E. Information from jkimball@src.honeywell.com (John Kimball) on
May 4, 1993 was that he had gotten Tcl 6.7 and Tk 3.2 ported to VMS
5.5.  See the catalog for the file information.

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8F- What does it take to get Tcl to compile under SCO Unix?

A8F. Add a "#undef select" to tkEvent.c, and remove the reference to 
TK_EXCEPTION around line 460 of main.c.

Tk uses its own scheme for allocating the border colors for its 3D
widgets, which causes problems when running TK on a system with
"PseudoColor" display class, and a 16-cell colormap.

If you can't go to eight bitplanes, you can instead start the server
with a "-static" (Xsco) or "-analog" (Xsight) option, making the
display class become "StaticColor".  This makes the entire colormap
read-only, and it will return the color that most closely maps to the
desired color as possible.

This information is from Keith Amann <Keith_Amann@stortek.com>

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8G- Why do I get format and scan errors when I run tclTest
		(NeXT, AIX, etc.)?

A8G. That's a problem (scanf/printf) many systems seem to have.  Don't
worry too much about it - just don't use these 'advanced' features.  If
you're hacking C, you'll have the same problems.

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8H- Why do I get lots of errors under Irix 4.0.1 when I run
		tclTest?

A8H. There's a bug in the 4.0.1 optimizer that's fixed in 4.0.2.
Compile tclVar.c using -O0 (no optimization).

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8I- Does anyone else have problems with Tcl on a Cray?

A8I. See the porting notes for a set of changes mentioned.  Also,
Booker C. Bense <benseb@grumpy.sdsc.edu> reports that version 3.0.1.6
has some real problems with char pointers, causing Tcl to crash.  Using
version 3.0.2.1, things are much better, except for a minor formatting
problem and serious problems with scan.

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8J- Does anyone know how to get Tk to run on a SparcBook or other
		laptop with a limited number of colors?

A8J. On a SparcBook, if you start openwin (the OpenWindows server starting
command) as:

openwin -dev "/dev/fb staticvis"

you get a static visual color model that Tk copes with better than the
default.  Some things are ugly, but not as ugly as monochrome.

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8K- What does it take to get Tcl/Tk to compile on 386bsd/Linux 
		or other Posix/ANSI C systems not already supported?

A8K. Patches for 386BSD were posted to comp.lang.tcl back in Nov. 1992 to
alt.sources.  See one of the ftp archive sites for this group for them.
Basically, there were some setting of defines and a few places where 
const char * had to be used in place of char *.  

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8L- Why do I get a parse error in tkInit.c when I try to compile
		Tk on my Irix machine?

A8L. Jon Knight <J.P.Knight@loughborough.ac.uk> reports that the version of
Irix that he is using doesn't define a uid_t.  One needs to define one 
somewhere (or comment out the lines causing the problems) to get the compile
to continue.

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8M- What do I need to do to install Tcl 7.1/Tk 3.4 on NeXTSTEP 3.1?

A8M.  I have indicated in the past that this particular question seems
to generate controversy - I have replaced previous explanations with the
latest msg from someone who sounds authoritative...

From: Robert Nicholson <robert@steffi.demon.co.uk>

This is for TCL7.1 and TK3.4 

This is a variation on Thomas Funke's entry.

Installing TCL7.1 on NeXT
=========================

To install tcl7.1 on NeXTSTEP 3.1 you must:

- run configure with predefined CPP:
	type "sh" to run a Bourne shell.
	then type
    CPP='cc -E' ./configure

- edit Makefile:

  add tmpnam.o to COMPAT_OBJS:
  COMPAT_OBJS =      getcwd.o waitpid.o strtod.o tmpnam.o

At this point you probably want to rename the all calls to strtod and
tmpnam to something else in order to distinguish them from those that
are supplied in the NeXT libraries libsys_a.a.  You can do this by 
adding the following line to AC_FLAGS

	-Dstrtod=newstrtod -Dtmpnam=newtmpnam

and renaming the names of the definitions in the appropriate
compat/*.c files.

To check everything is working correctly open a tclsh 

% expr {"0" == "+"} 
0

Using the wrong strtod function will cause this test to return 1 which
is a serious error.  Ignore the precision errors.

Installing TK3.4 on NEXTSTEP 3.1
================================

There is a call to strtod in TK3.4 so you should link against
../tcl-7.1/compat/strtod.o and apply the -Dstrtod=newstrtod
to AC_FLAGS in Tk also.

Note:Tk's raise test will fail when running the tvtwm window manager.
Changing to either twm or even better fvwm ensures that this test will
succeed. 



------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8N- Why can't I print the draft of the Tcl/Tk book?

A8N.  From ouster@cs.Berkeley.EDU (John Ousterhout):

Here's my form letter that seems to explain most of the problems people
have had printing parts of the book:

Some old versions of the Transcript spooler software cannot properly
handle encapsulated Postscript files within another Postscript file
when they do page reversal.  They tend to garble the page structure of
the file, causing an error at the point of the first EPS file.  Part
II of the Tcl book has lots of EPS files embedded in it, one for
each screen dump.  If your printer cannot print this file I suggest
checking to see if page reversal is enabled for your printer.  If
so, try asking your local system wizard to disable it for you;  this
should allow the file to print.  Or, find some other way to dump the
Postscript file directly to the printer without going through the
spooling software (e.g. perhaps you can simply cat it to the printer's
serial port).

Others have suggested:

 The embedded pictures have CR as the line separator instead of LF and
 this may be causing the problem. Try translating them to LFs ...
 
   tr '\015' '\012' <book.p2.ps >fixedbook.p2.ps

and:

 This is not the original poster's problem but in countries using A4
 paper and on a particular printer, the Dataproducts LZR1260E, the frame
 size causes the printing to be stretched vertically. This happens with
 other Framemaker generated documents by the way. A PS interpreter bug
 no doubt. The fix is to edit the dimensions for A4 paper. This shell
 script does both fixes.

#!/bin/sh
cat $1 | tr '\015' '\012' | sed '/FMDOCUMENT$/s/612 792/595 842/'

------------------------------

From: -VIII- Questions on building Tcl and friends on your system
Subject: -Q8O- Why am I getting errors on my SGI Indigo workstation?

A8O. From Gordon Lack <gml4410@ggr.co.uk> we are told that
the SGI c compiler has some bugs with variable arguments.

tclVar.c must be compiled with -O0 at IRIX C 4.0.1 because of a
compiler bug with varargs.
 
   Done by placing specific rule into Makefile.
 
> # GGR SG needs -O0 for varargs at 4.0.1
>
> CC_SWITCHES0 =  -O0 -I. -I${SRC_DIR} ${AC_FLAGS} ${MATH_FLAGS} \
> ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \
> -DTCL_LIBRARY=\"${TCL_LIBRARY}\"
>
> tclVar.o: tclVar.c
>         $(CC) -c $(CC_SWITCHES0) $<

Peter NEELIN <neelin@pet.mni.mcgill.ca> also noted that:

I get tclX 7.3a to compile on an SGI (irix 4.0.5) with the following
changes to the Config.mk file:
 
71c71
< CFLAGS=-cckr -D__GNU_LIBRARY__
---
> #CFLAGS=
106,107c106,107
< TCL_PLUS_BUILD=TCL_PLUS
< CCPLUS=g++
---
> #TCL_PLUS_BUILD=TCL_PLUS
> CCPLUS=CC
191,193c191
< MAN_DIR_SEPARATOR=
< 
< LIBOBJS=strftime.o
---
> #MAN_DIR_SEPARATOR=.
 
The -D__GNU_LIBRARY solves the srandom problem and I think that the -cckr gets
around the prototype error with waitpid (it's crude, but it works).
I've forgotten why I needed the strftime.
 
If you want the version of Config.mk that worked for me, send me mail.

 
 
------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q8P- How do I build expect on Solaris 2.3?

A8P. From jra@hrcms.jazz.att.com (Jeff Abramson) we are told that,

> using either SunPro cc 2.0.1 or gcc 2.5.8 with
> no problems.  For SunPro I do:
>  
>         CC=cc ./configure --prefix=directory_of_your_choice
>         make CC=cc
>  
> For gcc I do:
>  
>         CC="gcc -fwritable-strings" ./configure \
>		--prefix=directory_of_your_choice
>        make CC="gcc -fwritable-strings"
 
------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q8Q- How do I add BLT to a TclX/Tk ?

A8Q. From gah@grenache.mhcnet.att.com (George A. Howlett) we get
the answer:

Instead of adding TclX to blt_wish, try it the other way.  Add
BLT to wishx.  It's pretty simple.
 
In the file ./tksrc/tkXAppInit.c, add the a call to the BLT
initialization routine right after line 116.
 
    if (TkX_Init(interp) == TCL_ERROR) {
        return TCL_ERROR;
    }
    if (Blt_Init(interp) != TCL_OK)) {
        return TCL_ERROR;
    }
 
Link wishx with libBLT.a and that's it.
 
Others recommend the tkmkmf or make-a-wish packages.
 
 
------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9A- association lists or property lists?

A9A. Use Extended Tcl arrays or keyed lists.

For example, if you did a:

keylset ttyFields ttyName tty1a
keylset ttyFields baudRate 57600
keylset ttyFields parity strip

And then an "echo $ttyFields", you'd get:

    {ttyName tty1a} {baudRate 57600} {parity strip}

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9B- call one proc with the multi parameter value returned by 
		another proc?

A9B. Assuming y requires multiple args and x returns multiple words, use 
	Tcl's eval command :

	eval y [x]

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9C- pass an array into a proc?

A9C. Use upvar rather than try to use global variables when possible.  If
the function is event driven, you are forced to use global variables.


# print elements of an array
proc show_array arrayName {
    upvar $arrayName myArray

    foreach element [array names myArray] {
       puts stdout "${arrayName}($element) =  $myArray($element)"
    }
}

set arval(0) zero
set arval(1) one
show_array arval


To return an array from a procedures, just take the array name in as an
argument, as above.  Any changes you make in the array will be made in
the parent's array as well.

Extended Tcl introduces a concept called keyed lists which are arrays
made out of lists of key-value pairs and can be passed by value to routines,
over networks, etc.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9D- pipe output of a command back into a Tcl parsing 
		procedure?

A9D. For example, to grep a pattern out of a range of files, one might
do:

karl@NeoSoft.com (Karl Lehenbauer) writes:

set files [glob /home/cole/stats/*]

proc parseInfo { site } {
   global files

#
# site is chosen from a listbox earlier
#
   set in [open [concat "|/usr/bin/grep $site $files"] r]

   while {[gets $in line]>-1} {
      puts stderr $line
   }
   catch {close $in}
}

One thing:  the matching strings are _not_ returned in directory order.

But what if I want to check the return code AND use the output of 
the command?  kennykb@dssv01.crd.ge.com (Kevin B. Kenny) writes:

if [catch {exec ls} data] {
        # The exec got an error, and $errorCode has its termination status
} else {
        # The exec succeeded
}
# In any case, `data' contains all the output from the child process.

Note that Karl Lehenbauer adds that errorCode will be a list containing
three elements, the string "CHILDSTATUS", the process ID of the child,
and the exit status of the child.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9E- merge extended Tcl into other programs such as wish or expect?

A9E. The latest version of extended Tcl, tclX 6.7c, has been enhanced to
make it easier to incorporate into applications.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9F- delete a procedure from within a script?

A9F. rename procedureName ""

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9G- get parray to recognize an array variable I have created
		via upvar?

A9G. Right now (June, 1992) upvar doesn't allow you to attach to an
individual element of an array.  This is considered a bug by 
Mr. Ousterhout and has been place on a bug list.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9H- get more than 7 digits of double precision ?

A9H. In Tcl 6.x, modify the tclExpr.c module to use %lf instead of %g.  In
Tcl 7.x, set the global variable tcl_precision instead.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9I- grab the command line whenever a non-built-in call is made?

A9I. The procedure "unknown" is called automatically with arguments 
containing the command and its arguments for any command that couldn't be 
found.  In fact, Tcl and Extended Tcl use this feature to provide demand
loaded commands, and even entire libraries.

So by modifying the unknown procedure you can provide your own extended
functionality, or even remove the demand loading capability if you so
desire.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9J- get or set an environment variable?

A9J. By using something like the following.

set olddisplay $env(DISPLAY)
set env(DISPLAY) unix:0

Thanks to "Joel Fine" <joel@cs.berkeley.edu> for the answer.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9K- use numbers with leading zeroes?

A9K. Dave Morriss was recently having problems because he was trying
to do something like:

set index [expr [exec date +%W]%[llength $pop_server_list]]

but during the 9th and 9th week of the year, he got errors - 08 and 09
are not valid octal numbers in Tcl.

Some of the solutions provided were:

From George A. Howlett <george.howlett@att.com>, we got:

set wknum [format "%g" [exec date +%W]]
set index [expr [exec $wknum%[llength $pop_server_list]]

From Fred Feirtag <feirtag@wave.nrl.navy.mil> :

set index [expr (1[exec date +%W]-100)%[llength $pop_server_list]]

From Dan R. Schenck <schendr@Texaco.COM>:

set index [expr [string trimleft [exec date +%W] 0]%[llength $pop_server_list]]

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9L- find the command line arguments to my application?

A9L.  If you are using extended Tcl or Expect, you will find the parameters in
the Tcl variable argv as a list.  Note that in extended Tcl, the name of 
the program is in the Tcl variable programName and NOT in argv[0].  Thanks to
brad@NeoSoft.com (Brad Morrison) and bachww@rtsg.mot.com (Bud Bach) for
this answer.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9M- put comments in my script, for example in a case statement?

A9M. You can't have comments where you have them.  Move the comments inside
of the "{" for the case that you want.  Your code should read:

case 1 {
  -1    {
        #
        # Cannot find information sought
        #
        exit 2
        }
   0    {
        #
        # Error in arguments
        #
        exit 1
        }
   default    {
        #
        # Desired information found
        #
        exit 0
        }
}

Thanks to gwlester@cpu.com (Gerald W. Lester).

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9N- redirect stdin or stdout safely, including binary data?

A9N. With Extended Tcl you can safely do stuff like:

        set infp [open "|compress -dc $fileName"]
        set outfp [open "|gzip -c $newFileName" w]

        copyfile $infp $outfp

Thanks to karl@NeoSoft.com (Karl Lehenbauer) for the code example.

------------------------------

From: -IX-  How, in Tcl, can I XXX:
Subject: -Q9O- trap signals, and other more Unix specific functions?

A9O. Extended Tcl offers many of these types of functions.  For instance,
extended Tcl has the 'signal' command:

        signal action siglist [command]

        where action is one of "default", "ignore", "error", "trap", "get",
        plus the POSIX "block" and "unblock" actions (available only on
        POSIX systems, of course).  Siglist is a list of either the symbolic
        or numeric Unix signal (the SIG prefix is optional).  Command is your
        error handler (or a simple {puts stdout "Don't press *that* key!"}  :-)

"trap" does what you expect, and I find "error" and "get" to be
extremely useful in interactive programs which demand keyboard
traversal.

Extended Tcl also has things like fork, etc.

Answer by brad@NeoSoft.com (Brad Morrison).

------------------------------

From: -X-  How, in Tcl, can I XXX:
Subject: -Q9P- get quoted strings to work the way I want?

A long article dealing with the issues can be found at
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/README.programmer

Here are some short answers:

Q. I'm trying to build up a command for later execution but am
having trouble with variable values that include whitespace
or special characters.

A. The safest way to build up commands is to use the list command
so that you can keep track of the list structure.  Avoid using
double quotes because you can end up with an extra trip through
the evaluator.  We'll illustrate this with a command to create
a button that prints out the label on the button when you click it.
    Wrong answer #1:
	button $myname -text $label -command "puts stdout $label"
    Why? because if $label has whitespace then the puts command will
	be passed the wrong number of arguments.  If $label has $ or [ ]
	characters, they will be interpreted instead of printed.
    Good answer #2:
	button $myname -text $label -command [list puts stdout $label]
    Why? because list will properly quote the value of $label

Q. I'm trying to build up a command for later execution but am
having trouble getting some variables to evaluate now, and some
to evaluate later when the command is run.

A. The cleanest way to do this is to define a procedure that hides
the use of the variables at run time, and then build up a call to
that procedure using the list command as described previously.  (You
can even define the procedure on the fly.  It will have global scope
even it if is created within another procedure.)
    Wrong answer #1:
	button $myname -text $label -command \
	    [list puts stdout $ArrayOfDynamicStuff($label)]
    Why? The array value will be substituted when the button is created,
	not later on when the button is clicked.  Also, note that the
	command is executed at the global scope, so it is not necessary
	to include a "global ArrayOfDynamicStuff" in the command.
    Wrong answer #2 (backquotes and list):
	button $myname -text $label -command \
	    [list puts stdout \$ArrayOfDynamicStuff($label)]
    Why? Here the list command and the backquote of $ are fighting with
	each other.  The command ends up being something like:
	    puts stdout {$ArrayOfDynamicStuff(foo)}
	which prevents the substitution of the value of the array element.
    Dubious answer #3 (backquotes and double-quotes):
	button $myname -text $label -command \
	    "puts stdout \$ArrayOfDynamicStuff($label)"
    Why? This only works if the value of $label has no special characters
	or whitespace.
    Clean answer #4 (proc):
	proc doit { i } {
	    global ArrayOfDynamicStuff
	    puts stdout $ArrayOfDynamicStuff($i)
	}
	button $myname -text $label -command [list doit $label]
    Why? Using little TCL procs for your button commands is a good habit
	because it eliminates most needs for fancy quoting, and it
	makes it easier to tweak the button command later on.

Q. I'm trying to pass along a variable number of args to another procedure
but I'm having trouble getting the $args to expand right.

A. Avoid using eval and double quotes because that results in
an extra trip through the interpreter.  The eval command will do
a concat of its arguments if there are more than one, so that
pretty much eliminates the need to group things with double quotes.
Let's extend the button example:
    Wrong answer #1:
	proc mybutton { myname label args } {
	    button $myname -text $label -command [list puts stdout $label] $args
	}
    Why? All the extra arguments to mybutton are grouped into one list element
	that is but into the value of $args.  However, the button command
	expects to see individual arguments, not a sub-list.
    Wrong answer #2:
	proc mybutton { myname label args } {
	    eval "button $myname -text $label -command [list puts stdout $label] $args"
	}
    Why? The double quotes allow expansion of $label as well as $args, so if
	$label has any whitespace, the button command will be malformed
    Good answer #3:
	proc mybutton { myname label args } {
	    set cmd {button $myname -text $label -command [list puts stdout $label]}
	    eval $cmd $args
	}
    Why? Eval will first concatenate its two arguments and then run the
	result through the interpreter.  Think of this as stripping off the
	outer curly braces from $cmd and $arg and making a single list
	with all the elements of both.  $label will be evaluated exactly
	once, so the puts command will remain good, and whatever went into
	args will also be processed exactly one time.

Q. Why do I get a syntax error in an if/while/for statement?
A. You may have written something like
	wish: set foo bar
	wish: if {$foo == bar} {puts stdout bar}
	syntax error in expression "$foo == bar"

in which bar is interpreted as neither a string nor a variable, since
strings as operands in expressions MUST be surrounded by double quotes
or braces. 

Change to
	wish: if {$foo == "bar"} {puts stdout bar}
or
	wish: if {$foo == {bar}} {puts stdout bar}

always in expressions, depending on if you want expansion performed or
not. 

Contributed by "Jesper Blommaskog" <d9jesper@dtek.chalmers.se>

------------------------------

From: -X-  How, in Tcl, can I XXX:
Subject: -Q9Q- share procedures between multiple tcl applications?

A9Q.  Rather than sourcing the files explicitly, build a tcl library:

Step 1.  Put the files in a common directory

Step 2.  Build the tclIndex for the "library".  I use a Makefile with
a convention like:

install.index:
        (cd ${DESTDIR}/tclscripts/lib; \
        echo 'source /usr/local/lib/tcl/init.tcl;\
	 auto_mkindex . *.tk' | tcl ; exit 0)

Step 3. Modify your tcl scripts to reference the library:

e.g.:

# local additions
lappend auto_path /usr/local/lib/tcl_local $env(RDS_TCL_SCRIPTS)/lib

Now, as soon as your script tried to reference a procedure in the library,
the "unknown" command autoloads the procedure for you.

Contributed by Joe VanAndel <vanandel@ncar.ucar.edu>


------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q9R- get items inserted into a list?

A9R.  A user asked why

	linsert $list 0 ..

did not result in .. being inserted into list.

d9jesper@dtek.chalmers.se (Jesper Blommaskog) replied:

When doing list operations other than lappend, you must save the
returned value. This applies to list, lindex, lrange, lreplace at
least.

In this example, you would perhaps want to do something like:

	set list [ linsert $list 0 .. ] 

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q9S- perform a non-blocking read on a file identifier?

A9S.  From Frank Smith <frank@arraysystems.nstn.ns.ca> we are told that
if you have Extended Tcl, you can

   read $fileId [fstat $fileId size]

This will read only the number of bytes currently available on 'fileId'
and consequently will not block.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q9T- read and write from a pipe without locking up?

A9T. The stdio package has an optimization for speed that buffers characters so 
that you can avoid un-necessary system calls. This isn't very good for 
interactive use so stdio changes it's behaviour if the file is a terminal. When 
you write to a pipe you are not writing to a terminal and so your output is 
buffered, similarly when the program at the other end of the pipe writes its 
response it is also buffered. The end result is the programs at both end of the 
pipe stall waiting for input. It is possible to force the buffers to be written 
using flush in Tcl and fflush() in C, often though, you don't have control over 
the program at the other end of the pipeline and in that case your only 
solution is to use a pseudo-teletype (pty). Unfortunately this isn't all that 
easy.

While this isn't directly supported in Tcl the spawn command in expect opens a 
pty and starts a command.


------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.A.1- get my wish application to execute - I just get a
		wish prompt!  Or I just get error msgs about permission
		denied, not found, etc.

A10.A.1. Most systems require a full pathname to the interpreter.  
So you cannot start a wish script out as 

#! wish -f

Likewise, many Unix systems have a maximum length of characters that you can
put on a #! line.  If you exceed this, you do not get the behaviour you
expect.  So do not try to put something like:

#! /projects/somethingbig/bin/sun4/wish -f

followed by your wish code.  Keep the lines short - under 32 characters is
recommended.

Finally, on some machines, white space after the -f causes a problem.  Be
sure that the -f are the last characters on the first line of the file.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.A.2- ,using a machine with less than 8 bit color, run?

A10.A.2. Tk doesn't behave very well with less than 8-bit color screens.  To
try to use it, find all the places in the Tk/wish source where 
DefaultDepthOfScreen is invoked to test the number of bit-planes.  Change all
of these to pretend there is just 1 bit-plane, or call a procedure which
monitors a Tcl variable so that it is configurable, and you should be okay.

Another alternative is to see if the server you are using has alternative
visual / color models, such as static visual, etc.  One of the alternatives
may allow Tk to work better.

Thanks to "Nathaniel Borenstein" <nsb@thumper.bellcore.com> for this info!

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.A.3- set X11 resources for a wish application in an 
		app-defaults file?

A10.A.3. Read the documentation for the option command.
Then you should consider something like the following - assume the program
name is xwf.

The following are two general purpose functions to put into a library:

# envVal envValName
#   Looks up the envValName environment variable and returns its
#   value, or {} if it does not exists
proc envVal {envValName} {
  global env
  if [info exists env($envValName)] {return $env($envValName)} {return {}}
}

# loadAppDefaults classNameList ?priority?
#   Searches for the app-default files corresponding to classNames in
#   the order specified by X Toolkit Intrinsics, and loads them with
#   the priority specified (default: startupFile).
proc loadAppDefaults {classNameList {priority startupFile}} {
  set filepath "[split [envVal XUSERFILESEARCHPATH] :] \
		[envVal XAPPLRESDIR] \
		[split [envVal XFILESEARCHPATH] :] \
		/usr/lib/X11"
  foreach i $classNameList {
    foreach j $filepath {
      if {[file exists $j/$i]} {
	option readfile $j/$i $priority; break
      }
    }
  }
}

# Now, here is what you would put into xwf:

option add Tk.BoldFont "*-lucida sans-Bold-R-Normal-*-100-*" widgetDefault
loadAppDefaults {xwf XWF} userDefault

This sets a program default, then load any defaults specified in the user's
default resources and finally any site or general app-defaults resource.  
Of course, you would want to add some xwf command line handling to allow 
the user to override things at execution time.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.A.4- specify bitmap patterns on the command line instead of 
		just as a file name?

A10.A.4. You can not, at least as of June, 1992.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.A.5- get a Motif user interface?

A10.A.5. Tk does not currently use the Xt toolkit, so a strict adherence
to Motif via the libXm.a routines is not possible.  However, the authors
of Tk prefer the Motif style of user interface, so you will find that Tk
makes quite an attempt to implement a Motif-like interface.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.A.6- get an OpenLook user interface?

A10.A.6. Unfortunately, Tk does not currently use either XView or Xt based
widgets in its user interface, so an OpenLook compliant (or even
similar) interface is probably not easily achievable in the near future.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.A.7- get Tk 3.3 to even start - I get security error messages.

A10.A.7.  Alternate forms of this question often mention that Tk 3.3 send
is broken, or ask how to use xauth.

Under Tk 3.3, the X11 xauth security mechanism is used.  While this
provides more security, it does require the user to do a bit more
setup.  The user needs to create an Xauthority file (typically
$HOME/.Xauthority) and then restart the X server with the
-auth argument, along with the name of the Xauthority file created.
Read the X11 documentation for your system for the details on how to
use xauth or comparable software to create the authority files needed.
An intro to xauth is available as
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/Xauthority .

Also note that you can configure Tk to not depend on xauth by modifying
the tk3.3/Makefile.in to comment out the following:

# To turn off the security checks that disallow incoming sends when
# the X server appears to be insecure, reverse the comments on the
# following lines:
#SECURITY_FLAGS =
SECURITY_FLAGS = -DTK_NO_SECURITY

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.B.1- change the default class bindings?

A10.B.1. All default class bindings for Tk widgets are initialized in
$tk_library/tk.tcl.  Use this file as a guide to implement new
bindings.  For instance, the following code duplicates Button 1's
drag-select facility in Button 3 for all listboxes:

bind Listbox <3> {%W select from [%W nearest %y]}
bind Listbox <B3-Motion> {%W select to [%W nearest %y]}

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.B.2- delete a binding?

A10.B.2. Give an empty-string command to the "bind" invocation.  For
example, to disable the Delete key in all entry fields:

	bind Entry <Delete> {}

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.B.3- change a binding while it is being executed?

A10.B.3. As of June, 1992, this was not a safe thing to do in Tk.  It was
put on the bug list by John Ousterhout to be fixed in a future version.

The solution for now is not to change the bindings, but to change
something in the code they execute.  For example, keep a state variable
that indicates which binding you'd like, but always have the binding
call a given procedure.  Then that procedure checks the variable and
executes one piece of code or another.  Or, you could just make the
binding's command "eval $cmd" and then change the variable "cmd"
depending on your application's state.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.B.4- bind the arrow key on my Sun keyboard?

A10.B.4. You have to call it <Left> rather than <R10>.  Under X11, keys are
referred to by their keysym.  One can use either xmodmap -pk or the xev
program to determine what the keysym a particular key on a keyboard is
currently generating.

If the keysym that is being used is not known by Tk, you may have to edit
its ks_names.h file.  There is a note in this file that indicates that
one should not edit it - but this is where the keysym must be for it to
be recognized.

Thanks to Wayne Christopher <faustus@CS.Berkeley.EDU> for this
note.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.B.5- get root's mouse bindings to work in my Tk application?

A10.B.5. Some window managers, such as mwm, define mouse button bindings
which cause Tk some problems.  Try saving off the window manager's startup
file (something like /.mwmrc for instance) and then copy in a startup
file from a login id that works.  Thanks to brad@NeoSoft.com (Brad Morrison)
for this invaluable tip!

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.C.1- get an application to also use libXt?

A10.C.1. Tk2.1 and Xt have different X connections, and XtAppNextEvent will
block is there is nothing coming from the X connection.  One way
of fixing this is get the connection number of Tk using

   ConnectionNumber(Tk_Display(tk_window));

and using XtAddInput to register this with the Xt event handler.  The
callback procedure for XtAddInput wrapper procedure that runs
Tk_OneEvent(1).  There might be problems with Tk file sources which
aren't registered with Xt.

Thanks to joe@astro.as.utexas.edu (Joe Wang) for this information.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.C.2- change the X11 cursor?

A10.C.2. Here is a tip from mgc@cray.com (M. G. Christenson).

Look at /usr/include/X11/cursorfont.h for a list of available cursors.
You can use the names in there by removing the 'XC_'.  

Here's a little proc I use to make my entire application go 'busy'
while it's doing something. Just call it with the commands you want to
execute, and the watch cursor will be displayed for the time it takes
the commands to complete.  Note that any new windows will have their
normal cursor.

proc busy {cmds} {
    global errorInfo

    set busy {.app .root}
    set list [winfo children .]
    while {$list != ""} {
	set next {}
	foreach w $list {
	    set class [winfo class $w]
	    set cursor [lindex [$w config -cursor] 4]
	    if {[winfo toplevel $w] == $w || $cursor != ""} {
		lappend busy [list $w $cursor]
	    }
	    set next [concat $next [winfo children $w]]
	}
	set list $next
    }

    foreach w $busy {
	catch {[lindex $w 0] config -cursor watch}
    }

    update idletasks

    set error [catch {uplevel eval [list $cmds]} result]
    set ei $errorInfo

    foreach w $busy {
	catch {[lindex $w 0] config -cursor [lindex $w 1]}
    }

    if $error {
	error $result $ei
    } else {
	return $result
    }
}

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.C.3- raise or lower a window?

A10.C.3. This is on the (semi-infinite) list of things to be done in the future.
If you have the time, please go ahead and add it and submit the code and all
will be grateful.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.C.4- re-map a withdrawn window id?

A10.C.4. Use wm deiconify <windowid>.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.C.5- use Tk in a subwindow of a non-Tk X11 application?

A10.C.5. From faustus@CS.Berkeley.EDU (Wayne A. Christopher):

[C]reate the Tk toplevel window but don't map it (wm withdraw).  Then
re-parent the window to be a subwindow of your other one and then map
it.  I have done this when the Tk application is a separate process,
but if it's the same process I think you will get into trouble with the
event loop, since each toolkit wants control.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.C.6- bind <Enter> and <Leave> to a frame containing 
	other widgets?

A10.C.6. From John Ousterhout, ouster@cs.Berkeley.EDU):

Each <Enter> or <Leave> event has a "detail" field, which you can access
from bindings with "%d".  If the detail is "NotifyInferior" it means the
pointer has moved into or out of a child window (so it's really still in
the area of the window receiving the event).  You should be able to check
the detail in your scripts and ignore events with a detail of NotifyInferior.
Check the Xlib documentation for Enter/Leave events for complete
information on the detail field.


------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.C.7- mix interactions between Xt and Tk/Tcl?

A10.C.7.

[From YIP Chi Lap [Beta] <h9118101@hkuxa.hku.hk> ]
	I have come up with a CPU hogging polling loop that
works (till now) for my application which not much
direct interaction between a Tk window and an Xt window is made.
(e.g., it won't draw something on a Tk window by a Xt-dispatched routine)

  XEvent xevent;
  for (;;)
  {
    if (XtAppPending(appcontext))
    {
      XtAppNextEvent(appcontext,&xevent);
      XtDispatchEvent(&xevent);
    }
    Tk_DoOneEvent(TK_DONT_WAIT);
  }

[ From David C Mudie <mudie@radon.eecs.berkeley.edu> ]
	We use the main event loop below.  The basic idea
is to watch for events arriving from either the Xt server
connection or the Tk server connection and then call
the library dispatchers.

	The code fragment below will need to be cleaned up for
your usage; there are some missing include statements
and global declarations buried elsewhere in the file.

/* Allow Tcl/Tk and Xt to work at the same time. */
void tkGo(void)
{
  extern Widget topLevel;
  int width = ulimit(4, -1);
  fd_set readfds;
  struct timeval timeout;
  int nfds;
  int tkfd = ConnectionNumber(Tk_Display(mainWindow));
  int xtfd = ConnectionNumber(XtDisplay(topLevel));

  Tcl_VarEval(interp, "update", NULL);
  while (1) {

    /* Select on X server connections to wait for event. */
    /* Timeout every half second to allow processing of non-X events */

    FD_ZERO(&readfds);
    FD_SET(tkfd, &readfds);
    FD_SET(xtfd, &readfds);
    timeout.tv_sec = 0;
    timeout.tv_usec = 500000;

    nfds = select(width, &readfds, NULL, NULL, &timeout);
    if (nfds < 0 && errno != EINTR) {
      perror("select");
    } else if (nfds == 0) {
      /* printf("timeout\n"); */
    }

    while (XtPending()) {
      XtProcessEvent(XtIMAll);
    }

    while (Tk_DoOneEvent(1)) {
      /* do nothing */
    }
  
    if (mainWindow == NULL) {
//      Tcl_DeleteInterp(interp);
//      Tcl_DStringFree(&command);
      Tcl_Eval(interp, "exit");
      return;
    }
  }
}

[ From Davide Frisoni <frisoni@faw.uni-ulm.de> ]
	One may use Xt properties to communicate between different
applications.


------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.D.1- resize a listbox?

A10.D.1. Use wm min/maxsize - in a uniform manner.  Here is a resizable listbox:

        #!/usr/local/bin/wish -f
        wm minsize . 20 20
        wm maxsize . 1152 900
        pack append . [listbox .l -borderwidth 2 -relief raised] {expand fill}

Doing the same with the text widget brings its resizing under control too.

Thanks to "John C Ellson" <ellson@ontap.att.com).

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.D.2- select two items that are not adjacent in the listbox at 
		one time?

A10.D.2.  See Marc R. Ewing's Listbox.patch for a way to modify Tk to allow
selection of non-contiguous entries.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.D.3- select items in more than one Tk listbox at a time?

A10.D.3. The default for Tk's listbox widget exports its selection as the
X selection.  There can only be one of these at a time.

To turn off this behavior in Tk, use the -exportselection false when
you create the listbox.  Or, use the

option add *Listbox.exportselection false

command in the beginning of your script.

Thanks to David Herron <david@davids.mmdf.com> for this tip.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.D.4- avoid fractional white space at the end of a resizable
		listbox?

A10.D.4. First, let's state the problem more clearly. I want to make a
resizable listbox and I don't want to constrain it by setting a
minimum size. So I pack it with fill expand, I use it to set the grid
(so that resizing the window always gives me whole lines) and I set an
initial geometry of 1x1 to override the default. However what I get
is... (run the code below for a demo and try to resize)

listbox .l -geom 1x1 -setgrid 1 -yscrollcommand ".s set" -relief sunken -bd 2
scrollbar .s -command ".l yview"
pack .s -side right -fill y
pack .l -side top -fill both -expand 1
.l insert end one two three four five six seven eight nine ten "THE END"

...a situation where the partially filled listbox has a blank
half-line at the bottom even if there are more items in the list. This
is very confusing because it fools the user into thinking that there
is nothing else beyond what's visible. Why does it happen?

Now for the answer.
	Look at the window as it is created, before the resizing. See that
poor, tiny little scrollbar squeezed in that microscopic window? It,
too, requests a minimum size, and it so happens that the starting
geometry for the listbox (i.e. the situation referred to as "1x1")
receives some free fractional space at the bottom. And you never get
rid of it, since the resizing is constrained to be in whole
characters.

The thing to do is to define the initial layout in such a way that the
widget that has -setgrid actually displays an integer number of lines
and columns. In the above example, setting -geom 1x2 does the trick.

Thanks to Frank Stajano <fms@cam-orl.co.uk> for this tip.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.E.1- get output from a Tk canvas?

A10.E.1. The latest Tk has a save suboption on canvas which allows one
to create a file describing the canvas.  The default output is Encapsulated
Postscript, but there is an xpm3 suboption as well.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.E.2- fill a canvas which is bounded by lines as opposed to a
		shape like a polygon, oval, etc.?

A10.E.2. No, you have to at least use a polygon if you want to fill an area
bounded by some lines.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.E.3- raise/lower canvas window objects or draw graphics onto a 
		window object inside a canvas?

A10.E.3. You can't yet. 

"Jesper Blommaskog" <d9jesper@dtek.chalmers.se>.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.E.4- detect when the canvas has been resized?

A10.E.4. From Nathaniel Pryce <np@hpl.hp.co.uk>:

> I have a window with a canvas containing some stuff that logically
> fills the canvas (say, a chess board or a map of the world). I want
> this toplevel window to be resizable and of course, when the win is
> resized, I want the stuff inside the canvas to be scaled
> accordingly. Now, I can manage the scaling of the stuff, but what
> I'm having trouble with is DETECTING that I should do it. How can I
> be notified that the window has been resized?

Nat's answer is:

You need to bind a command to the Configure event, like this:

	proc config {w h} {
	   puts stdout ".canvas - width = $w, height = $h"
	}

	bind .canvas <Configure> "config %w %h"


.canvas - width = 224, height = 251
.canvas - width = 224, height = 151
.canvas - width = 224, height = 243
# and so forth

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.1- get the name of my own interpreter?

A10.F.1. george.howlett@att.com (George A. Howlett) points us to the winfo manual
page - winfo name . gets the name of the current application.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.2- get -relief to work on my text widgets?

A10.F.2. From Owen Rees <rtor@ansa.co.uk>, we find out that we must:

"[m]ake the border width non-zero as in"

   text .t -width 20 -height 20 -relief sunken -borderwidth 4

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.3- create a scrollable window of buttons?

A10.F.3. There are at least two ways to do this.  First, there is a hypertext
widget that one can get from the Tcl User Contributed Code Archive -
(see "tcl-faq/part4") and (see "tcl-faq/part5") for details -
 which provides such a facility.

And here is some sample code from 
"Michael Moore" <mdm@stegosaur.cis.ohio-state.edu> which shows a way to 
do this using just Tk.

#! /bin/wish -f
#
# This demonstrates how to create a scrollable canvas with multiple
# buttons.
#
# Author : Michael Moore
# Date   : November 17, 1992
#

#
# This procedure obtains all the items with the tag "active"
# and prints out their ids.

proc multi_action {} {
    set list [.frame.canvas find withtag "active"]
    puts stdout "Active Item Ids : "
    foreach item $list {
	puts stdout $item
    }
}

# 
# This simulates the toggling of a command button...
# Note that it only works on a color display as is right now
# but the principle is the same for b&w screens.
# 
proc multi_activate {num id} {
    
    set tags [.frame.canvas gettags $id]
    if {[lsearch $tags "active"] != -1} {
	.frame.canvas dtag $id "active"
	.frame.canvas.button$num configure \
	    -background "#060" \
	    -activebackground "#080" 
    } else {
	.frame.canvas addtag "active" withtag $id
	.frame.canvas.button$num configure \
	    -background "#600" \
	    -activebackground "#800"
    }
} 

proc setup {} {
     frame .frame

     scrollbar .frame.scroll \
         -command ".frame.canvas yview" \
         -relief raised

     canvas .frame.canvas \
         -yscroll ".frame.scroll set" \
         -scrollregion {0 0 0 650} \
         -relief raised \
	 -confine false \
	 -scrollincrement 25

     pack append .frame \
         .frame.scroll    {left frame center filly} \
         .frame.canvas    {left frame center fillx filly}

     pack append .\
         .frame   {left frame center fillx filly}

     button .frame.canvas.action  \
         -relief raised \
         -text "Action" \
	 -command "multi_action"
     .frame.canvas create window 1 25 \
	 -anchor w \
         -window .frame.canvas.action
     for {set i 2} {$i < 26} {incr i} {
	 button .frame.canvas.button$i  \
	    -relief raised \
	    -background "#060" \
	    -foreground wheat \
	    -activebackground "#080" \
	    -activeforeground wheat \
	    -text "Button $i" 
	 set id [.frame.canvas create window 1 [expr $i*25] \
	    -anchor w \
	    -window .frame.canvas.button$i]
	 .frame.canvas.button$i configure \
	    -command "multi_activate $i $id"
    }
}

setup

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.4- pack a text widget so that it can be resized interactively?

A10.F.4. From Spencer W. Thomas <spencer@med.umich.edu> we find that we need to:

wm minsize . 0 0
text .text
pack append . .text {fill expand}

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.5- create a widget with an upper case name?

A10.F.5. During a recent revision of Tk, things were changed so that names
beginning with a capital letter are reserved for class names.  Specific
instances of widgets must begin with a lower case letter.  This enables
X11 resource definitions to distinguish between a class and instance.

------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.6- create equal sized buttons?

A10.F.6. Recently, Micael Salmon <etxmesa@eos.ericsson.se> posted:

In article <1993Jun23.065417.4302@ericsson.se>, I write:
|> I am currently working on yet another tn3270 emulator and I have run
|> into a problem with creating equal sized buttons. I have created an
|> array of buttons for PF and cursor keys and I would now like to make
|> them all the same size. Arranging them into columns was not
|> a problem but when I add bitmaps the buttons lose their horizontal
|> alignment. What I tried was to read the height and width of the buttons
|> using winfo, determine the largest and then use pads to force them to
|> be the same size, this doesn't seem to work. The technique of using
|> pre-set height and width doesn't seem applicable when using a mixture
|> of bitmaps and text as the size in pixels of a text button is font
|> dependent. All suggestions welcome.

Jim Wight <J.K.Wight@newcastle.ac.uk> suggested using reqheight and reqwidth
and then specifying padx and pady in the pack command for each button.
Jim says:
I think it only fair to point out that it was Tuomas J Lukka
<lukka@klaava.Helsinki.FI> who suggested the use of reqwidth and reqheight when I asked how to get over the deficiencies in my first attempt at a solution
that I posted to this group.

Since you're all agog I might as well post the final solution (more or less)
that I mailed to Michael.

frame .frame1
frame .frame2
button .frame1.a -text "pretty long button text"
button .frame1.b -text "short one"
button .frame2.c -bitmap "@/usr/include/X11/bitmaps/xlogo32"
button .frame2.d -text "tiny"

set long [winfo reqwidth .frame1.a]
set short [winfo reqwidth .frame1.b]
set medium [winfo reqwidth .frame2.c]
set tiny [winfo reqwidth .frame2.d]
set pady [expr [winfo reqheight .frame2.c]-[winfo reqheight .frame2.d]]

pack append .frame1 .frame1.a "filly pady $pady"
pack append .frame1 .frame1.b "fillx padx [expr $long-$short] filly pady $pady"pack append .frame2 .frame2.c "fillx padx [expr $long-$medium] filly"
pack append .frame2 .frame2.d "fillx padx [expr $long-$tiny] filly pady $pady"
pack append . .frame1 {left} .frame2 {left}


------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.7- vertically stack radio buttons aligning regardless of font?

A10.F.7.  Till Brychcy <brychcy@informatik.tu-muenchen.de> provides
the following example:


	radiobutton .times -text Times -anchor w
	radiobutton .helvetica -text Helvetica -anchor w
	radiobutton .courier -text Courier -anchor w
	pack .times .helvetica .courier -side top -fill x

Note that you are using anchor west in the widgets themselves, and not in
the packer.  This lets the packer produce full width buttons.


------------------------------

From: -X-  How, in Tk, can I XXX:
Subject: -Q10.F.8- initialize an entry widget with some text?

A10.F.8.  kesch@kappco.kapp-coburg.de (Peter Kesch) provides us with
one example:

set default "foobar"
entry .foo -width 25 -state disabled -textvariable default


------------------------------


End of comp.lang.tcl Frequently Asked Questions (2/5)
*****************************************************
Newsgroups: comp.lang.tcl,comp.answers,news.answers
Path: lvirden
From: lwv26@cas.org (Larry W. Virden)
Subject: FAQ: comp.lang.tcl Frequently Asked Questions (3/5)
	(Last updated: April 20, 1994)
Followup-To: comp.lang.tcl
Summary: A regular posting of the comp.lang.tcl Frequently Asked Questions
	(FAQ) and their answers.  This is the third of five parts.
	This part is a catalog of miscellaneous Tcl-based items.
Originator: lvirden@cas.org
Keywords: tcl, expect, extended tcl, wish, tk
Sender: lvirden@cas.org
Reply-To: lvirden@cas.org (Larry W. Virden)
Approved: news-answers-request@MIT.Edu

Archive-name: tcl-faq/part3
Version: 5.0
Last-modified: April 20, 1994

	For more information concerning Tcl (see "tcl-faq/part1"),
(see "tcl-faq/part2"), (see "tcl-faq/part4") or (see "tcl-faq/part5").

Index of questions:

XI. Where can I get these packages?
	A. Retrieving Tcl and Tk
	B. Accessing the Tcl/Tk User Contributions Archive
	C. Expect available via e-mail.
	D. EMACS modes for Tcl
	E. The tk toolbox project
	F. [tv]grind definitions for tcl/tk/expect
	G. BNF style notation for Tcl
	H. Tk Quick Reference Card
	I. Hilit 19 Tcl mode
	J. HTML versions of Tcl man pages and FAQ.

End of FAQ Index

----------------------------------------------------------------------

------------------------------

From: FAQ Tcl/Tk Package Catalog
Subject: -XI- Where can I get these packages?

The "home site" for Tcl on the Internet is ftp.cs.berkeley.edu.

Tcl and Extended Tcl were posted to comp.sources.misc, appearing
In volume 25 and then Tcl appeared again in volume 26 and can be found at
most comp.sources.misc archive sites in the tcl and tclx directories.
These are quite old versions actually, but are still usable.

a. Tcl	- available on ftp.cs.berkeley.edu and harbor.ecn.purdue.edu
b. Tk	- available on ftp.cs.berkeley.edu and harbor.ecn.purdue.edu
c. Extended Tcl - available on ftp.cs.berkeley.edu and harbor.ecn.purdue.edu
	Note that currently the beta version of Extended Tcl is only
	available on harbor.ecn.purdue.edu.

The IP address for harbor.ecn.purdue.edu is 128.46.128.76 .

Other sites which either mirror the Tcl/Tk submissions or have special
versions are:

ftp://coma.cs.tu-berlin.de/pub/tcl/
ftp://ftp.cs.columbia.edu/pub/archives/tcl/ <- shadow of harbor, etc.
ftp://ftp.funet.fi/pub/languages/tcl/
ftp://ftp.ibp.fr/pub/tcl/		<- shadow of harbor and expect
ftp://ftp.uu.net/languages/tcl/	<- shadow of ftp.cs only
ftp://ftp.x.org/contrib/tcl*/
ftp://ftp.x.org/contrib/tk*/
ftp://gatekeeper.dec.com/pub/UCB/tcl/sprite/ <- shadow of ftp.cs only
ftp://harbor.ecn.purdue.edu/pub/tcl/sprite-mirror/
ftp://iskut.ucs.ubc.ca/pub/X11/tcl/
ftp://nic.funet.fi/pub/languages/tcl/
ftp://oskgate0.mei.co.jp/free/X/toolkits/tcl/ <- shadow of ftp.cs only
ftp://src.doc.ic.ac.uk/packages/tcl/tcl-archive <- shadow of harbor
ftp://src.doc.ic.ac.uk/usenet/news.answers/comp.lang.tcl/ <- shadow of FAQs
ftp://sunsite.unc.edu/pub/languages/tcl/
ftp://syd.dit.csiro.au/pub/tk/	<- shadow of harbor and ftp.cs
ftp://sunsite.unc.edu/pub/Linux/	<- contains port of extended Tcl and
					extended Tk to this OS.

------------------------------

From: -XI- Where can I get these packages?
Subject: -A- Retrieving Tcl and Tk


>From: ouster@cs.Berkeley.EDU (John Ousterhout)
>Newsgroups: comp.lang.tcl
>Subject: Obtaining Tcl/Tk sources

For people new to the Tcl/Tk community, here is information on how
to obtain Tcl and Tk sources.  The information below describes what
I distribute; other information is available from other machines
also, such as harbor.ecn.purdue.edu.

The sources and documentation for the Tcl command
language library, for the Tk toolkit, and for a few Tcl-based
applications, are in the public FTP area on ftp.cs.berkeley.edu.
All of these files are in the "tcl" subdirectory of the FTP area.
Here is a catalog of what's available.  Most of the files are
compressed tar files ("xxx.tar.Z").  There is some overlap
between the contents of the various packages.


tk3.6.tar.Z -         	This is the latest and most stable release of the
                        Tk toolkit, released in November 1993 (patch level
                        206).  It includes the sources for the Tk library
                        and the "wish" windowing shell, plus reference
                        manual entries and a number of demonstration scripts.

tk3.6p1.patch.Z -       Patch file that fixes bugs in Tk version 3.6.
                        See the beginning of the patch file for information
                        about the bugs it fixes and how to apply it.

tcl7.3.tar.Z -          This is the latest and most stable release of the
                        Tcl library, released in November 1993 (patch level
                        106).  It includes the sources for the Tcl library
                        and the "tclsh" application, plus reference manual
                        entries.

tclX7.3a.tar.Z -        Extended Tcl (or NeoSoft Tcl), created by Mark
                        Diekhans and Karl Lehenbauer, which adds a number
                        of useful facilities to the base Tcl release.
                        Among the things in Extended Tcl are a Tcl shell,
                        many new commands for things like UNIX kernel
                        call access, keyed lists, and time conversion, and an
                        on-line help facility.  This package works with Tcl
                        versions 7.3 or later and Tk versions 3.6 or later.

mx.tar.Z -		Sources and documentation for a mouse-based text
			editor (mx) and terminal emulator (tx) based on
			Tcl.  This is a very old release:  it uses an old
			version of Tcl (which is included) and doesn't
			even use Tk;  it uses an ancient toolkit called
			"Sx".  These tools will eventually be replaced
			with new tools based on Tk and the newest Tcl.

mx-2.5.tar.Z - 		Newer version of mx (see above) that uses the
			standard X selection mechanism rather than the
			home-grown mechanism used by previous versions.
			Version 2.5 is not backwards compatible with
			previous versions (you can't cut and paste between
			the two). Still uses sx and an old version of
			Tcl (both of which are included).

book.p*.ps.Z            Compressed Postscript for an early draft of the
                        book "Tcl and the Tk Toolkit", which was published
                        by Addison-Wesley in April 1994 (ISBN 0-201-63337-X).
                        The draft is in four parts, each in a separate file.
                        You're probably better off with the published version
                        of the book, though;  it has a number of improvements
                        and an index.
 
book.p1.ps.Z            This part describes the Tcl language and how to write
			scripts in it.  About 130 pages in length.

book.p2.ps.Z            This part of the book describes how to write
			Tcl scripts for Tk.  About 125 pages in length.

book.p3.ps.Z            This part of the book describes how to write Tcl
			applications in C, using the Tcl library procedure.
			64 pages in length.

book.p4.ps.Z            This part of the book describes how to write new
			widgets and geometry managers in C, using the Tk
			library procedures.  About 70 pages in length.

book.examples.Z         Compressed file containing ASCII text for nearly all    
                        of the examples from the Tcl book.

tclUsenix90.ps -	Postscript for a paper on Tcl that appeared in the
			Winter 1990 USENIX Conference.

tkUsenix91.ps -		Postscript for a paper on Tk that appeared in the
			Winter 1991 USENIX Conference.

tkF10.ps -		Postscript for Figure 10 of the Tk paper.

tut.tar.Z -		A collection of materials from a full-day tutorial
			on Tcl and Tk.  Includes viewgraphs from five one-hour
			talks plus a sample widget.

tc-tcl93.ps.gz -        PostScript formatted copy of Tcl Compiler paper
                        presented at the Tcl'93 Workshop.

tc-tcl93.tex.gz -       LaTeX source for the Tcl Compiler paper presented
                        at the Tcl'93 Workshop.


In addition, there may be older releases of some or all of the above
files;  look for files with earlier release numbers.


To retrieve any or all of these packages, use anonymous FTP to
ftp.cs.berkeley.edu (Internet address 128.32.149.78).  Use user
"anonymous"; when asked for a password, type your email address.  Then
retrieve the relevant file(s) with the commands like the following:
		type image (try "type binary" if this command is rejected)
		cd tcl
		get tk3.6.tar.Z

Be sure to retrieve files in image mode (type "type image" to FTP)
in order to make sure that you end up with a corrupted file.

Any file with a .Z extension is a compressed file, which means you must
use the "uncompress" program to get back a normal file.  For example, for
the file tk3.6.tar.Z, you should type

	uncompress tk3.6.tar.Z

once you've retrieved the file.  This will produce a file named "tk3.6.tar".
Then you will need to use tar to extract the members.  Typically one
would use a command such as:

	tar xv tk3.6.tar

to extract the pieces.

Any file with a .gz extension is a file compressed with gzip, the gnu
portable compression standard.  To get a copy, ftp to prep.ai.mit.edu and 
look in pub/gnu.  For example, to uncompress tc-tcl93.ps.gz, type
 
    gunzip tc-tcl93.ps.gz
 
once you've retrieved the file.  This will produce a file named "tc-tcl93.ps".

Each of the releases has a README file in the top-level directory that
describes how to compile the release, where to find documentation, etc.

Questions or problems about any of these distributions should be directed
to "John Ousterhout" <ouster@cs.berkeley.edu>.

------------------------------

From: -XI- Where can I get these packages?
Subject: -B- Accessing the Tcl/Tk User Contributions Archive

Contributions to the Tcl/Tk Contrib Archive are most welcome --
please upload them to:

	ftp://harbor.ecn.purdue.edu/incoming	[128.46.128.76]

send the archive maintainer <tcl-archive@harbor.ecn.purdue.edu> a note stating
the names of the files you uploaded and a brief description for the
index.

Harbor is the central file server for the software staff of the
Engineering Computer Network, so please try to refrain from FTPing
stuff between 9am and 5pm EST (GMT -0500).  No mail-archive service is
planned as yet -- users without FTP capability should use one of the
following mail-based FTP services (send mail to the appropriate address
with "help" in the body):

BITNET users:   BITFTP <bitftp@pucc.princeton.edu>
Others:         "DEC ftpmail" <ftpmail@decwrl.dec.com>
Europe:         ftpmail@grasp1.univ-lyon1.fr
		mail-server@ftp.tu-clausthal.de

WARNING!  The archive maintainer will NOT be automatically archiving anything
posted to comp.lang.tcl or previously to the mailing list.  So if you want
your nifty porting instructions for getting Tcl up on your Seiko wrist watch
or your pen computer to be saved for others benefit, be sure to ftp them into
the archive.

All contributions should be placed in harbor's ~ftp/incoming
subdirectory.  Please send tcl-archive@harbor.ecn.purdue.edu and a short
mail message stating the filename(s) of your contribution and a brief
description (for the Index).  If you've posted some code to
comp.lang.tcl or the Tcl mailing list, and you want it to be archived
at this site, please deposit it in ~ftp/incoming or mail it in a
suitable form (preferably uuencoded compressed tar file, but a shar
file's OK) to tcl-archive@harbor.ecn.purdue.edu.

Note: I have noticed that some authors prefer to use plain names rather than
version level type names.  This means that you should a) make note of when
you get a package, and b) check the archive occasionally to see if a newer
version of the package has appeared.

------------------------------

From: -XI- Where can I get these packages?
Subject: -C- Expect available via e-mail.

Besides being available via ftp://ftp.cme.nist.gov/pub/expect/ ,
expect can also be received by email by sending the message
"send pub/expect/expect.shar.Z" to library@cme.nist.gov .

------------------------------

From: -XI- Where can I get these packages?
Subject: -D- EMACS modes for Tcl

"Sean Levy" <snl+@cs.cmu.edu> has hacked a version of Emacs's C mode into
a tcl-mode.el.  He mentions that you must use semi-colons at the end
of each statement to get indentation to work right, but he found that
easier than doing without.

The code is on [128.2.214.236]
ftp://ftp.cs.cmu.edu/afs/cs/user/snl/pub/tcl-mode.el.z
(don't forget binary mode) as well as
ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/tcl-mode.el.Z .

"Julian Anderson" <jules@kauri.vuw.ac.nz> was also working on an Emacs Tcl
minor mode to fundamental.

"Chris Lindblad" <cjl@lcs.mit.edu> has contributed tcl.el, a Tcl mode for
GNU emacs.  It's address is
ftp://harbor.ecn.purdue.edu/pub/tcl/extensions/tcl.el .

tromey@cns.caltech.edu (Tom Tromey) has contributed tcl-help.el, an
Extended Tcl help mode for GNU emacs.  It's address is
ftp://harbor.ecn.purdue.edu/pub/tcl/extensions/tcl-help.el .
It is also located at
ftp://archive.cis.ohio-state.edu:/pub/gnu/emacs/elisp-archive/modes/tcl.el.Z
It is also on harbor.ecn.purdue.edu in the pub/tcl archives somewhere.

schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid) has written a major mode
for tcl scripts.  He posted tcl-mode 1.1 to gnu.emacs.sources in March and
it should appear on
ftp://archive.cis.ohio-state.edu:/pub/gnu/emacs/elisp-archive/modes/
shortly.


------------------------------

From: -XI- Where can I get these packages?
Subject: -E- The tk toolbox project

The Tk Toolbox & Toolchest project.

The Toolchest consists of convenience routines for Tcl and Tk - a kind of a
libc for Tcl.  The toolbox is a collection of commonly used code and
some specialized code such as file selectors, dialogs that take care of
keyboard traversal through items automatically, etc.

The project has currently not yet reached a usable state, but each formal
release will be announced in comp.lang.tcl as well as other newsgroups.

There has been, in the past, a mailing list for discussion of the tk toolbox,
kindly provided by Ari Lemmke.  To subscribe, write a message with the line:
X-Mn-Admin: join tktools

in the body or header of the message.  Send this message to
linux-activists-request@niksula.cs.hut.fi .

To write to the list, send messages to to
linux-activists@niksula.cs.hut.fi
and add the line
X-Mn-Key: TKTOOLS
to the header or the body of the message. Especially remember this when
replying to messages from the list.

For more info about the list server (mailnet), write
an empty message to linux-activists-request@niksula.cs.hut.fi .

The intermediate snapshots are announced on this mailing list.

If you have problems or are willing to donate code or whatever,
you can contact the code maintainer (one of the three main implementors)
at tlukka@snakemail.hut.fi or lukka@helsinki.fi .

Unfortunately, the development effort has currently come to a stop on this
project and it is not yet known when it will be started again.

------------------------------

From: -XI- Where can I get these packages?
Subject: -F- [tv]grind definitions for tcl/tk/expect

"Martin Hamilton" <M.T.Hamilton@lut.ac.uk> has come up with a preliminary
grindcap definition for Tcl, Tk and expect.  These are available as:
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/vgrind.defs
ftp://harbor.ecn.purdue.edu/pub/tcl/docs/vgrind.defs.README


andyr@wizzy.com (Andy Rabagliati) has come up with a preliminary grindcap
definition for Tcl.  Contact him for more details.

------------------------------

From: -XI- Where can I get these packages?
Subject: -G- BNF style notation for Tcl

tb06@CS2.cc.lehigh.edu (TERRENCE MONROE BRANNON) in July of 1993, posted
some yacc code for a tcl-to-c parser.  This, along with Adam Sah's Tcl
compiler, are a couple of sources with which folk could start.

------------------------------

From: -XI- Where can I get these packages?
Subject: -H- Tk Quick Reference Card

raines@bohr.physics.upenn.edu (Paul E. Raines) has uploaded a quick
reference card for Tk 3.3.  You may find it at:

ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tkrefcard.tar.Z
ftp://bohr.physics.upenn.edu/pub/tk/tkrefcard.tar.Z

The tar contains the TeX and PostScript versions of a 3 column listing
of all widget methods and options and summaries of the wm, winfo, pack,
place and bind commands.

------------------------------

From: -XI- Where can I get these packages?
Subject: -I- Hilit 19 Tcl mode

AI. Aaron Roydhouse <aaron@comp.vuw.ac.nz> wrote, and
Julian.Anderson@comp.vuw.ac.nz (Julian Anderson) posted, the following:

(hilit-set-mode-patterns
 'tcl-mode
 '(("\\s #.*$" nil comment)
   ("^#.*$" nil comment)
   ("\"[^\\\"]*\\(\\\\\\(.\\|\n\\)[^\\\"]*\\)*\"" nil string)
   ("\\$[-_a-zA-Z]+" nil varref)
   ("^source.*$" nil include)
   ("\\b\\(global\\|upvar\\)\\b" nil decl)
   ("\\b\\(error\\|debug\\)\\b" nil decl)
   ("^\\s *proc\\s +\\(\\w\\|[_']\\)+" nil defun)
   ("\\b\\(set\\|lset\\|list\\|if\\|case\\|while\\|switch\\|then\\|else\\|
for\\|foreach\\|return\\|expr\\|catch\\)\\b" nil keyword)))

Dwight Shih <dwight@crl.com> later posted the following font lock mode:
 
(defvar tcl-font-lock-keywords
  (list
   (list (concat "\\b\\("
                 (mapconcat 'identity
                            '("set" "lset" "list" "if" "case" "while"
                              "switch" "then" "else" "for" "foreach"
                              "return" "expr" "catch" "puts" "proc"
                              "trace")
                            "\\|")
                 "\\)\\b")
         1 'font-lock-keyword-face t)
   (list (concat "\\b\\("
                 (mapconcat 'identity
                            '("global" "upvar" "uplevel" "error" "debug")
                            "\\|")
                 "\\)\\b")
         1 'font-lock-type-face t)
   (list "^\\s *proc\\s +\\(\\(\\w\\|[_']\\)+\\)" 1 'font-lock-function-name-fac
e t))
  "keywords for tcl-mode")
 
(defun font-lock-set-defaults ()
  "Set `font-lock-keywords' to something appropriate for this mode."
  (setq font-lock-keywords
        (cond ((eq major-mode 'lisp-mode)       lisp-font-lock-keywords)
              ((eq major-mode 'emacs-lisp-mode) lisp-font-lock-keywords)
              ((eq major-mode 'c-mode)          c-font-lock-keywords)
              ((eq major-mode 'c++-c-mode)      c-font-lock-keywords)
              ((eq major-mode 'c++-mode)        c++-font-lock-keywords)
              ((eq major-mode 'tex-mode)        tex-font-lock-keywords)
              ((eq major-mode 'perl-mode)       perl-font-lock-keywords)
              ((eq major-mode 'tcl-mode)        tcl-font-lock-keywords)
              ((eq major-mode 'texinfo-mode)    texi-font-lock-keywords)
              (t nil))))
 
 
------------------------------

From: -XI- Where can I get these packages?
Subject: -J- HTML versions of Tcl man pages and FAQ.

Mike Hopkirk <hops@x.co.uk> has provided a tar archive of HyperText Markup 
Language (HTML) versions of the comp.lang.tcl FAQ, the Tcl/Tk man pages,
index pages for the man pages, and a top level access page to tie together
all the above.  It is

ftp://harbor.ecn.purdue.edu/pub/tcl/docs/tclhtml.tar.z

Note that once these have been untarred, one can use a WorldWideWeb (WWW)
browser such as Mosaic, Lynx, etc. to begin at the Tcl.html page and read
the entire distribution.  The original source of this package can be
examined at:
http://www.sco.com/IXI/of_interest/tcl/Tcl.html

Having the package in this way provides a means for those behind a firewall
to examine the docs frozen at this point in time.  There are no commitments
to continue providing updates to this package. 

The man pages provided here were made using a perl script called
man2html originally written by "Brooks Cutter" <bcutter@paradyne.com>
and slightly post processed.

Note that the Tcl and Tk man pages are also available courtesy of Tom Phelps
<phelps@CS.Berkeley.EDU>, who has made the man pages available
at ftp://ftp.cs.berkeley.edu/pub/mhgs/tcltk/tcltk-man.html.tar.Z
where, Tom tells us, they will be deleted later after TkMan has been updated
to generate these pages automatically.


------------------------------
End of comp.lang.tcl Frequently Asked Questions (3/5)
*****************************************************
Newsgroups: comp.lang.tcl,comp.answers,news.answers
Path: lvirden
From: lwv26@cas.org (Larry W. Virden)
Subject: FAQ: comp.lang.tcl Frequently Asked Questions (4/5)
	(Last updated: April 20, 1994)
Followup-To: comp.lang.tcl
Summary: A regular posting of the comp.lang.tcl Frequently Asked Questions
	(FAQ) and their answers.  This is the fourth of five parts.
	This part is a catalog of Tcl-based programs.
Originator: lvirden@cas.org
Keywords: tcl, expect, extended tcl, wish, tk
Sender: lvirden@cas.org
Reply-To: lvirden@cas.org (Larry W. Virden)
Approved: news-answers-request@MIT.Edu

Archive-name: tcl-faq/part4
Version: 5.0
Last-modified: April 20, 1994

	For more information concerning Tcl (see "tcl-faq/part1"),
(see "tcl-faq/part2"), (see "tcl-faq/part3") or (see "tcl-faq/part5").

	Note that a Contact