1.1 The "Hello, World!" example
1.2 Tcl variables
1.3 Command substitution
1.4 Simple arithmetic
1.5 Nested commands
1.6 Built-in math functions
1.7 Grouping expressions with braces
1.8 Quoting special characters with backslash
1.9 Continuing long lines with backslashes
1.10 Grouping with double quotes vs. braces
1.11 Embedded command and variable substitution
1.12 Defining a procedure
1.13 A while loop to compute factorial
1.14 A recursive definition of factorial
1.15 Using set to return a variable value
1.16 Embedded variable references
1.17 Using info to determine if a variable exists
1.18 Controlling precision with tcl_precision
2.1 A standalone Tcl script on UNIX
2.2 A standalone Tk script on UNIX
2.3 Using /bin/sh to run a Tcl script
2.4 The EchoArgs script
3.1 A simple CGI script
3.2 Output of Example 3-1
3.3 The guestbook.cgi script
3.4 The Cgi_Header procedure
3.5 The Link command formats a hypertext link
3.6 Initial output of guestbook.cgi
3.7 Output of guestbook.cgi
3.8 The newguest.html form
3.9 The newguest.cgi script
4.1 Comparing strings with string compare
4.2 Comparing strings with string equal
4.3 Mapping Microsoft World special characters to ASCII
5.1 Constructing a list with the list command
5.2 Using lappend to add elements to a list
5.3 Using concat to splice lists together
5.4 Double quotes compared to the concat and list commands
5.5 Modifying lists with linsert and lreplace
5.6 Deleting a list element by value
5.7 Sorting a list using a comparison function
5.8 Use split to turn input data into Tcl lists
5.9 Implementing join in Tcl
6.1 A conditional if then else command
6.2 Chained conditional with elseif
6.3 Using switch for an exact match
6.4 Using switch with substitutions in the patterns
6.5 A switch with "fall through" cases
6.6 Comments in switch commands
6.7 A while loop to read standard input
6.8 Looping with foreach
6.9 Parsing command-line arguments
6.10 Using list with foreach
6.11 Multiple loop variables with foreach
6.12 Multiple value lists with foreach
6.13 A for loop
6.14 A standard catch phrase
6.15 A longer catch phrase
6.16 There are several possible return values from catch
6.17 Raising an error
6.18 Preserving errorInfo when calling error
6.19 Raising an error with return
7.1 Default parameter values
7.2 Variable number of arguments
7.3 Variable scope and Tcl procedures
7.4 A random number generator.
7.5 Print variable by name
7.6 Improved incr procedure
8.1 Using arrays
8.2 Referencing an array indirectly
8.3 Referencing an array indirectly using upvar
8.4 ArrayInvert inverts an array
8.5 Using arrays for records, version 1
8.6 Using arrays for records, version 2
8.7 Using a list to implement a stack
8.8 Using an array to implement a stack
8.9 A list of arrays
8.10 A list of arrays
8.11 A simple in-memory database
9.1 Using exec on a process pipeline
9.2 Comparing file modify times
9.3 Determining whether pathnames reference the same file
9.4 Opening a file for writing
9.5 A more careful use of open
9.6 Opening a process pipeline
9.7 Prompting for input
9.8 A read loop using gets
9.9 A read loop using read and split
9.10 Copy a file and translate to native format
9.11 Finding a file by name
9.12 Printing environment variable values
10.1 Using list to construct commands
10.2 Generating procedures dynamically with a template
10.3 Using eval with $args
10.4 lassign: list assignment with foreach
10.5 The File_Process procedure applies a command to each line of a file
11.1 Expanded regular expressions allow comments
11.2 Using regular expressions to parse a string
11.3 A pattern to match URLs
11.4 An advanced regular expression to match URLs
11.5 The Url_Decode procedure
11.6 The Cgi_Parse and Cgi_Value procedures
11.7 Cgi_Parse and Cgi_Value store query data in the cgi array
11.8 Html_DecodeEntity
11.9 Html_Parse
12.1 Maintaining a tclIndex file
12.2 Loading a tclIndex file
13.1 Calculating clicks per second
13.2 Printing a procedure definition
13.3 Mapping form data onto procedure arguments
13.4 Finding built-in commands
13.5 Getting a trace of the Tcl call stack
13.6 A procedure to read and evaluate commands
13.7 Using info script to find related files
13.8 Tracing variables
13.9 Creating array elements with array traces
13.10 Interactive history usage
13.11 Implementing special history syntax
13.12 A Debug procedure
13.13 Time Stamps in log records
14.1 Random number generator using namespaces
14.2 Random number generator using qualified names
14.3 Nested namespaces
14.4 The code procedure to wrap callbacks
14.5 Listing commands defined by a namespace
15.1 MIME character sets.and file encodings
15.2 Using scripts in nonstandard encodings
15.3 Three sample message catalog files
15.4 Using msgcat::mcunknown to share message catalogs
16.1 A read event file handler
16.2 Using vwait to activate the event loop
16.3 A read event file handler for a nonblocking channel
17.1 Opening a client socket with a timeout
17.2 Opening a server socket
17.3 The echo service
17.4 A client of the echo service
17.5 Opening a connection to an HTTP server
17.6 Opening a connection to an HTTP server
17.7 Http_Head validates a URL
17.8 Using Http_Head
17.9 Http_Get fetches the contents of a URL
17.10 HttpGetText reads text URLs
17.11 HttpCopyDone is used with fcopy
17.12 Downloading files with http::geturl
17.13 Basic Authentication using http::geturl
18.1 A simple URL domain
18.2 Application Direct URLs
18.3 Alternate types for Application Direct URLs
18.4 A sample document type handler
18.5 A one-level site structure
18.6 A HTML + Tcl template file
18.7 SitePage template procedure
18.8 SiteMenu and SiteFooter template procedures
18.9 The SiteLink procedure
18.10 Mail form results with /mail/forminfo
18.11 Mail message sent by /mail/forminfo
18.12 Processing mail sent by /mail/forminfo
18.13 A self-checking form procedure
18.14 A page with a self-checking form
18.15 The /debug/source application-direct URL implementation
19.1 Creating and deleting an interpreter
19.2 Creating a hierarchy of interpreters
19.3 A command alias for exit
19.4 Querying aliases
19.5 Dumping aliases as Tcl commands
19.6 Substitutions and hidden commands
19.7 Opening a file for an unsafe interpreter
19.8 The Safesock security policy
19.9 The Tempfile security policy
19.10 Restricted puts using hidden commands
19.11 A safe after command
21.1 "Hello, World!" Tk program.
21.2 Looking at all widget attributes
22.1 Logging the output of a program run with exec
22.2 A platform-specific cancel event
22.3 A browser for the code examples in the book
22.4 A Tcl shell in a text widget
22.5 Macintosh look and feel
22.6 Windows look and feel
22.7 UNIX look and feel
23.1 Two frames packed inside the main frame
23.2 Turning off geometry propagation
23.3 A horizontal stack inside a vertical stack
23.4 Even more nesting of horizontal and vertical stacks
23.5 Mixing bottom and right packing sides
23.6 Filling the display into extra packing space
23.7 Using horizontal fill in a menu bar
23.8 The effects of internal padding (-ipady)
23.9 Button padding vs. packer padding
23.10 The look of a default button
23.11 Resizing without the expand option
23.12 Resizing with expand turned on
23.13 More than one expanding widget
23.14 Setup for anchor experiments
23.15 The effects of noncenter anchors
23.16 Animating the packing anchors
23.17 Controlling the packing order
23.18 Packing into other relatives
24.1 A basic grid
24.2 A grid with sticky settings
24.3 A grid with row and column specifications
24.4 A grid with external padding
24.5 A grid with internal padding
24.6 All combinations of -sticky settings
24.7 Explicit row and column span
24.8 Grid syntax row and column span
24.9 Row padding compared to widget padding
24.10 Gridding a text widget and scrollbar
25.1 Centering a window with place
25.2 Covering a window with place
25.3 Combining relative and absolute sizes
25.4 Positioning a window above a sibling with place
25.5 Pane_Create sets up vertical or horizontal panes
25.6 PaneDrag adjusts the percentage
25.7 PaneGeometry updates the layout
26.1 Bindings on different binding tags
26.2 Output from the UNIX xmodmap program
26.3 Emacs-like binding convention for Meta and Escape
26.4 Virtual events for cut, copy, and paste
27.1 A troublesome button command
27.2 Fixing the troublesome situation
27.3 A button associated with a Tcl procedure
27.4 Radiobuttons and checkbuttons
27.5 A command on a radiobutton or checkbutton
27.6 A menu sampler
27.7 A menu bar in Tk 8.0
27.8 A simple menu by name package
27.9 Using the Tk 8.0 menu bar facility
27.10 MenuGet maps from name to menu
27.11 Adding menu entries
27.12 A wrapper for cascade entries
27.13 Using the menu by name package
27.14 Keeping the accelerator display up to date
28.1 Reading an option database file
28.2 A file containing resource specifications
28.3 Using resources to specify user-defined buttons
28.4 Resource_ButtonFrame defines buttons based on resources
28.5 Using Resource_ButtonFrame
28.6 Specifying menu entries via resources
28.7 Defining menus from resource specifications
28.8 Resource_GetFamily merges user and application resources
29.1 Macintosh window styles
29.2 A label that displays different strings
29.3 The message widget formats long lines of text
29.4 Controlling the text layout in a message widget
29.5 A scale widget
30.1 A text widget and two scrollbars
30.2 Scroll_Set manages optional scrollbars
30.3 Listbox with optional scrollbars
31.1 A command entry
32.1 Choosing items from a listbox
33.1 Tag configurations for basic character styles
33.2 Line spacing and justification in the text widget
33.3 An active text button
33.4 Delayed creation of embedded widgets
33.5 Using embedded images for a bulleted list
33.6 Finding the current range of a text tag
33.7 Dumping the text widget
33.8 Dumping the text widget with a command callback
34.1 A large scrolling canvas
34.2 The canvas "Hello, World!" example
34.3 A min max scale canvas example
34.4 Moving the markers for the min max scale
34.5 Canvas arc items
34.6 Canvas bitmap items
34.7 Canvas image items
34.8 A canvas stroke drawing example
34.9 Canvas oval items
34.10 Canvas polygon items
34.11 Dragging out a box
34.12 Simple edit bindings for canvas text items
34.13 Using a canvas to scroll a set of widgets
34.14 Generating postscript from a canvas
35.1 Paste the PRIMARY or CLIPBOARD selection
35.2 Separate paste actions
35.3 Bindings for canvas selection
35.4 Selecting objects
35.5 A canvas selection handler
35.6 The copy and cut operations
35.7 Pasting onto the canvas
36.1 Procedures to help build dialogs
36.2 A simple dialog
36.3 A feedback procedure
37.1 Equal-sized labels
37.2 3D relief sampler
37.3 Padding provided by labels and buttons
37.4 Anchoring text in a label or button
37.5 Borders and padding
38.1 Resources for reverse video
38.2 Computing a darker color
38.3 Specifying an image for a widget
38.4 Specifying a bitmap for a widget
38.5 The built-in bitmaps
38.6 The Tk cursors
39.1 The FontWidget procedure handles missing fonts
39.2 Font metrics
39.3 A gridded, resizable listbox
39.4 Font selection dialog
40.1 The sender application
40.2 Hooking the browser to an eval server
40.3 Making the shell into an eval server
40.4 Remote eval using sockets
40.5 Reading commands from a socket
40.6 The client side of remote evaluation
41.1 Gridded geometry for a canvas
41.2 Telling other applications what your name is
42.1 Preferences initialization
42.2 Adding preference items
42.3 Setting preference variables
42.4 Using the preferences package
42.5 A user interface to the preference items
42.6 Interface objects for different preference types
42.7 Displaying the help text for an item
42.8 Saving preferences settings to a file
42.9 Read settings from the preferences file
42.10 Tracing a Tcl variable in a preference item
43.1 A user interface to widget bindings
43.2 Bind_Display presents the bindings for a widget or class
43.3 Related listboxes are configured to select items together
43.4 Controlling a pair of listboxes with one scrollbar
43.5 Drag-scrolling a pair of listboxes together
43.6 An interface to define bindings
43.7 Defining and saving bindings
44.1 The initialization procedure for a loadable package
44.2 The RandomCmd C command procedure
44.3 The RandomObjCmd C command procedure
44.4 The Tcl_Obj structure
44.5 The Plus1ObjCmd procedure
44.6 The Blob and BlobState data structures
44.7 The Blob_Init and BlobCleanup procedures
44.8 The BlobCmd command procedure
44.9 BlobCreate and BlobDelete
44.10 The BlobNames procedure
44.11 The BlobN and BlobData procedures
44.12 The BlobCommand and BlobPoke procedures
44.13 A canonical Tcl main program and Tcl_AppInit
44.14 A canonical Tk main program and Tk_AppInit
44.15 Calling C command procedure directly with Tcl_Invoke
46.1 The Clock_Init procedure
46.2 The Clock widget data structure
46.3 The ClockCmd command procedure
46.4 The ClockObjCmd command procedure
46.5 The ClockInstanceCmd command procedure
46.6 The ClockInstanceObjCmd command procedure
46.7 ClockConfigure allocates resources for the widget
46.8 ClockObjConfigure allocates resources for the widget
46.9 The Tk_ConfigSpec typedef
46.10 Configuration specs for the clock widget
46.11 The Tk_OptionSpec typedef
46.12 The Tk_OptionSpec structure for the clock widget
46.13 ComputeGeometry computes the widget's size
46.14 The ClockDisplay procedure
46.15 The ClockEventPro handles window events
46.16 The ClockDestroy cleanup procedure
46.17 The ClockObjDelete command