Practical Programming in Tcl and Tk, 3rd Edition

There are 8 sample chapters available in PDF format:
 Preface
1.Tcl Fundamentals
10.Quoting Issues and Eval
11.Regular Expressions
18.TclHttpd Web Server
22.Tk by Example
44.C Programming and Tcl
45.Compiling Tcl and Extensions

Main book page

Table of Contents

 List of Examples xxv
 List of Tables xxxv
 Preface xli
ITcl Basics 1
1.Tcl Fundamentals 3
 Tcl Commands 3
 Hello, World! 4
 Variables 5
 Command Substitution 5
 Math Expressions 6
 Backslash Substitution 7
 Grouping with Braces and Double Quotes 8
 Square Brackets Do Not Group 9
 Grouping before Substitution 9
 Grouping Math Expressions with Braces 10
 More Substitution Examples 10
 Procedures 11
 A Factorial Example 12
 More about Variables 13
 Funny Variable Names 14
 The unset Command 15
 Using info to Find Out about Variables 15
 More about Math Expressions 15
 Comments 16
 Substitution and Grouping Summary 17
 Fine Points 18
 Reference 20
 Backslash Sequences 20
 Arithmetic Operators 20
 Built-in Math Functions 21
 Core Tcl Commands 21
2.Getting Started 25
 The source Command 26
 UNIX Tcl Scripts 26
 Windows 95 Start Menu 27
 The Macintosh and ResEdit 28
 The console Command 28
 Command-Line Arguments 29
 Command-Line Options to Wish 29
 Predefined Variables 30
3.The Guestbook CGI Application 31
 A Quick Introduction to HTML 32
 CGI for Dynamic Pages 33
 The guestbook.cgi Script 34
 Using a Script Library File 35
 Beginning the HTML Page 36
 Simple Tags and Hypertext Links 36
 Using a Tcl Array for the Database 38
 Sample Output 39
 Defining Forms and Processing Form Data 39
 The newguest.html Form 40
 The newguest.cgi Script 41
 The cgi.tcl Package 43
 Next Steps 43
4.String Processing in Tcl 45
 The string Command 45
 String Indices 47
 Strings and Expressions 48
 String Matching 48
 Character Classes 50
 Mapping Strings 51
 The append Command 51
 The format Command 52
 The scan Command 54
 The binary Command 54
 Format Templates 55
 Examples 56
 Binary Data and File I/O 57
 Related Chapters 58
5.Tcl Lists 59
 Tcl Lists 59
 Constructing Lists 61
 The list command 61
 The lappend Command 62
 The concat Command 62
 Getting List Elements: llength, lindex, and lrange 63
 Modifying Lists: linsert and lreplace 64
 Searching Lists: lsearch 64
 Sorting Lists: lsort 65
 The split Command 65
 The join Command 67
 Related Chapters 67
6.Control Structure Commands 69
 If Then Else 70
 Switch 71
 Comments in switch Commands 72
 While 73
 Foreach 73
 Multiple Loop Variables 75
 Multiple Value Lists 76
 For 76
 Break and Continue 77
 Catch 77
 Catching More Than Errors 78
 Error 79
 Return 80
7.Procedures and Scope 81
 The proc Command 81
 Changing Command Names with rename 83
 Scope 83
 The global Command 84
 Call by Name Using upvar 85
 Variable Aliases with upvar 86
 Associating State with Data 86
 Namespaces and upvar 87
 Commands That Take Variable Names 87
8.Tcl Arrays 89
 Array Syntax 89
 Complex Indices 90
 Array Variables 90
 The array Command 91
 Converting Between Arrays and Lists 92
 Passing Arrays by Name 92
 Building Data Structures with Arrays 93
 Simple Records 93
 A Stack 94
 A List of Arrays 95
 A Simple In-Memory Database 96
9.Working with Files and Programs 99
 Running Programs with exec 99
 The auto_noexec Variable 101
 Limitations of exec on Windows 101
 AppleScript on Macintosh 101
 The file Command 102
 Cross-Platform File Naming 103
 Building up Pathnames: file join 104
 Chopping Pathnames: split, dirname, tail 105
 Manipulating Files and Directories 105
 Copying Files 106
 Creating Directories 106
 Deleting Files 106
 Renaming Files and Directories 107
 File Attributes 107
 Input/Output Command Summary 109
 Opening Files for I/O 110
 Opening a Process Pipeline 111
 Expect 112
 Reading and Writing 112
 The puts and gets Commands 112
 The read Command 113
 Platform-Specific End of Line Characters 114
 Random Access I/O 114
 Closing I/O Channels 115
 The Current Directory � cd and pwd 115
 Matching File Names with glob 115
 Expanding Tilde in File Names 116
 The exit and pid Commands 116
 Environment Variables 117
 The registry Command 117
IIAdvanced Tcl 119
10.Quoting Issues and Eval 121
 Constructing Code with the list Command 122
 The eval Command 122
 Commands That Concatenate Their Arguments 123
 Commands That Use Callbacks 124
 Command Prefix Callbacks 124
 Constructing Procedures Dynamically 125
 Exploiting the concat inside eval 126
 Using eval in a Wrapper Procedure. 126
 Correct Quoting with eval 128
 The uplevel Command 130
 The subst Command 132
 String Processing with subst 132
11.Regular Expressions 133
 When to Use Regular Expressions 134
 Avoiding a Common Problem 134
 Regular Expression Syntax 135
 Matching Characters 135
 Character Sets 135
 Quantifiers 136
 Alternation 136
 Anchoring a Match 137
 Backslash Quoting 137
 Matching Precedence 138
 Capturing Subpatterns 138
 Advanced Regular Expressions 138
 Compatibility with Patterns in Tcl 8.0 139
 Backslash Escape Sequences 139
 Character Classes 140
 Nongreedy Quantifiers 140
 Bound Quantifiers 141
 Back References 141
 Look-ahead 142
 Character Codes 142
 Collating Elements 142
 Equivalence Classes 143
 Newline Sensitive Matching 143
 Embedded Options 144
 Expanded Syntax 144
 Syntax Summary 145
 The regexp Command 148
 A Pattern to Match URLs 149
 Sample Regular Expressions 151
 The regsub Command 152
 Transforming Data to Program with regsub 153
 URL Decoding 153
 CGI Argument Parsing 154
 Decoding HTML Entities 156
 A Simple HTML Parser 158
 Stripping HTML Comments 160
 Other Commands That Use Regular Expressions 160
12.Script Libraries and Packages 161
 Locating Packages: The auto_path Variable 162
 Using Packages 163
 Loading Packages Automatically 163
 Packages Implemented in C Code 164
 Summary of Package Loading 165
 The package Command 165
 Libraries Based on the tclIndex File 166
 The unknown Command 167
 How Auto Loading Works 168
 Disabling the Library Facility: auto_noload 168
 Interactive Conveniences 169
 Auto Execute 169
 History 169
 Abbreviations 169
 Tcl Shell Library Environment 169
 Locating the Tcl Script Library 170
 tcl_findLibrary 170
 Coding Style 171
 A Module Prefix for Procedure Names 171
 A Global Array for State Variables 172
 The Official Tcl Style Guide 172
13.Reflection and Debugging 173
 The clock Command 173
 The info Command 176
 Variables 177
 Procedures 178
 The Call Stack 180
 Command Evaluation 180
 Scripts and the Library 181
 Version Numbers 182
 Execution Environment 182
 Cross-Platform Support 182
 Tracing Variable Values 183
 Read-Only Variables 184
 Creating an Array with Traces 184
 Interactive Command History 185
 History Syntax 186
 A Comparison to C Shell History Syntax 187
 Debugging 188
 Scriptics� TclPro 189
 TclPro Debugger 189
 TclPro Checker 189
 TclPro Compiler 189
 TclPro Wrapper 190
 Other Tools 190
 The tkinspect Program 190
 The Tuba Debugger 190
 The bgerror Command 190
 The tkerror Command 191
 Performance Tuning 191
 Time stamps in a Log 191
 The Tcl Compiler 192
14.Namespaces 195
 Using Namespaces 195
 Namespace Variables 197
 Qualified Names 198
 Command Lookup 198
 Nested Namespaces 199
 Importing and Exporting Procedures 200
 Callbacks and Namespaces 201
 Introspection 202
 The namespace Command 203
 Converting Existing Packages to use Namespaces 203
 [incr Tcl] Object System 204
 Notes 204
 Names for Widgets, Images, and Interpreters 205
 The variable command at the global scope 205
 Auto Loading and auto_import 205
 Namespaces and uplevel 205
 Naming Quirks 205
 Miscellaneous 206
15.Internationalization 207
 Character Sets and Encodings 208
 The System Encoding 208
 File Encodings and fconfigure 209
 Scripts in Different Encodings 210
 Unicode and UTF-8 210
 The Binary Encoding 211
 Conversions Between Encodings 211
 The encoding Command 212
 Message Catalogs 212
 Specifying a Locale 213
 Managing Message Catalog Files 213
 Message Catalogs and Namespaces 215
 The msgcat package 216
16.Event-Driven Programming 217
 The Tcl Event Loop 217
 The after Command 218
 The fileevent Command 219
 The vwait Command 220
 The fconfigure Command 221
 Nonblocking I/O 221
 The fblocked Command 223
 Buffering 223
 End of Line Translations 223
 End of File Character 224
 Serial Devices 224
 Character Set Encodings 224
 Configuring Read-Write Channels 224
17.Socket Programming 225
 Client Sockets 226
 Client Socket Options 226
 Server Sockets 227
 Server Socket Options 228
 The Echo Service 228
 Fetching a URL with HTTP 230
 Proxy Servers 231
 The HEAD Request 232
 The GET and POST Requests 234
 The fcopy Command 237
 The http Package 237
 http::config 238
 http::geturl 238
 http::formatQuery 241
 http::reset 241
 http::cleanup 241
 Basic Authentication 241
18.TclHttpd Web Server 243
 Integrating TclHttpd with your Application 244
 TclHttpd Architecture 244
 Domain Handlers 245
 Connection State and Query Data 246
 Returning Results 247
 Application Direct URLs 247
 Using Query Data 248
 Returning Other Content Types 249
 Document Types 249
 HTML + Tcl Templates 250
 Where to put your Tcl Code 251
 Templates for Site Structure 252
 Form Handlers 254
 Application Direct Handlers 255
 Template Form Handlers 256
 Self Posting Forms 257
 The form package 258
 Programming Reference 259
 Standard Application-Direct URLs 263
 Status 263
 Debugging 263
 Administration 265
 Sending Email 265
 The TclHttpd Distribution 266
 Quick Start 266
 Inside the Distribution 267
 Server Configuration 267
 Command Line Arguments 268
 Server Name and Port 268
 User and Group ID 269
 Webmaster Email 269
 Document Root 269
 Other Document Settings 270
 Document Templates 270
 Log Files 271
 CGI Directories 271
19. Multiple Interpreters and Safe-Tcl 273
 The interp Command 274
 Creating Interpreters 275
 The Interpreter Hierarchy 275
 The Interpreter Name as a Command 276
 Use list with interp eval 276
 Safe Interpreters 277
 Command Aliases 278
 Alias Introspection 278
 Hidden Commands 279
 Substitutions 280
 I/O from Safe Interpreters 281
 The Safe Base 282
 Security Policies 283
 Limited Socket Access 284
 Limited Temporary Files 286
 Safe after Command 289
20. Safe-Tk and the Browser Plugin 293
 Tk in Child Interpreters 294
 Embedding Tk Windows 294
 Safe-Tk Restrictions 295
 The Browser Plugin 296
 The embed_args and plugin Variables 296
 Example Plugins 296
 Setting Up the plugin 297
 Plugin Environment Variables 297
 UNIX Configuration 298
 Windows Configuration 298
 Macintosh Configuration 298
 Security Policies and Browser Plugin 299
 The Browser Package 300
 Configuring Security Policies 301
 The config/plugin.cfg File 301
 Policy Configuration Files 302
 Security Policy Features 303
 Creating New Security Policies 303
IIITk Basics 305
21.Tk Fundamentals 307
 Hello, World! in Tk 308
 Naming Tk Widgets 310
 Configuring Tk Widgets 310
 Tk Widget Attributes and the Resource Database 311
 The Tk Manual Pages 312
 Summary of the Tk Commands 312
22.Tk by Example 315
 ExecLog 315
 Window Title 317
 A Frame for Buttons 318
 Command Buttons 318
 A Label and an Entry 318
 Key Bindings and Focus 318
 A Resizable Text and Scrollbar 319
 The Run Procedure 319
 The Log Procedure 320
 The Stop Procedure 321
 Cross-Platform Issues 321
 The Example Browser 322
 More about Resizing Windows 325
 Managing Global State 325
 Searching through Files 325
 Cascaded Menus 326
 A Read-Only Text Widget 327
 A Tcl Shell 327
 Text Marks, Tags, and Bindings 330
 Multiple Interpreters 330
 Native Look and Feel 330
23.The Pack Geometry Manager 333
 Packing toward a Side 334
 Shrinking Frames and pack propagate 334
 Horizontal and Vertical Stacking 335
 The Cavity Model 336
 Packing Space and Display Space 337
 The -fill Option 337
 Internal Padding with -ipadx and -ipady 338
 External Padding with -padx and -pady 340
 Resizing and -expand 340
 Anchoring 342
 Packing Order 343
 Introspection 344
 Pack the Scrollbar First 344
 Choosing the Parent for Packing 345
 Unpacking a Widget 345
 Packer Summary 346
 The pack Command 346
 Window Stacking Order 347
24.The Grid Geometry Manager 349
 A Basic Grid 349
 The -sticky Setting 350
 External Padding with -padx and -pady 351
 Internal Padding with -ipadx and -ipady 352
 Multiple Widgets in a Cell 352
 Spanning Rows and Columns 353
 Row and Column Constraints 354
 Row and Column Padding 354
 Minimum Size 355
 Managing Resize Behavior 355
 The grid Command 356
25.The Place Geometry Manager 359
 place Basics 359
 The Pane Manager 361
 Parsing Arguments and Maintaining State 362
 Sticky Geometry Settings 362
 Event Bindings 363
 Managing the Layout 363
 The place Command 365
26.Binding Commands to Events 367
 The bind Command 367
 The bindtags Command 369
 Focus and Key Events 370
 Using break and continue in Bindings 370
 Defining New Binding Tags 371
 Event Syntax 371
 Keyboard Events 371
 Mouse Events 373
 Other Events 374
 Bindings on Top-level Windows 374
 Modifiers 375
 Event Sequences 377
 Virtual Events 378
 Event Keywords 379
IVTk Widgets 383
27.Buttons and Menus 385
 Button Commands and Scope Issues 386
 Buttons Associated with Tcl Variables 390
 Button Attributes 391
 Button Operations 393
 Menus and Menubuttons 394
 A Menu Bar 395
 System Menus 396
 Pop-Up Menus 396
 Option Menus 396
 Multicolumn Palette Menus 397
 Keyboard Traversal 397
 Manipulating Menus and Menu Entries 397
 Menu Attributes 399
 A Menu by Name Package 400
 Menu Accelerators 403
28.The Resource Database 405
 An Introduction to Resources 405
 Resource Patterns 406
 Loading Option Database Files 407
 Adding Individual Database Entries 408
 Accessing the Database 409
 User-Defined Buttons 409
 User-Defined Menus 411
 Application and User Resources 413
 Expanding Variables 414
29.Simple Tk Widgets 415
 Frames and Toplevel Windows 415
 Attributes for Frames and Toplevels 416
 Embedding Other Applications 417
 Toplevel Window Styles 417
 The Label Widget 418
 Label Width and Wrap Length 419
 Label Attributes 419
 The Message Widget 420
 Message Attributes 422
 Arranging Labels and Messages 422
 The Scale Widget 423
 Scale Bindings 423
 Scale Attributes 424
 Programming Scales 425
 The bell Command 426
30.Scrollbars 427
 Using Scrollbars 427
 The Scrollbar Protocol 429
 The Scrollbar set Operation 429
 The xview and yview Operations 431
 The Tk 3.6 Protocol 431
 The Scrollbar Widget 432
 Scrollbar Bindings 432
 Scrollbar Attributes 432
 Programming Scrollbars 433
31.The Entry Widget 435
 Using Entry Widgets 435
 Tips for Using Entry Widgets 436
 The Entry Widget 437
 Entry Attributes 438
 Programming Entry Widgets 439
32.The Listbox Widget 441
 Using Listboxes 441
 Programming Listboxes 443
 Listbox Bindings 445
 Browse Select Mode 446
 Single Select Mode 446
 Extended Select Mode 447
 Multiple Select Mode 448
 Scroll Bindings 448
 Listbox Attributes 449
 Geometry Gridding 449
33.The Text Widget 451
 Text Indices 451
 Inserting and Deleting Text 452
 Index Arithmetic 453
 Comparing Indices 453
 Text Marks 454
 Mark Gravity 454
 Text Tags 455
 Tag Attributes 455
 Mixing Attributes from Different Tags 457
 Line Spacing and Justification 457
 Tab Stops 459
 The Selection 460
 Tag Bindings 460
 Searching Text 461
 Embedded Widgets 462
 Embedded Images 464
 Looking inside the Text Widget 465
 Looking at Tags 465
 Looking at Marks 466
 Dumping the Contents 466
 Text Bindings 467
 Text Operations 469
 Text Attributes 471
34.The Canvas Widget 473
 Canvas Coordinates 473
 Hello, World! 474
 Canvas Tags 475
 The Min Max Scale Example 477
 Canvas Objects 481
 Arc Items 481
 Bitmap Items 482
 Image Items 483
 Line Items 484
 Oval Items 486
 Polygon Items 486
 Rectangle Items 487
 Text Items 488
 Window Items 492
 Canvas Operations 494
 Generating Postscript 496
 Canvas Attributes 498
 Hints 500
 Screen Coordinates vs. Canvas Coordinates 500
 Large Coordinate Spaces 500
 Scaling and Rotation 500
 Resources 500
 Objects with Many Points 501
 Selecting Canvas Items 501
VTk Details 503
35.Selections and the Clipboard 505
 The Selection Model 505
 The selection Command 507
 The clipboard Command 508
 Selection Handlers 508
 A Canvas Selection Handler 509
36.Focus, Grabs, and Dialogs 513
 Standard Dialogs 513
 Message Box 514
 File Dialogs 514
 Color Dialog 515
 Custom Dialogs 516
 Input Focus 516
 The focus Command 517
 Keyboard Focus Traversal 517
 Grabbing the Focus 518
 The tkwait Command 518
 Destroying Widgets 519
 The focus, grab, tkwait sequence 519
 Prompter Dialog 521
 Keyboard Shortcuts and Focus 522
 Animation with the update Command 522
37.Tk Widget Attributes 525
 Configuring Attributes 525
 Size 526
 Borders and Relief 528
 The Focus Highlight 529
 Padding and Anchors 530
 Putting It All Together 531
38.Color, Images, and Cursors 533
 Colors 534
 Color Palettes 535
 Color Values 535
 Colormaps and Visuals 538
 Bitmaps and Images 539
 The image Command 540
 Bitmap Images 540
 The bitmap Attribute 541
 Photo Images 542
 The Text Insert Cursor 544
 The Mouse Cursor 545
39.Fonts and Text Attributes 547
 Naming a Font 548
 Named Fonts 549
 System Fonts 549
 Unicode Fonts 549
 X Font Names 550
 Font Failures before Tk 8.0 551
 Font Metrics 552
 The font Command 552
 Text Attributes 553
 Layout 553
 Selection Attributes 554
 Gridding, Resizing, and Geometry 554
 A Font Selection Application 555
40.Send 559
 The send Command 560
 Send and X Authority 560
 The Sender Script 561
 Communicating Processes 563
 Remote eval through Sockets 564
41.Window Managers and Window Information 569
 The wm Command 569
 Size, Placement, and Decoration 570
 Icons 571
 Session State 572
 Miscellaneous 573
 The winfo Command 574
 Sending Commands between Applications 574
 Family Relationships 575
 Size 576
 Location 577
 Virtual Root Window 578
 Atoms and IDs 578
 Colormaps and Visuals 579
 The tk Command 580
42.Managing User Preferences 581
 App-Defaults Files 581
 Defining Preferences 583
 The Preferences User Interface 585
 Managing the Preferences File 588
 Tracing Changes to Preference Variables 590
 Improving the Package 590
43.A User Interface to Bindings 593
 A Pair of Listboxes Working Together 595
 The Editing Interface 597
 Saving and Loading Bindings 598
VIC Programming 601
44.C Programming and Tcl 603
 Basic Concepts 604
 Getting Started 604
 C Command Procedures and Data Objects 604
 SWIG 605
 Tcl Initialization 605
 Calling Out to Tcl Scripts 606
 Using the Tcl C Library 606
 Creating a Loadable Package 607
 The load Command 607
 The Package Initialization Procedure 608
 Using Tcl_PkgProvide 609
 A C Command Procedure 609
 The String Command Interface 610
 Result Codes from Command Procedures 612
 Managing the String Result 612
 The Tcl_Obj Command Interface 613
 Managing Tcl_Obj Reference Counts 615
 Modifying Tcl_Obj Values 616
 Pitfalls of Shared Tcl_Obj Values 617
 The blob Command Example 618
 Creating and Destroying Hash Tables 618
 Tcl_Alloc and Tcl_Free 620
 Parsing Arguments and Tcl_GetIndexFromObj 620
 Creating and Removing Elements from a Hash Table 623
 Building a List 624
 Keeping References to Tcl_Obj Values 624
 Using Tcl_Preserve and Tcl_Release to Guard Data 625
 Strings and Internationalization 626
 The DString Interface 627
 Character Set Conversions 627
 Tcl_Main and Tcl_AppInit 628
 Tk_Main 630
 The Event Loop 632
 Invoking Scripts from C 633
 Variations on Tcl_Eval 633
 Bypassing Tcl_Eval 634
45.Compiling Tcl and Extensions 639
 Standard Directory Structure 640
 The Source Distribution 640
 The Installation Directory Structure 641
 Building Tcl from Source 641
 Configure and Autoconf 642
 Standard Configure Flags 643
 Installation 645
 Using Stub Libraries 645
 Using autoconf 646
 The tcl.m4 File 646
 Makefile Templates 647
 The Sample Extension 647
 configure.in 648
 Makefile.in 649
 Standard Header Files 651
 Using the Sample Extension 651
46.Writing a Tk Widget in C 653
 Initializing the Extension 654
 The Widget Data Structure 654
 The Widget Class Command 655
 The Widget Instance Command 659
 Configuring and Reconfiguring Attributes 662
 Specifying Widget Attributes 666
 Displaying the Clock 671
 The Window Event Procedure 674
 Final Cleanup 675
47.C Library Overview 677
 An Overview of the Tcl C Library 678
 Application Initialization 678
 Creating and Deleting Interpreters 678
 Creating and Deleting Commands 678
 Dynamic Loading and Packages 678
 Managing the Result String 679
 Memory Allocation 679
 Lists 679
 Command Parsing 679
 Command Pipelines 680
 Tracing the Actions of the Tcl Interpreter 680
 Evaluating Tcl Commands 680
 Reporting Script Errors 681
 Manipulating Tcl Variables 681
 Evaluating Expressions 681
 Converting Numbers 681
 Tcl Objects 681
 Primitive Object Types 682
 String Object Types 682
 ByteArrays for Binary Data 682
 Dynamic Strings 683
 Character Set Encodings 683
 AssocData for per Interpreter Data Structures 683
 Hash Tables 684
 Option Processing 684
 Regular Expressions and String Matching 684
 Event Loop Implementation 684
 File Handlers 685
 Timer Events 685
 Idle Callbacks 685
 Input/Output 685
 I/O Channel Drivers 686
 Manipulating File Names 686
 Examining the File System 686
 Thread Support 686
 Working with Signals 687
 Exit Handlers 687
 An Overview of the Tk C Library 687
 Main Programs and Command-Line Arguments 687
 Creating Windows 687
 Application Name for Send 688
 Configuring Windows 688
 Window Coordinates 688
 Window Stacking Order 688
 Window Information 689
 Configuring Widget Attributes 689
 The Selection and Clipboard 689
 Event Loop Interface 689
 Handling Window Events 689
 Event Bindings 690
 Handling Graphic Protocol Errors 690
 Using the Resource Database 690
 Managing Bitmaps 690
 Creating New Image Types 690
 Using an Image in a Widget 690
 Photo Image Types 691
 Canvas Object Support 691
 Geometry Management 691
 String Identifiers (UIDS) 692
 Colors, Colormaps, and Visuals 692
 3D Borders 692
 Mouse Cursors 692
 Fonts and Text Display 693
 Graphics Contexts 693
 Allocate a Pixmap 693
 Screen Measurements 693
 Relief Style 693
 Text Anchor Positions 693
 Line Cap Styles 694
 Line Join Styles 694
 Text Justification Styles 694
 Atoms 694
 X Resource ID Management 694
VIIChanges 695
48.Tcl 7.4/Tk 4.0 697
 wish 697
 Obsolete Features 697
 The cget Operation 698
 Input Focus Highlight 698
 Bindings 698
 Scrollbar Interface 699
 pack info 699
 Focus 699
 The send Command 700
 Internal Button Padding 700
 Radiobutton Value 700
 Entry Widget 700
 Menus 701
 Listboxes 701
 No geometry Attribute 701
 Text Widget 702
 Color Attributes 702
 Color Allocation and tk colormodel 703
 Canvas scrollincrement 703
 The Selection 703
 The bell Command 703
49.Tcl 7.5/Tk 4.1 705
 Cross-Platform Scripts 705
 File Name Manipulation 705
 Newline Translations 705
 The tcl_platform Variable 706
 The console Command 706
 The clock Command 706
 The load Command 706
 The package Command 707
 Multiple foreach loop variables 707
 Event Loop Moves from Tk to Tcl 707
 Network Sockets 707
 info hostname 708
 The fconfigure Command 708
 Multiple Interpreters and Safe-Tcl 708
 The grid Geometry Manager 708
 The Text Widget 708
 The Entry Widget 708
50.Tcl 7.6/Tk 4.2 709
 More file Operations 709
 Virtual Events 709
 Standard Dialogs 710
 New grid Geometry Manager 710
 Macintosh unsupported1 Command 710
51.Tcl/Tk 8.0 711
 The Tcl Compiler 711
 Compile-Time Errors 712
 Binary String Support 712
 Namespaces 712
 Safe-Tcl 712
 New lsort 713
 tcl_precision Variable 713
 Year 2000 Convention 713
 Http Package 713
 Serial Line I/O 714
 Platform-Independent Fonts 714
 The tk scaling Command 714
 Application Embedding 714
 Native Menus and Menubars 714
 CDE Border Width 715
 Native Buttons and Scrollbars 715
 Images in Text Widgets 715
 No Errors from destroy 715
 grid rowconfigure 715
 The Patch Releases 715
 fconfigure -error 716
 tcl_platform(debug) 716
 tcl_findLibrary 716
 auto_mkindex_old 717
 Windows Keysyms for Start and Menu Keys 717
 The MouseWheel Event 717
 Transparent Fill on Canvas Text 717
 safe::loadTk 717
52.Tcl/Tk 8.1 719
 Unicode and Internationalization 719
 fconfigure -encoding 719
 The encoding Command 720
 The msgcat Package 720
 UTF-8 and Unicode C API 720
 Thread Safety 720
 The testthread Command 720
 Advanced Regular Expressions 721
 New String Commands 721
 The DDE Extension 722
 Miscellaneous 722
 Serial Line I/O 722
 tcl_platform(user) 722
53.Tcl/Tk 8.2 723
 The Trf Patch 723
 Faster String Operations 723
 Empty Array Names 724
 Browser Plugin Compatibility 724
54.Tcl/Tk 8.3 725
 Proposed Tcl Changes 726
 Octal Numbers 726
 file channels 726
 Changing File Modify Times 726
 regsub -subst or -command 726
 New glob options 726
 Internationalization 726
 Proposed Tk Changes 727
 The Img Patch 727
 Canvas Improvements 727
 Pointer Warping 727
 Hidden Text 727
 Entry Widget Validation 727
55.About The CD-ROM 729