home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / TclTk-HOWTO < prev    next >
Text File  |  1999-06-06  |  41KB  |  1,057 lines

  1.   The Linux Tcl and Tk HOWTO
  2.   Luca Rossetti lukaros@tin.it <mailto:lukaros@tin.it>
  3.   v0.2, 07 November 1998
  4.  
  5.   This document describes the Linux approach to Tcl, a scripting langua
  6.   ge.  It is an easy to learn interpreted language that uses a typeless
  7.   approach to achieve a higher level of programming and a rapid applica¡
  8.   tion development.  The Tk toolkit is a programming environment for
  9.   creating graphical user interf aces (GUI) under X Window System. Their
  10.   capabilities include the possibility to extend and embed in other
  11.   application, rapid development and ease of use. Toge ther, Tcl and Tk
  12.   provide many benefits both to application developer and user. Tk-ba
  13.   sed interfaces tend to be much more customizable and dynamic than
  14.   those built with one of the C or C++ based toolkits. Tk implements the
  15.   Motif look and feel.  A great number of interesting X applications are
  16.   implemented entirely in Tk, with no new application-specific commands
  17.   at all.
  18.  
  19.   1.  Introduction
  20.  
  21.  
  22.   This is the Linux Tcl and Tk HOWTO. It is intended as a Linux
  23.   reference covering everything you should know concerning installation,
  24.   configuration and an introduction to development under Tcl and Tk.
  25.   History and some pros and cons about Tcl and Tk under Linux are
  26.   analized, and references are given to many other sources of
  27.   information on a variety of topics related to this simple but powerful
  28.   scripting language.
  29.  
  30.   If you ever rebuilt your Linux kernel inside X using the command
  31.  
  32.   ______________________________________________________________________
  33.   make xconfig
  34.   ______________________________________________________________________
  35.  
  36.  
  37.  
  38.   you surely managed to face the strenght of this simple but powerful
  39.   scripting language.
  40.  
  41.   After executing the first step of kernel rebuilding, a script called
  42.   kconfig.tk is executed via wish (the Tcl intepreter). The Linux Kernel
  43.   Configuration wind ow appears. Instead of answering a series of
  44.   questions, this X-based configuratio n utility allows you to use
  45.   checkboxes to select which kernel options you want to enable.
  46.  
  47.   The system stores your last configuration options so that every time
  48.   you run it, you need only to add or remove some checks and you don't
  49.   need to reent er the whole set of option. Moreover you can fill the
  50.   whole (or part of the) list of kernel option the order you want. After
  51.   this simplified step you can rebuil d your kernel in the traditional
  52.   way.
  53.  
  54.   There's actually another famous case. Have you ever used "printtool" ?
  55.   (Printer Config Tool (C) Copyright 1994 by Red Hat Software
  56.   <http://www.redhat.com> - author: Michael Callahan).  If you installed
  57.   a Red Hat distribution you happily managed to use it to set up
  58.   printing services . Well, printtool front-end is mainly a Tcl/Tk
  59.   script.
  60.  
  61.   For those who don't know Red Hat let me tell you how you can easily
  62.   configure your printers just filling some textboxes and filling in
  63.   some checkboxes.
  64.  
  65.   The program itself takes care of setting up printing services through
  66.   the creation of spooling directory, writes /etc/printcap file and the
  67.   printer's filter, reloads lpd and tests your filter with ascii or
  68.   postscript pages. It allows you manipulate ghostscript options (i.e.
  69.   choose up to 8 pages per outpu t page and setting margins), has an
  70.   help-on-line and many more features.
  71.  
  72.   What is the difference compared to other service-printing
  73.   implementation?
  74.  
  75.   Everything is achieved by using Tcl/Tk as a "glue" between
  76.   consolidated application and operating with normal Linux configuration
  77.   files in a visual and interactive window under X-Window. No new
  78.   application-specific commands were written at all.
  79.  
  80.   1.1.  Purpose of this document
  81.  
  82.  
  83.   Currently the purpose of the document is limited to giving initial
  84.   references to Linux users; in future versions I will try to
  85.   incorporate a small "Programm ing Tutorial".  Let me state that again:
  86.   this is not (and doesn't want to substitute) an omnicomprehensive
  87.   "user manual" or "reference" for Tcl and Tk development and
  88.   programming - it's just a starting point for Linux users.
  89.  
  90.   The author's concept of reference manual coincides with the definition
  91.   of man pages and many people learn Tcl/Tk from these basic source of
  92.   informati on.  These files are a part of the source code distribution
  93.   and are installed on your Linux box. You will be able to access the
  94.   Tcl/Tk manual pages through the man command.
  95.  
  96.   Many structured and complete programming tutorials have been written
  97.   in order to let the new user begin hacking with Tcl/Tk; tons of other
  98.   material are available in the Internet. Interpreting Tcl/Tk philosophy
  99.   I won't try to reinvent the wheel, I will manage to glue the huge
  100.   amount of material already available.
  101.  
  102.   I suggest you to have a look at the other documents listed in the
  103.   ``References section'' in order to find where to retri eve specific
  104.   information about Tcl and Tk.
  105.  
  106.   1.2.  What you should know before reading
  107.  
  108.  
  109.   In order to understand the abc of Tcl/Tk you shouldn't be a
  110.   programming-guru, command sintax is very simple. Basically you have to
  111.   be familiar with:
  112.  
  113.   ╖  simple programming concepts;
  114.  
  115.   ╖  using very common unix commands and/or utilities;
  116.  
  117.   ╖  having access to the Internet;
  118.  
  119.   ╖  using ftp.
  120.  
  121.   1.3.  New versions of this document
  122.  
  123.  
  124.   Newer versions of this document will be uploaded to ftp site:
  125.   ftp://sunsite.unc.edu/ pub/Linux/HOWTO/
  126.   <ftp://sunsite.unc.edu/Linux/docs/HOWTO/> and will be available on all
  127.   other mirrors.
  128.  
  129.   Hypertext and other versions of this and other Linux HOWTOs are
  130.   available mainly at sunsite.unc.edu/LDP/lpd.ht ml
  131.   <http://sunsite.unc.edu/LDP/lpd.html> and www.linux-howto.com
  132.   <http://www.linux-howto.com> and on many other Mirror World-Wide-Web
  133.   sites.
  134.  
  135.   I will try to incorporate in my Web-Page
  136.   <http://space.tin.it/computer/tlqhr/> the most recent html and sgml
  137.   version of the document. Most Linux CD-ROM distributions include the
  138.   HOWTOs, often in a subdir of /usr/doc/ directory, and you can also buy
  139.   printed copies from several vendors.
  140.  
  141.   Sometimes the HOWTOs available from CD-ROM vendors, ftp sites, and in
  142.   hardcopy format are out of date. If the date on this HOWTO is more
  143.   than six months in the past, then a newer copy is probably available
  144.   on the Internet.
  145.  
  146.   If you make a translation of this document into another language, drop
  147.   me a line and I'll include a reference to it here.
  148.  
  149.   1.4.  Revision History
  150.  
  151.  
  152.   ╖  Version 0.1: 28 October 1998 - first version;
  153.  
  154.   ╖  Version 0.2: 07 November 1998 - deep restyling and lifting.
  155.  
  156.   1.5.  Feedback and other stuff
  157.  
  158.  
  159.   I rely on you, the reader, to make this HOWTO useful. If you have any
  160.   suggestio ns, corrections, or comments, please send them to me, ( Luca
  161.   Rossetti <mailto:lukaros@tin.it> ), and I will try to put them in the
  162.   next revision.
  163.  
  164.   If any of the links mentioned in this document becomes unavailable or
  165.   changes, please notify me immediately so that I can update and/or
  166.   remove the link.
  167.  
  168.   I am willing to answer general questions about Tcl/Tk and Linux as
  169.   best as I can. Before doing so, please read all of the information in
  170.   this HOWTO, and send me detailed information about the problem.
  171.  
  172.   If you publish this document on a CD-ROM or in hardcopy form, a
  173.   complimentary copy would be really appreciated. E-mail me and I will
  174.   send you back my postal address.
  175.  
  176.   In many section I mention publishing companies or commercial URL
  177.   sites: I really don't work for these guys.
  178.  
  179.   1.6.  Credits
  180.  
  181.  
  182.   Most of the information in this HOWTO comes from Dr. Ousterhout's
  183.   Scriptics <http://www.scriptics.com>  and Larry W. Virden
  184.   comp.lang.tcl FAQs <http://www.tclfaq.wservice.com/tcl-faq/> .
  185.  
  186.   I would like to thank the PLUTO <http://www.pluto.linux.it/>  Italian
  187.   Linux User Group and the whole volunteers of ILDP
  188.   <http://www.pluto.linux.it/ildp/> (Italian Linux Document ation
  189.   Project) especially Eugenia Franzoni and Giovanni Bortolozzo for their
  190.   feedbac k.
  191.  
  192.   1.7.  Distribution Policy
  193.  
  194.  
  195.   This document is Copyright 1998 by Luca Rossetti
  196.   <mailto:lukaros@tin.it>.
  197.  
  198.  
  199.   This document is distributed in the hope that it will be useful to the
  200.   reader: of course it is considered to be without any warranty; without
  201.   even the implied warranty of merchantability or fitness for a
  202.   particular purpose.  This HOWTO is free documentation; you can
  203.   redistribute it and/or modify it under the terms of the LDP COPYRIGHT
  204.   <http://sunsite.unc.edu/LDP/LDP-COPYRIGHT.html> .
  205.  
  206.   Please read the LDP Manifesto <http://sunsite.unc.edu/LDP/LDP-
  207.   Manifesto.html> for more details.
  208.  
  209.   2.  Tcl/Tk History
  210.  
  211.  
  212.   Tcl/Tk originated with Dr. John Ousterhout
  213.   <mailto:ouster@scriptics.com> (pronounced "Oh'-stir-howt") while
  214.   teaching at University of California, Berkeley, Califor nia.  He
  215.   actually started implementing it when he got back to Berkeley in the
  216.   spring of 1988; by summer of that year it was in use in some internal
  217.   applications, but there was no Tk. Read about the history of Tcl/Tk
  218.   directly from its author words at www.scripti
  219.   cs.com/scripting/tclHistory.html
  220.   <http://www.scriptics.com/scripting/tclHistory.html>.
  221.  
  222.   2.1.  Cronology
  223.  
  224.  
  225.   ╖  1989: The first external releases of Tcl and beginning of Tk imp
  226.      lemention;
  227.  
  228.   ╖  1991: First release of Tk;
  229.  
  230.   ╖  1994: Dr. Ousterhout was hired by Sun Microsystems, Inc.: he was a
  231.      Distinguished Engineer and led the Tcl project.
  232.  
  233.   ╖  April/May 1997: the Sun research group responsible for Tcl devel
  234.      opment were spun off into a Sun business group called SunScript.
  235.      However, things chan ged again soon afterwards. You can read more
  236.      about that evolution selecting "SunSc ript_story" at URL: Su
  237.      nScript-Story .
  238.  
  239.   ╖  August 1997: a Tcl Consortium was formed. You can read more abou t
  240.      it, including how to join, who currently serves on the board of
  241.      directors, and so on by visi ting Tcl Consortium
  242.      <http://www.tclconsortium.org/>;
  243.  
  244.   ╖  February 1998: Dr. Ousterhout left Sun to create Scriptics
  245.      <http://www.scriptics.com/>, a company dedicated to scripting
  246.      tools, applications, and services. According to www.scriptics.com
  247.      /about/news/qa.html < http://www.scriptics.com/about/news/qa.html>,
  248.      core Tcl and Tk remain free, with the team at Sun continuing work
  249.      right now on Tcl/Tk 8.1. After the next release, the intention is
  250.      that work on the core will migrate from Sun to Scriptics, with the
  251.      Sun team will focus more on Tcl extensions and applications.
  252.  
  253.   ╖  April 23, 1998: the Association for Computing Machinery ACM
  254.      <http://www.acm.org/> awarded the 1997 Software System Award to
  255.      John Ousterhout and Scriptics ( www.acm.org/awards/
  256.      <http://www.acm.org/awards/>). This award is given to an
  257.      institution or individual recognized for developing a software
  258.      system that has had a lasting influence, reflected in contributions
  259.      to concept s, in commercial acceptance, or both.
  260.  
  261.   3.  What is Tcl/Tk
  262.  
  263.  
  264.  
  265.   3.1.  What is Tcl?
  266.  
  267.  
  268.   Tcl is the acronym for "Tool Command Language" (it is pronounced
  269.   "tickle").  Tcl is actually divided into two things: a language and a
  270.   library.
  271.  
  272.   Tcl is a simple textual programming language, intended for issuing
  273.   commands to interactive programs such as text editors, debuggers and
  274.   shells. It has a simple syntax and it is also programmable.
  275.  
  276.   Tcl users can write command procedures to provide more powerful
  277.   commands than those given in the built-in set.
  278.  
  279.   Second, Tcl is a library package embeddable in applications. The Tcl
  280.   library consists of a parser for the Tcl language, routines to
  281.   implement the Tcl built -in commands, and procedures which allow each
  282.   application to extend Tcl with addit ional commands specific to that
  283.   application. The application program generates Tcl commands and passes
  284.   them to the Tcl parser for execution.
  285.  
  286.   Commands may be generated by reading characters from an input source,
  287.   or by associating command strings with elements of the application's
  288.   user interfa ce, such as menu entries, buttons, and other widgets.
  289.   When the Tcl library receive s commands it parses them into component
  290.   fields and executes built-in commands directly.
  291.  
  292.   For commands implemented by the application, Tcl calls back to the
  293.   application to execute the commands. In many cases commands will make
  294.   recursive invocation s of the Tcl interpreter by passing in additional
  295.   strings to execute (in fact procedures and conditional-looping
  296.   commands all work in this way). An applicat ion program can obtain
  297.   many advantages by using Tcl for its command language:
  298.  
  299.   ╖  Tcl provides a standard syntax: once users know Tcl, they will be
  300.      able to issue commands easily to any Tcl-based application.
  301.  
  302.   ╖  Tcl succeeds to provides programmability. All a Tcl application
  303.      needs to do is to implement a few application-specific low-level
  304.      commands. Tcl provides many utility commands and a general
  305.      programming interface for building up comp lex command procedures.
  306.      By using Tcl, applications need not reimplement these feat ures.
  307.  
  308.   ╖  Extensions to Tcl, such as the Tk toolkit, provide mechanisms for
  309.      communi cating between applications by sending Tcl commands back
  310.      and forth. The common Tcl language framework makes it easier for
  311.      applications to communicate with one another.
  312.  
  313.   It is important to note that Tcl was designed thinking that the
  314.   programmer should actually use two or more languages when designing
  315.   large software system s.  One for manipulating complex internal data
  316.   structures, or where performance is important, and another, such as
  317.   Tcl, for writing very small scripts that glue together the other
  318.   pieces, providing hooks for the user to extend.
  319.  
  320.   For the Tcl script writer, ease of learning, ease of programming and
  321.   ease of gluing are more important than performance or facilities for
  322.   complex data structures and algorithms.
  323.  
  324.   Tcl was designed to make it easy to drop into a lower language when
  325.   you come across tasks that make more sense at a lower level. In this
  326.   way, the basi c core functionality can remain small and one need only
  327.   bring along pieces that one particular wants or needs.
  328.  
  329.   One answer to "What is Tcl?" can be found at www.NeoSoft.com/tcl
  330.   /whatistcl.html <http://www.NeoSoft.com/tcl/whatistcl.html > .
  331.   3.2.  What is Tk?
  332.  
  333.  
  334.   Tk (pronounced "tee-kay") is an extension to Tcl which provides the
  335.   programmer with an interface to the X11 windowing system . Note that
  336.   Tk has been successf ully compiled under X11 R4, X11 R5, X11 R6, as
  337.   well as Sun's NeWS/X11 environments.
  338.  
  339.  
  340.   Many users will encounter Tcl/Tk via the "wish" command. Wish is a
  341.   simple windowing shell which permits the user to write Tcl/Tk
  342.   applications in a proto typing environment.
  343.  
  344.   At present Tcl/Tk cannot handle Japanese, Chinese, Korean, ....
  345.   language fonts.
  346.  
  347.   3.3.  Extensions
  348.  
  349.  
  350.   Since Tcl is so easy to extend, many try to share extensions,
  351.   including the popular itcl, [incr Tcl] <http://www.tcltk.com/itcl/>,
  352.   ObjectTcl, TclX, Tix  <http://tix.mne.com/>, and BLT
  353.   <http://www.tcltk.com/blt/>.
  354.  
  355.   These extensions, of course, require an extended Tcl interpreter.
  356.   Moreover, many Tcl free applications require a particular Tcl
  357.   extension to run.
  358.  
  359.   One of the most popular extension is called Expect
  360.   <http://expect.nist.gov>.  It allows you to place a friendly front-end
  361.   inside most command-line based UNIX applications, such as ftp, telnet,
  362.   rlogin, passwd, fsck, and so on.
  363.  
  364.   A complete list of Tcl/Tk extensions can be found at URL www.scr
  365.   iptics.com/resource/software/extensions/
  366.   <http://www.scriptics.com/resource/software/extensions/>.
  367.  
  368.   3.4.  Supported Platforms
  369.  
  370.  
  371.   This section contains information about Tcl 8.0 and Tk 8.0, the most
  372.   recent version of Tcl/Tk. They were originally released on August 18,
  373.   1997 and the most recent patch releases (8.0.3) were made on September
  374.   3, 1998.
  375.  
  376.   When you download Tcl and Tk you get two programs, wish and tclsh,
  377.   supporting script libraries, and on-line reference documentation.
  378.   These programs are gene ral purpose platforms for writing applications
  379.   with Tcl. Wish includes the graphic al user interface toolkit Tk. The
  380.   packages are ready to use after installation.
  381.  
  382.  
  383.   Tcl 8.0 and Tk 8.0 run on most releases of the following operating
  384.   systems:
  385.  
  386.  
  387.   ╖  Windows 95
  388.  
  389.   ╖  Windows NT
  390.  
  391.   ╖  Solaris and SunOS
  392.  
  393.   ╖  Linux
  394.  
  395.   ╖  HP-UX
  396.  
  397.   ╖  SGI
  398.  
  399.   ╖  IRIX
  400.  
  401.   ╖  Digital Unix
  402.  
  403.   ╖  AIX
  404.  
  405.   ╖  SCO Unix
  406.  
  407.   ╖  Most other Unix-like operating systems Macintosh (68K and Power
  408.      Mac)
  409.  
  410.   ╖  Pre-compiled releases are available for different Linux
  411.      distribution.
  412.  
  413.   4.  Installing and getting started with Tcl and Tk
  414.  
  415.  
  416.   Most modern distribution include Tcl and Tk. Rpm and deb packages with
  417.   precompiled binaries are avalaible for Red Hat, SuSE and Debian
  418.   distributions (that'll make installation easier).
  419.  
  420.   A modern distribution standard installation will include Tcl/Tk as it
  421.   is needed by many configuration tools running mainly under X.
  422.  
  423.   Tcl and Tk are distributed freely in source form via the Internet.
  424.   There are no restrictions on their use and no licenses or royalties
  425.   are needed (see the ``license.terms'' section for complete
  426.   information).
  427.  
  428.  
  429.   Many more Tcl/Tk scripts and extensions are also available freely.
  430.  
  431.   4.1.  Downloading the Core Distributions
  432.  
  433.  
  434.   The Tcl/Tk core consists of the Tcl and Tk libraries, plus the wish
  435.   and tclsh applications, associated documentation, script libraries,
  436.   and demonstrat ive applications. The primary FTP site for this
  437.   information is ftp.scriptics.com/pub/tcl/
  438.   <ftp://ftp.scriptics.com/pub/tcl/>.
  439.  
  440.  
  441.   The primary HTTP site is www.scriptics. com/software/download.html
  442.   <http://www.scriptics.com/software/download.html> .
  443.  
  444.   4.2.  Installation
  445.  
  446.  
  447.   Unless already available for your Distribution in proprietary packages
  448.   you'll want to download the source release. You'll need both Tcl and
  449.   Tk source s.  This procedure refers to the second case.
  450.  
  451.   Choose between compressed tar and gzipped tar format.
  452.  
  453.   Compressed Tar Files
  454.  
  455.   Tcl sources (tcl8.0.3.tar.Z): compressed tar file (about 2.4 Mbytes).
  456.   Tk sources (tk8.0.3.tar.Z): compressed tar file (about 3.3 Mbytes).
  457.  
  458.   Gzipped Tar Files
  459.  
  460.   Tcl sources (tcl8.0.3.tar.gz): gzipped tar file (about 1.5 Mbytes). Tk
  461.   sources (tk8.0.3.tar.gz): gzip'ed tar file (about 2.1 Mbytes).
  462.  
  463.   When you retrieve one of these files, you will get a compressed tar
  464.   file with a name like tcl8.0.3.tar.gz or tcl8.0.3.tar.Z. The files are
  465.   identical except for the technique used to compress them (.gz files
  466.   are generally smalle r than .Z files).
  467.  
  468.   To unpack the distribution, invoke shell commands like the following,
  469.   depending on which version of the release you retrieved:
  470.  
  471.   ______________________________________________________________________
  472.   gunzip -c tcl8.0.3.tar.gz
  473.   ______________________________________________________________________
  474.  
  475.  
  476.  
  477.   or
  478.  
  479.   ______________________________________________________________________
  480.   tar xf - zcat tcl8.0.3.tar.Z
  481.   ______________________________________________________________________
  482.  
  483.  
  484.  
  485.   or
  486.  
  487.   ______________________________________________________________________
  488.   tar xf - unzip tcl80.3.zip
  489.   ______________________________________________________________________
  490.  
  491.  
  492.  
  493.   Each of these commands will create a directory named tcl8.0.3, which
  494.   includes the sources for all platforms, documentation, and the script
  495.   library for Tcl 8.0. To compile and install the distribution, follow
  496.   the instructions in the README file in the distribution directory. Be
  497.   sure to compile Tcl before Tk, since Tk depends on information in Tcl.
  498.  
  499.   4.3.  The Contributed Archive
  500.  
  501.  
  502.   There are many other freely available packages for Tcl and Tk,
  503.   including both scripts written in Tcl and extensions written in C or
  504.   C++. These packages include database applications and network access,
  505.   a graphical user interface builder, the expect program, additional Tk
  506.   widgets, and dozens of other things .  The primary site for the Tcl/Tk
  507.   archive is ftp.neosoft.com/pub/tcl <ftp://ftp.neosoft.com/pub/tcl>.
  508.  
  509.   4.4.  Mirror Sites
  510.  
  511.  
  512.   Several other sites around the world mirror the whole or part of the
  513.   material from the core site and the contributed archive; you may find
  514.   more useful to retrieve information from a mirror site that is close
  515.   to you.
  516.  
  517.   Ftp file "0_mirror" at: ftp.scriptics.com/pub/tcl/
  518.   <ftp://ftp.scriptics.com/pub/tcl/> for a list of the mirror sites in
  519.   your country.
  520.  
  521.   4.5.  Which Releases to Use
  522.  
  523.  
  524.   Always refer to newer recommended version in section "Tcl/Tk Core" of
  525.   the
  526.  
  527.   Scriptics Soft ware Central page
  528.   <http://www.scriptics.com/software/download.html>.
  529.   At the time of this writing, recommended releases are the latest (Tcl
  530.   8.0.3 and Tk 8.0.3), which were released in September, 1998. Tcl 8.0
  531.   contains a new bytecode compiler that can speed up execution by a
  532.   factor of 2-10x. It also provides namespaces, binary I/O, and several
  533.   other new features.
  534.  
  535.   Tk 8.0 is the first release to provide native look and feel on
  536.   Macintoshes and PCs. Tk 8.0 also supports application embedding and
  537.   has a new portable font mechanism. Both Tcl 8.0 and Tk 8.0 provide
  538.   additional features in the Safe-Tcl security model.
  539.  
  540.   4.6.  Where to report problems, bugs, or enhancements
  541.  
  542.  
  543.   Use comp.lang.tcl < news.comp.lang.tcl> for public communicati ons.
  544.  
  545.   The alternative would be to send problems, suggestions, new ideas,
  546.   etc.  directly to the author. Email to John Ousterhout
  547.   <mailto:Ouster@scriptics.com> will reach the author of Tcl and Tk.
  548.  
  549.   When reporting problems or bugs, be sure to mention all the details
  550.   needed for a correct diagnosis. Basically you will have to describe
  551.   what hardware, operating system and version of Tcl/Tk you are using,
  552.   if you have made any modification or add on and provide, if possible,
  553.   either a small piece of code, or a URL to some code which demonstrates
  554.   the problem.
  555.  
  556.   If you have software from which you think the community might benefit
  557.   (either a program, function, extension, or simple example), or you
  558.   have a document, magazine or journal article, thesis, project, or even
  559.   commercial advertisement , be sure to let the appropriate guys know.
  560.  
  561.   There are FAQ maintainers for each of these areas as well as a
  562.   comp.lang.tcl.announce <news:news.comp.lang.tcl.announce> newsgroup
  563.   you can use.
  564.  
  565.   It is always worthwhile to submit your contributions directly to the
  566.   ftp site so more folk in the future can benefitthanks to your
  567.   experience.
  568.  
  569.   To make announcements to the comp.lang.tcl.announce
  570.   <news:news.comp.lang.tcl.announce> newsgroup, send email with the
  571.   details to tcl-announce <mailto:tcl-announce@mitchell.org>. Also, feel
  572.   free to just point folk at your own ftp site or WWW site if you have
  573.   one which can be used .
  574.  
  575.   5.  Just a little bit of Programming
  576.  
  577.  
  578.   Since Tcl is an interpreted language, to run a Tcl program (also
  579.   called a script), you normally pass the script file to the Tcl
  580.   interpreter, wish, for example:
  581.  
  582.   ______________________________________________________________________
  583.   wish hello.tcl
  584.   ______________________________________________________________________
  585.  
  586.  
  587.  
  588.   You can also use wish in interactive mode and type in commands at the
  589.   command line.
  590.  
  591.   There's another standard Tcl interpreter, tclsh, which only
  592.   understands the Tcl language. Tclsh does not have any of the Tk user
  593.   interface commands, so you cannot create graphical programs in tclsh.
  594.  
  595.   Some Tcl freeware applications extend the Tcl language by adding new
  596.   commands written as C functions. If such is the case, you need to
  597.   compile the applicati on instead of just passing its Tcl code to the
  598.   wish interpreter. This application program, from a Tcl perspective, is
  599.   really a new version of the wish interpret er, which the new C
  600.   commands linked in. Of course, the application program may be a lot
  601.   more than merely a Tcl interpreter. (Note: you can also use Tcl's
  602.   auto-loading capability on systems that support it.)
  603.  
  604.   5.1.  The one-minute program in Tcl
  605.  
  606.  
  607.   Tcl has a simple structure. Each line starts out with a command, such
  608.   as button and a number of arguments. Each command is implemented as if
  609.   it was a C function. This function is responsible for handling all the
  610.   arguments.
  611.  
  612.  
  613.   As a very standard example, the following is the Hello World program
  614.   in Tcl/Tk:
  615.  
  616.   ______________________________________________________________________
  617.   # This is a comment
  618.   button .b -text "Hello World" -command exit
  619.   pack .b
  620.   ______________________________________________________________________
  621.  
  622.  
  623.  
  624.   In this case you have to type the commands interactively to tclsh or
  625.   wish.
  626.  
  627.   You can also place command into script files and invoke these just
  628.   like shell scripts. To do this for the previous example, rewrite the
  629.   Hello World program as follows:
  630.  
  631.   ______________________________________________________________________
  632.   #! /usr/local/bin wish -f
  633.   button .b -text "Hello World" -command exit
  634.   pack .b
  635.   ______________________________________________________________________
  636.  
  637.  
  638.  
  639.   Put the text inside a file called Hello and make sure that wish is
  640.   installed in /usr/local/bin (otherwise you will have to change
  641.   opportunely the path).
  642.  
  643.   Make the file Hello executable issuing the command
  644.  
  645.   ______________________________________________________________________
  646.   chmod 775 Hello
  647.   ______________________________________________________________________
  648.  
  649.  
  650.  
  651.   and run it inside X.
  652.  
  653.   You will see a button labelled Hello World inside a window: clicking
  654.   it will close (exit) the window.
  655.  
  656.   6.  Scripting Language: pros and cons
  657.  
  658.  
  659.   To understand the importance and the future of Tcl/Tk I strongly
  660.   suggest to point your web browser at the URL www.scriptics
  661.   .com/people/john.ousterhout/
  662.   <http://www.scriptics.com/people/john.ousterhout/> by John K.
  663.   Ousterhout  <mailto:ouster@scriptics.com>. You will read about the
  664.   importance and the comparison between scripting (in langua ges such as
  665.   Tcl) and system programming (in languages such as C and Java).
  666.  
  667.   To read a document about comparisons see ``the comparison
  668.   discussion''.
  669.  
  670.   Here's a summary of the most important pros and cons about Tcl/Tk.
  671.  
  672.   6.1.  Some of the most common complaints about Tcl
  673.  
  674.  
  675.   6.1.1.  Tcl is interpreted
  676.  
  677.  
  678.   The data is primarily treated as strings, programs written in Tcl are
  679.   slow.  Tcl 8.x attempts to address this by doing some degree of
  680.   compilation as well as permitting additional variable types.
  681.  
  682.   6.1.2.  Several characteristics are not intuitive
  683.  
  684.  
  685.   Comments are commands rather than traditional comments, numbers
  686.   beginning with 0 are octal, proper use of quoting mechanisms, etc.
  687.   These aspects are covered in the various FAQs.
  688.  
  689.   6.2.  Some of the most pros about Tcl
  690.  
  691.  
  692.   6.2.1.  It is a high-level scripting language
  693.  
  694.  
  695.   You need to write a lot less code to get your job done, especially
  696.   when compared to Motif or Win32 applications. In general, the number
  697.   of Line Of Code (LOC) of a software project is one of the most
  698.   important complexity index es.
  699.  
  700.  
  701.   6.2.2.  Tcl is free
  702.  
  703.  
  704.   You can get the sources for free over the Internet from Scriptics
  705.   Download Page or from the FTP site for Tcl.  The software c ore site
  706.   <http://www.scriptics.com/software/download.html> includes the source
  707.   code version, as well as binary versions for Windows and Macintosh
  708.   platforms; or, you can get Tcl on a number of CD-ROMs for a nominal
  709.   cost.
  710.  
  711.   Read about Tcl and Tk core free at www.scriptics.com/about/n
  712.   ews/qa.html <www.scriptics.com/about/news/qa.html> .
  713.  
  714.   6.2.3.  It runs on many platforms
  715.  
  716.  
  717.   Versions exist for UNIX (Linux... of course), Windows and Macintosh.
  718.   Except for a few platform differences, your Tcl scripts will run the
  719.   same way on all systems.
  720.  
  721.   6.2.4.  It is interpreted
  722.  
  723.  
  724.   You can execute your code directly, without compiling and linking
  725.   (though Tcl compilers are available).
  726.  
  727.   6.2.5.  It is extensible
  728.  
  729.  
  730.   It's easy to add your own commands to extend the Tcl language. You can
  731.   write your commands in C or Tcl.
  732.  
  733.   6.2.6.  It is embeddable in your applications
  734.  
  735.  
  736.   The Tcl interpreter is merely a set of C functions that you can call
  737.   from your code. This means you can use Tcl as an application language,
  738.   much like a macro language for a spreadsheet application.
  739.  
  740.   6.2.7.  Tcl/Tk is Year 2000 (Y2K) compliant
  741.  
  742.  
  743.   Read what the creator of the Tcl and Tk core tells about this topic
  744.   www.scriptics.com/Y2K.html <http://www.scriptics.com/Y2K.html> .
  745.  
  746.  
  747.   7.  Most Famous Programs using Tcl/Tk
  748.  
  749.  
  750.   Apart from the two implementation described in the ``Introduction'',
  751.   there are many applications writte n in Tcl/Tk or a combination of Tcl
  752.   and C. A complete list where to look for these implementation is the
  753.   part 4 <http://www.tclfaq.wservice.com/tcl-faq/part4.html> of the
  754.   frequently-asked questions on Tcl/Tk (FAQs). I suggest you to visit
  755.  
  756.   Scriptics' Softwar e Central
  757.   <http://www.scriptics.com/resource/software/>.
  758.  
  759.   Another good starting point is www.NeoSoft.com/tcl/
  760.   <http://www.NeoSoft.com/tcl/>.
  761.  
  762.   One of the best Tcl applications running under Linux is called TkDesk
  763.   <http://people.mainz.netsurf.de/~bolik/tkdesk/> a window manager and
  764.   application launcher that works very well.
  765.  
  766.   If you're a Tcl/Tk Linux developer, feel free to send me
  767.   <mailto:lukaros@tin.it> a URL (and a description of the work) that I
  768.   can link to in here.
  769.  
  770.   8.  References
  771.  
  772.  
  773.   For many reasons people often like having a hard-copy manual as a
  774.   reference or like to be helped by other folks online.
  775.  
  776.   Here you can find a selection of reference books, tutorials, www-sites
  777.   and newsgroup.
  778.  
  779.   8.1.  Books
  780.  
  781.  
  782.   Many books concerning Tcl/Tk were written and are to be published. I
  783.   won't even try to list them all (another howto woudn't be enough for
  784.   that : ) ). You can find much more information plus additional notes
  785.   at:
  786.  
  787.   ╖  www.tcltk.com/consortium/resources/books.html
  788.  
  789.   ╖  www.amazon.com/exec/obidos/subst/categories/computer-
  790.      programming/tcl-tk-article/002-8989352-4516417
  791.  
  792.  
  793.   ╖  Page: tcl_books.html at URL starbase-neosoft-tcl-books
  794.  
  795.   Here I will try to summarize with some notes the book I know
  796.   concerning the subject, they're all at a basic-medium level. Again,
  797.   people who know the subject, have enough information about where to
  798.   find advanced level books.
  799.  
  800.  
  801.   8.1.1.  Tcl and the Tk Toolkit
  802.  
  803.  
  804.   Author: John K. Ousterhout  <mailto:ouster@scriptics.com>
  805.  
  806.   WWW book information:
  807.   cseng.aw.com/bookdetail.qry?ISBN=0%2D201%2D63337%2DX&ptype=0
  808.  
  809.   Book's examples: ftp.script ics.com/pub/tcl/doc/book.examples.Z
  810.   <ftp://ftp.scriptics.com/pub/tcl/doc/book.examples.Z>
  811.  
  812.   Book suppliment: www.scriptics.com/doc/tk 4.0.ps
  813.   <http://www.scriptics.com/doc/tk4.0.ps>
  814.  
  815.   The book primarily covers Tcl 7.3 and Tk 3.6.
  816.  
  817.   8.1.2.  Practical Programming in Tcl and Tk, II ed.
  818.  
  819.  
  820.   Author: Brent Welch <mailto:welch@acm.org>
  821.  
  822.   WWW book information: www.beedub.com/book/
  823.   <http://www.beedub.com/book/>
  824.  
  825.   Book's table of contents: www.beedub.com/book/
  826.   <http://www.beedub.com/book/>
  827.  
  828.   Book promotion info at section_50000.html of the URL
  829.   www.borders.com/sections/ <http://www.borders.com/sections/>
  830.  
  831.   This updated edition describes Tcl / Tk 8.0 as it was during the beta
  832.   period.  Along with the material from the first edition, it also
  833.   covers sockets, packag es, namespaces, a great section describing the
  834.   changes in Tcl 7.4, 7.5, 7.6, and 8.0 (and Tk as well), Safe Tk and
  835.   the Plugin!
  836.  
  837.   8.1.3.  Tcl and Tk Reference Manual
  838.  
  839.  
  840.   Editors: Donald Barnes, Marc Ewing <mailto:marc@redhat.com>, Erik
  841.   Troan
  842.  
  843.   WWW book information: www.lsl.com/catalog/bo oks/tcltk/
  844.   <http://www.lsl.com/catalog/books/tcltk/>
  845.  
  846.   8.1.4.  The Visual TCL Handbook, 1/e
  847.  
  848.  
  849.   Author: David Young <mailto:david@inforef.com>
  850.  
  851.   WWW book information:
  852.   www.amazon.com/exec/obidos/ISBN=013461674X/u/7141-5908756-107481
  853.   <http://www.amazon.com/exec/obidos/ISBN=013461674X/u/7141-5908756-1074
  854.   81>
  855.  
  856.   A comprehensive guide to Visual TCL. This book leads reader from basic
  857.   graphical user interface development concepts to meaningful
  858.   application develo pment.  The book focuses on the TCLX and VT
  859.   extensions, addressing many fundamental TCL topics. VT is a Motif
  860.   based graphical interface, incompatible with Tk.  The entire TCL
  861.   language is documented in a separate Commands section. Comes with a
  862.   CD-ROM that includes SGI, Solaris, HP-UX, AIX and Unixware versions of
  863.   Visual Tcl.
  864.  
  865.   8.1.5.  Running LINUX
  866.  
  867.  
  868.   Author: Matt Welsh and Lar Kaufman
  869.  
  870.   WWW book information: www.ora.com/ca talog/runux2/noframes.html
  871.   <http://www.ora.com/catalog/runux2/noframes.html>
  872.  
  873.   Running Linux is a really well written basic book. It has a chapter on
  874.   programming using Tcl/Tk. (and Perl, C, C++).
  875.  
  876.   8.1.6.  Tcl/Tk for Dummies (For Dummies)
  877.  
  878.  
  879.   Author: Timothy Webster, with Alex Francis
  880.  
  881.   WWW book information: www.dummies.com/ <http://www.dummies.com/>
  882.  
  883.   Another one of the series of the paperback programming books. This one
  884.   focuses on the Tcl plugin as a programming environment.
  885.  
  886.   8.1.7.  Interactive Web Applications With Tcl/Tk
  887.  
  888.  
  889.   Authors: Michael Doyle Hattie Schroeder
  890.  
  891.   WWW book information: www.eolas.com/tcl/ < http://www.eolas.com/tcl/>
  892.  
  893.   This is a learning by example book, for people who know a bit of
  894.   programming, but are not experts. It covers developing applets as well
  895.   as stand-alone appli cations and simple server applications. The book
  896.   comes with the Spynergy toolkit, whic h adds a variety of pure Tcl/Tk
  897.   procedures for distributed processing, URL retri eval, HTML rendering,
  898.   database management and platform independent file managment, Ed, a Tcl
  899.   editor and testing environment, an image conversion tool, a demo of Tk
  900.   features, a client/server version of a rolodex application, a pure Tcl
  901.   web server, a client/server push application, a tcl web browser,
  902.  
  903.   8.2.  Manual and On-line Tutorials
  904.  
  905.  
  906.   ╖  John Ousterhout has written an engineering style guide that
  907.      describes the coding, documentation, and testing conventions that
  908.      will be used at Sun in the coding of the C code in the Tcl core and
  909.      has made it available to other Tcl and Tk developers. It is located
  910.      at ftp.script ics.com/pub/tcl/doc/engManual.tar.Z
  911.      <ftp://ftp.scriptics.com/pub/tcl/doc/engManual.tar.Z>
  912.  
  913.   ╖  A second style guide, covering the writing of Tcl scripts, can be
  914.      found at ftp.scr iptics.com/pub/tcl/docs/styleGuide.tar.gz
  915.      <ftp://ftp.scriptics.com/pub/tcl/docs/styleGuide.tar.gz>.  Other
  916.      versions of it can be found at sunscript.su
  917.      n.com/techcorner/styleGuide.ps
  918.      <http://sunscript.sun.com/techcorner/styleGuide.ps>.
  919.  
  920.   ╖  A  brief introduction to TCL/TK
  921.      <http://http2.brunel.ac.uk:8080/~csstddm/TCL2/TCL2.html>by David
  922.      Martland  < mailto:csstddm@brunel.ac.uk>
  923.  
  924.  
  925.   ╖  Another tutorial untitled User interfaces with Tcl/T k
  926.      <http://www.scism.sbu.ac.uk/tkteach/>was written by Fintan Culwin
  927.      <mailto:fintan@sbu.ac.uk>.
  928.  
  929.   ╖  Although you should have your Tcl/Tk manual pages on your system,
  930.      here's another place where to look for TCL Manual Pa ges (from
  931.      TCL7.4)-Tk Manual Pages (from TK4.0)
  932.      <http://cuiwww.unige.ch/eao/www/TclTkMan/Man.html>.
  933.  
  934.   ╖  The Tcl/Tk Cookbook <http://www.cis.rl.ac.uk/proj/TclTk/> offe rs a
  935.      lot of getting-started information.
  936.  
  937.   8.3.  World Wide Web sites
  938.  
  939.  
  940.   There are a great number of WWW resources which provide additional
  941.   information about many aspects of Tcl and its extensions.
  942.  
  943.   ╖  Refer to Tcl-FAQs (pa rt2) <http://www.tclfaq.wservice.com/tcl-
  944.      faq/part2.html> for a great number of pointers to Tcl/Tk
  945.      documentation and web sites.
  946.  
  947.   ╖  Point your web browser at Tcl/Tk Information <http://www.tcltk.com>
  948.      : a site with many links to TclTk resources on the web
  949.      (Information, Extensions, Tools, Training and Events).
  950.  
  951.   ╖  Have a look at Tcl-Consortium <http://www.tclconsortium.org/> : a
  952.      non-profit organization which promotes Tcl/Tk and supports the
  953.      development community.
  954.  
  955.   ╖  Point your Web browser at The Official Contributed Sources A rchive
  956.      <http://www.NeoSoft.com/tcl/> for the Tool Command Language (Tcl)
  957.      and the Tk Toolkit, hosted by NeoSoft, Inc.
  958.  
  959.   ╖  For a discussion dealing with the pros and cons of the major
  960.      scripting languages : article in SunWorld
  961.      <http://www.sun.com/sunworldonline/swol-10-1997/swol-10-scripting.html
  962.      > by Cameron Laird  < mailto:claird@Starbase.NeoSoft.com>
  963.  
  964.   ╖  A web page that contains a variety of comparisons between Tcl/Tk
  965.      and othe r similar systems. Most of them are taken from
  966.      "comp.lang.tcl", the author would be happy to add any other
  967.      important article that you folks want to send to him.: Comparison
  968.      <http://icemcfd.com/tcl/comparison.html> by Wayne Christopher
  969.      <mailto:wayne@icemcfd.com>.
  970.  
  971.   ╖  E.J. Friedman-Hill's Tcl/Tk Course
  972.      <http://herzberg.ca.sandia.gov/TclCourse/>: this document is
  973.      available only in PowerPoint source form and in low-quality HTML
  974.      form (in HTML format all the figures and some of the text is
  975.      missing).
  976.  
  977.   8.4.  Other documents & Frequently Asked Questions
  978.  
  979.  
  980.   A lot of material is available on the Internet: introductory papers,
  981.   white papers, tutorials, slides, postscript versions of published
  982.   books in draft and many more.
  983.  
  984.   For a complete reference please give a look at the excellent Tcl-FAQs
  985.   <http://www.tclfaq.wservice.com/tcl-faq/> .
  986.  
  987.   8.5.  Newsgroup
  988.  
  989.  
  990.  
  991.   comp.lang.tcl <news:comp.lang.tcl> is an unmoderated Usenet newsgroup,
  992.   created for the discussion of the Tcl programming language and tool s
  993.   that use some form of Tcl, such as the Tk toolkit for the X window
  994.   system, Extended Tcl, and expect.
  995.  
  996.   For Tcl/Tk related announcements always refer to
  997.   comp.lang.tcl.announce <news:comp.lang.tcl.announce> : you will find
  998.   release announcement, patches, new application and so on.
  999.  
  1000.   Again, faq could be retrieved at Tcl-FAQs
  1001.   <http://www.tclfaq.wservice.com/tcl-faq/>.
  1002.  
  1003.   9.  Tcl/Tk License Terms
  1004.  
  1005.  
  1006.   The following terms apply to the all versions of the core Tcl/Tk
  1007.   releases, the Tcl/Tk browser plug-in version 2.0, and TclBlend and
  1008.   Jacl version 1.0.  Please note that the TclPro tools are under a
  1009.   different license agreement.  This agreement is part of the standard
  1010.   Tcl/Tk distribution as the file named "license.terms".
  1011.  
  1012.   TCL/TK LICENSE TERMS
  1013.  
  1014.   This software is copyrighted by the Regents of the University of
  1015.   California, Sun Microsystems, Inc., Scriptics Corporation, and other
  1016.   parties. The followin g terms apply to all files associated with the
  1017.   software unless explicitly discla imed in individual files.
  1018.  
  1019.   The authors hereby grant permission to use, copy, modify, distribute,
  1020.   and license this software and its documentation for any purpose,
  1021.   provided that existing copyright notices are retained in all copies
  1022.   and that this notice is included verbatim in any distributions. No
  1023.   written agreement, license, or royalty fee is required for any of the
  1024.   authorized uses. Modifications to this software may be copyrighted by
  1025.   their authors and need not follow the licensing terms described here,
  1026.   provided that the new terms are clearly indicated on the first page of
  1027.   each file where they apply.
  1028.  
  1029.   IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
  1030.   FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
  1031.   ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
  1032.   DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
  1033.   POSSIBILITY OF SUCH DAMAGE.
  1034.  
  1035.   THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
  1036.   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  1037.   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-
  1038.   INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE
  1039.   AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE,
  1040.   SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  1041.  
  1042.   GOVERNMENT USE: If you are acquiring this software on behalf of the
  1043.   U.S.  government, the Government shall have only "Restricted Rights"
  1044.   in the software and related documentation as defined in the Federal
  1045.   Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are
  1046.   acquiring the software on behal f of the Department of Defense, the
  1047.   software shall be classified as "Commercial Computer Software" and the
  1048.   Government shall have only "Restricted Rights" as defined in Clause
  1049.   252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing , the
  1050.   authors grant the U.S. Government and others acting in its behalf
  1051.   permissi on to use and distribute the software in accordance with the
  1052.   terms specified in this license.
  1053.  
  1054.  
  1055.  
  1056.  
  1057.