Table of Contents
List of Examples.
List of Tables.
Preface.
I. Tcl BASICS.
1. Tcl Fundamentals.
Tcl Commands. Hello, World! Variables. Command Substitution. Math
Expressions. Backslash Substitution. Grouping with Braces and
Double Quotes. Procedures. A Factorial Example. More about
Variables. More about Math Expressions. Comments. Substitution and
Grouping Summary. Fine Points. Reference.
2. Getting
Started.
The source Command. UNIX Tcl Scripts. Windows Start Menu. Macintosh
OS 8/9 and ResEdit. The console Command. Command-Line Arguments.
Predefined Variables.
3. The Guestbook CGI Application.
A Quick Introduction to HTML. CGI for Dynamic Pages. The
guestbook.cgi Script. Defining Forms and Processing Form Data.
Handling Errors in CGI Scripts. Next Steps.
4. String Processing
in Tcl.
The string Command. The append Command. The format Command. The
scan Command. The binary Command. Related Chapters.
5. Tcl
Lists.
Tcl Lists. Constructing Lists. Getting List Elements: llength,
lindex, and lrange. Modifying Lists: linsert and lreplace.
Searching Lists: lsearch. Sorting Lists: lsort. The split Command.
The join Command. Related Chapters.
6. Control Structure
Commands.
If Then Else. Switch. While. Foreach. For. Break and Continue.
Catch. Error. Return.
7. Procedures and Scope.
The proc Command. Changing Command Names with rename. Scope. The
global Command. Call by Name Using upvar. Variable Aliases with
upvar.
8. Tcl Arrays.
Array Syntax. The array Command. Building Data Structures with
Arrays.
9. Working with Files and Programs.
Running Programs with exec. The file Command. Cross-Platform File
Naming. Manipulating Files and Directories. File Attributes.
Input/Output Command Summary. Opening Files for I/O. Reading and
Writing. The Current Directory — cd and pwd. Matching File Names
with glob. The exit and pid Commands. Environment Variables. The
registry Command.
II. ADVANCED Tcl.
10. Quoting Issues and Eval.
Constructing Code with the list Command. Exploiting the concat
inside eval. The uplevel Command. The subst Command.
11. Regular
Expressions.
When to Use Regular Expressions. Regular Expression Syntax.
Advanced Regular Expressions. Syntax Summary. The regexp Command.
The regsub Command. Transforming Data to Program with regsub. Other
Commands That Use Regular Expressions.
12. Script Libraries and
Packages.
Locating Packages: The auto_path Variable. Using Packages. Summary
of Package Loading. The package Command. Libraries Based on the
tclIndex File. The unknown Command. Interactive Conveniences. Tcl
Shell Library Environment. Coding Style.
13. Reflection and
Debugging.
The clock Command. The info Command. Cross-Platform Support.
Tracing Variables and Commands. Interactive Command History.
Debugging. Tcl Dev Kit. Other Tools. Performance Tuning.
14.
Namespaces.
Using Namespaces. Namespace Variables. Command Lookup. Nested
Namespaces. Importing and Exporting Procedures. Callbacks and
Namespaces. Introspection. The namespace Command. Converting
Existing Packages to use Namespaces. [incr Tcl] Object System.
xotcl Object System. Notes.
15. Internationalization.
Character Sets and Encodings. Message Catalogs.
16. Event-Driven
Programming.
The Tcl Event Loop. The after Command. The fileevent Command. The
vwait Command. The fconfigure Command.
17. Socket
Programming.
Networking Extensions for Tcl. Client Sockets. Server Sockets. The
Echo Service. Fetching a URL with HTTP. The http Package. Basic
Authentication.
18. TclHttpd Web Server.
Integrating TclHttpd with Your Application. Domain Handlers.
Application Direct URLs. Document Types. HTML + Tcl Templates. Form
Handlers. Programming Reference. Standard Application Direct URLs.
The TclHttpd Distribution. Server Configuration.
19. Multiple
Interpreters and Safe-Tcl.
The interp Command. Creating Interpreters. Safe Interpreters.
Command Aliases. Hidden Commands. Substitutions. I/O from Safe
Interpreters. The Safe Base. Security Policies.
20. Safe-Tk and
the Browser Plugin.
Tk in Child Interpreters. The Browser Plugin. Security Policies and
Browser Plugin. Configuring Security Policies.
21.
Multi-Threaded Tcl Scripts.
What are Threads? Thread Support in Tcl. Getting Started with the
Thread Extension. Sending Messages to Threads. Preserving and
Releasing Threads. Error Handling. Shared Resources. Managing I/O
Channels. Shared Variables. Mutexes and Condition Variables. Thread
Pools. The Thread Package Commands.
22. Tclkit and
Starkits.
Getting Started with Tclkit. Virtual File Systems. Using sdx to
Bundle Applications. Exploring the Virtual File System in a
Starkit. Creating tclhttpd.kit. Creating a Shared Starkit. Metakit.
More Ideas.
III. Tk BASICS.
23. Tk Fundamentals.
Hello, World! in Tk. Naming Tk Widgets. Configuring Tk Widgets. Tk
Widget Attributes and the Resource Database. Summary of the Tk
Commands. Other Widget Sets.
24. Tk by Example.
ExecLog. The Example Browser. A Tcl Shell.
25. The Pack Geometry
Manager.
Packing toward a Side. Horizontal and Vertical Stacking. The Cavity
Model. Packing Space and Display Space. Resizing and -expand.
Anchoring. Packing Order. Choosing the Parent for Packing.
Unpacking a Widget. Packer Summary. Window Stacking Order.
26.
The Grid Geometry Manager.
A Basic Grid. Spanning Rows and Columns. Row and Column
Constraints. The grid Command.
27. The Place Geometry
Manager.
place Basics. The Pane Manager. The place Command.
28. The
Panedwindow Widget.
Using the Panedwindow. Programming Panedwindow Widgets. Panedwindow
Attributes.
29. Binding Commands to Events.
The bind Command. The bindtags Command. Event Syntax. Modifiers.
Event Sequences. Virtual Events. Generating Events. Event Summary.
IV. Tk Widgets.
30. Buttons and Menus.
Button Commands and Scope Issues. Buttons Associated with Tcl
Variables. Button Attributes. Button Operations. Menus and
Menubuttons. Menu Bindings and Events. Manipulating Menus and Menu
Entries. Menu Attributes. A Menu by Name Package.
31. The
Resource Database.
An Introduction to Resources. Loading Option Database Files. Adding
Individual Database Entries. Accessing the Database. User-Defined
Buttons. User-Defined Menus.
32. Simple Tk Widgets.
Frames, Labelframes, and Toplevel Windows. The Label Widget. The
Message Widget. The Scale Widget. The bell Command.
33.
Scrollbars.
Using Scrollbars. The Scrollbar Protocol. The Scrollbar Widget.
34. The Entry and Spinbox Widgets.
Using Entry Widgets. Using Spinbox Widgets. Entry and Spinbox
Bindings. Entry and Spinbox Attributes. Programming Entry and
Spinbox Widgets.
35. The Listbox Widget.
Using Listboxes. The Listbox Widget. Listbox Bindings and Events.
Listbox Attributes.
36. The Text Widget.
Text Indices. Text Marks. Text Tags. The Selection.Tag Bindings.
Searching Text. Embedded Widgets. Embedded Images. Looking inside
the Text Widget. The Undo Mechanism. Text Bindings and Events. Text
Operations. Text Attributes.
37. The Canvas Widget.
Canvas Coordinates. Hello, World! The Min Max Scale Example. Canvas
Objects. Canvas Widget and Canvas Object State Options. Canvas
Operations. Generating Postscript. Canvas Attributes. Hints.
V. Tk DETAILS.
38. Selections and the Clipboard.
The Selection Model. The selection Command. The clipboard Command.
Selection Handlers.
39. Focus, Grabs, and Dialogs.
Standard Dialogs. Custom Dialogs. Animation with the update
Command.
40. Tk Widget Attributes.
Configuring Attributes. Size. Borders and Relief. The Focus
Highlight. Padding and Anchors.
41. Color, Images, and
Cursors.
Colors. Colormaps and Visuals. Bitmaps and Images. The Text Insert
Cursor. The Mouse Cursor.
42. Fonts and Text Attributes.
Naming a Font. X Font Names. Font Metrics. The font Command. Text
Attributes. Gridding, Resizing, and Geometry. A Font Selection
Application.
43. Send.
The send Command. The Sender Script. Communicating Processes.
Remote eval through Sockets.
44. Window Managers and Window
Information.
The wm Command. The winfo Command. The tk Command.
45. Managing
User Preferences.
App-Defaults Files. Defining Preferences. The Preferences User
Interface. Managing the Preferences File. Tracing Changes to
Preference Variables. Improving the Package.
46. A User
Interface to Bindings.
A Pair of Listboxes Working Together. The Editing Interface. Saving
and Loading Bindings.
VI. C Programming.
47. C Programming and Tcl.
Basic Concepts. Creating a Loadable Package. A C Command Procedure.
The blob Command Example. CONST in the Tcl 8.4 APIs. Strings and
Internationalization. Tcl_Main and Tcl_AppInit. The Event Loop.
Invoking Scripts from C.
48. Compiling Tcl and
Extensions.
Standard Directory Structure. Building Tcl from Source. Using Stub
Libraries. Using autoconf. The Sample Extension.
49. Writing a
Tk Widget in C.
Initializing the Extension. The Widget Data Structure. The Widget
Class Command. The Widget Instance Command Configuring and
Reconfiguring Attributes. Specifying Widget Attributes. Displaying
the Clock. The Window Event Procedure. Final Cleanup.
50. C
Library Overview.
An Overview of the Tcl C Library. An Overview of the Tk C Library.
VII. CHANGES.
51. Tcl 7.4/Tk 4.0.
wish. Obsolete Features. The cget Operation. Input Focus Highlight.
Bindings. Scrollbar Interface. pack info. Focus. The send Command.
Internal Button Padding. Radiobutton Value. Entry Widget. Menus.
Listboxes. No geometry Attribute. Text Widget. Color Attributes.
Color Allocation and tk colormodel. Canvas scrollincrement. The
Selection. The bell Command.
52. Tcl 7.5/Tk 4.1
Cross-Platform Scripts. The clock Command. The load Command. The
package Command. Multiple foreach loop variables. Event Loop Moves
from Tk to Tcl. Network Sockets. Multiple Interpreters and
Safe-Tcl. The grid Geometry Manager. The Text Widget. The Entry
Widget.
53. Tcl 7.6/Tk 4.2.
More file Operations. Virtual Events. Standard Dialogs. New grid
Geometry Manager. Macintosh unsupported1 Command.
54. Tcl/Tk
8.0.
The Tcl Compiler. Namespaces. Safe-Tcl. New lsort. tcl_precision
Variable. Year 2000 Convention. Http Package. Serial Line I/O.
Platform-Independent Fonts. The tk scaling Command. Application
Embedding. Native Menus and Menubars. CDE Border Width. Native
Buttons and Scrollbars. Images in Text Widgets. No Errors from
destroy. grid rowconfigure. The Patch Releases.
55. Tcl/Tk
8.1.
Unicode and Internationalization. Thread Safety. Advanced Regular
Expressions. New String Commands. The DDE Extension. Miscellaneous.
56. Tcl/Tk 8.2.
The Trf Patch. Faster String Operations. Empty Array Names. Browser
Plugin Compatibility. Finer Control of Windows Serial Port
Monitoring. Regular Expression Expanded Syntax Option.
57.
Tcl/Tk 8.3.
New File Manipulation Commands and Options. New glob Options.
Regular Expression Command Enhancements. Direct Return of scan
Matches. Removing Duplicate List Elements with lsort. Deleting
Elements from an Array. Enhanced clock Features. Support for
Delayed Package Loading in pkg_mkIndex. The Img Patch. The Dash
Patch. Other New Tk Features. The Patch Releases.
58. Tcl/Tk
8.4.
64-Bit Support. Additional Filesystem Features and Commands. New
and Enhanced List Commands. Array Searching and Statistics.
Enhanced Support for Serial Communications. New String Comparison
Operators. Command Tracing. Additional Introspection Commands.
Other Tcl Changes. New Tk Widgets. Text Widget Undo Mechanism and
Other Enhancements. New pack and grid Features. Displaying Both
Text and an Image in a Widget. New Button Relief Attributes.
Controlling the State of Entries and Listboxes. More Window Manager
Interaction. Other Tk Changes.
59. About The CD-ROM.
Technical Support.
Promotional Information
Practical Programming in Tcl/Tk is described as the "bible" for Tcl
programmers. It is a guide to the Tcl/Tk programming language and
GUI toolkit. This revision includes substantial updates to cover
the new version 8.4-giving both an overview of the features, as
well as details about every command in the language. The third
edition, written on version 8.2, sold over 30,000 copies. Version
8.4 of Tcl - Tool Command Language-provides substantial updates to
one of the most popular UNIX scripting languages. The latest
release, includes the addition of a virtual filesystem (VFS), many
additional programming widgets (spinbox, panedwindow,
labelframe),and improved performance of about 20% over 8.3. The
book provides a guide to the best ways to use the tooklit. It not
only gives accurate details, but includes extensive examples that
demonstrate the best way to use the toolkit. The authors are
experts that have both developed the technology and used it to
solve problems, so they have many valuable insights to relate to
the readers.
About the Author
BRENT B. WELCH is a software architect at Panasas, and former
researchengineer at Sun Microsystems and Xerox® PARC. He served as
senior webengineer at Scriptics, and has been involved in Tcl and
Tk from theirearliest days, developing major Tcl applications such
as the exmh email userinterface and TclHttpd web server.
Ken Jones has provided training and documentation for software
developersfor almost 20 years. He has specialized in the Tcl/Tk
language since 1998.
Jeffrey Hobbs is a member of the Tcl Core Team and the release
manager forTcl/Tk core. As Senior Developer at ActiveState, he is
technical lead forTcl technologies. He served as Tcl Ambassador for
Scriptics, and maintainsthe Tk Usage FAQ.