|
|
1.1 ! root 1: The Tk Toolkit, Version 2.3 ! 2: ! 3: by John Ousterhout ! 4: University of California at Berkeley ! 5: ! 6: 1. Introduction ! 7: --------------- ! 8: ! 9: This directory contains the sources and documentation for Tk, which ! 10: is an X11 toolkit that provides the Motif look and feel and is ! 11: implemented using the Tcl command language. ! 12: ! 13: For an introduction to Tcl and Tk you may wish to read two papers: ! 14: ``Tcl: An Embeddable Command Language'', in the Proceedings of the ! 15: 1990 Winter USENIX Conference, and ``An X11 Toolkit Based on the Tcl ! 16: Language'', in the Proceedings of the 1991 Winter USENIX Conference. ! 17: A copy of the first paper is present in Postscript form in the file ! 18: "tcl/usenix.ps"; Postscript for the second paper is in "doc/usenix.ps". ! 19: Both Tcl and Tk have evolved quite a bit since these papers were ! 20: written so the papers are no longer complete or correct, but they will ! 21: give you an introduction to the systems. ! 22: ! 23: The following things are present in this directory and its subdirectories: ! 24: ! 25: 1. Tk, a toolkit for X11 windowing applications. ! 26: 2. Tcl, an embeddable command language on which Tk is based. ! 27: 3. Wish, a simple windowing shell that uses Tk and Tcl. ! 28: 4. A collection of demonstration scripts to illustrate the use ! 29: of various features of Tk. ! 30: ! 31: The enclosed code is known to run on most versions of SunOS and Ultrix ! 32: in combination with the X11R4 and X11R5 window servers from MIT. It ! 33: should also run with few or no changes on H-P and IBM workstations. ! 34: ! 35: 2. What's New In This Release ! 36: ----------------------------- ! 37: ! 38: Tk 2.2 is a major new release with a number of new features relative ! 39: to the 2.1 release. Here is a summary of some of the most significant ! 40: improvements: ! 41: ! 42: - There is now a text widget. It will display multiple lines of text ! 43: and allows the text to be edited (but the set of bindings for ! 44: editing isn't very rich yet). It also includes a tagging mechanism ! 45: that allows you to change the fonts, colors, etc. on a character- ! 46: by-character basis, and you can associate bindings with tags to ! 47: implement hypertext-like features. It handles large texts ! 48: efficiently. ! 49: ! 50: - Canvases have been improved in many ways, including new item types ! 51: (arcs, bitmaps, and subwindows), Bezier spline support for lines ! 52: and polygons, "coords" and "bbox" widget commands, and many other ! 53: improvements and bug fixes. ! 54: ! 55: - There is a new "grab" command that can be used to create modal dialog ! 56: boxes. ! 57: ! 58: - There is a new "tkwait" command for waiting for particular events to ! 59: occur (such as modal dialog box to complete its task). ! 60: ! 61: - The menu bindings have been completely reworked to have better Motif ! 62: compliance, such as keyboard traversal. ! 63: ! 64: - Individual menu entries can now have their own colors and fonts. ! 65: ! 66: - Most widgets (e.g. buttons, entries, text) now have a "-state" option ! 67: that can be set to "disabled" to make the widget insensitive. ! 68: ! 69: - A new "-disabledForeground" option allows you to request that disabled ! 70: buttons and menu entries be displayed in a dimmer color rather than with ! 71: a stippled version of the original color. ! 72: ! 73: - Entries and messages can now be tied to a variable so that either is ! 74: updated if the other changes. ! 75: ! 76: A good way to try out the new features is to run the "widget" demo; ! 77: there are a number of new demonstrations to illustrate the new features. ! 78: This release also contains many bug fixes. For a complete description ! 79: of the changes in this release, see the file "changes". As far as I ! 80: know there should not be any compatibility problems with respect to the ! 81: 2.1 release. ! 82: ! 83: 3. Documentation ! 84: ---------------- ! 85: ! 86: Manual entries for Tk are in the "doc" subdirectory as a set of files ! 87: with ".man" extensions. Man pages whose names start with capital letters ! 88: are for the procedures in Tk's C library. All other man pages document Tcl ! 89: commands provided by Tk. To print any of the man pages, cd to the "doc" ! 90: directory and invoke your favorite variant of troff using the normal ! 91: -man macros, for example ! 92: ! 93: ditroff -man <file> ! 94: ! 95: where <file> is the name of the man page you'd like to print. If you'd ! 96: like a complete set of hardcopy manual entries, send me a message with ! 97: your street address. ! 98: ! 99: Manual entries for Tcl are available in the subdirectory "tcl/doc"; ! 100: see the README file in the "tcl" directory for more information. ! 101: ! 102: Unfortunately, there doesn't yet exist a tutorial-style introduction ! 103: to the facilities of Tcl and Tk. The papers give a general introduction, ! 104: but it may be difficult to make the transition from the papers to the ! 105: manual entries. If you are familiar with the Xt toolkit then the Tk ! 106: facilities will probably be easy to pick up from the manual entries. ! 107: If you have no experience with X or Xt, you may wish to wait another ! 108: 6-12 months to use Tk, until a more gentle introduction is available. ! 109: ! 110: 4. Compiling Tk ! 111: --------------- ! 112: ! 113: Before attempting to compile Tk, personalize Makefile by following the ! 114: directions at the beginning of the file. You should also configure ! 115: Tcl by following the directions in the file "tcl/README". Then type ! 116: "make" in the top-level directory (the one that contains this file). ! 117: This will compile the Tk library and generate a simple windowing shell ! 118: called "wish". It will also compile the Tcl library, which is in the ! 119: "tcl" subdirectory. ! 120: ! 121: 5. Installing Scripts ! 122: --------------------- ! 123: ! 124: Tk depends on a library of scripts that establish default behaviors ! 125: for Tk widgets and do many other things. Tk normally expects the ! 126: scripts to be in /usr/local/lib/tk. Create this directory and copy ! 127: everything in the "library" subdirectory to it, including both files ! 128: and subdirectories. Or, if you don't want to create a subdirectory of ! 129: /usr/local/lib (or if you can't), you can either make a symbolic link ! 130: from there to the library subdirectory or you can add a "-DTK_LIBRARY" ! 131: switch to CFLAGS in Makefile; this will allow you to put the script ! 132: library anywhere you like. ! 133: ! 134: I also recommend installing the wish binary in /usr/local. The demo ! 135: scripts all work best when it is installed there. ! 136: ! 137: 6. Getting Started ! 138: ------------------ ! 139: ! 140: Once wish is compiled you can use it to play around with the Tk ! 141: facilities. If you run wish with no arguments, it will open a small ! 142: window on the screen and read Tcl commands from standard input. ! 143: Or, you can play with some of the pre-canned scripts in the subdirectory ! 144: scripts/demos. See the README file in the directory for a description ! 145: of what's available. The file scripts/demos/widget is a script that ! 146: you can use to invoke many individual demostrations of Tk's facilities. ! 147: ! 148: If you want to start typing Tcl/Tk commands to wish, I'd suggest ! 149: starting with the "bind" command. Then learn about a widget-creation ! 150: command like "button", and also learn about the "pack" and "place" ! 151: commands for geometry management. Note: when you create a widget, ! 152: it won't appear on the screen until you tell a geometry manager about ! 153: it. The only geometry managers at present are the packer and the placer. ! 154: If you don't already know Tcl, read the Tcl paper and the Tcl.man manual ! 155: entry in the tcl subdirectory. ! 156: ! 157: The easiest way to learn about writing new widgets is probably to look ! 158: at existing widget implementations. The demos directory contains an ! 159: example of a trivial widget, which you might find useful as a starting ! 160: point for writing new widgets. You might also take a look at main.c, ! 161: the main program for wish, to see how to write a main program that uses ! 162: the facilities of Tk and Tcl. ! 163: ! 164: 7. Newsgroup ! 165: ------------ ! 166: ! 167: There is a network news group "comp.lang.tcl" intended for the exchange ! 168: of information about Tcl, Tk, and related applications. Feel free to use ! 169: this newsgroup both for general information questions and for bug reports. ! 170: I read the newsgroup and will attempt to fix bugs and problems reported ! 171: to it. ! 172: ! 173: 8. Known Problems ! 174: ----------------- ! 175: ! 176: There are still many imperfections with the system. Below is a list ! 177: of some of the more serious omissions and bugs: ! 178: ! 179: 1. The widgets don't look very good on monochrome displays right now, ! 180: because I haven't had a chance to figure out how to do the 3-D ! 181: effects right without color. The widgets should look pretty good in ! 182: color. The widgets aren't fully Motif-compliant yet. In particular, ! 183: there is no keyboard navigation yet. The widgets will eventually ! 184: become fully Motif-compatible (assuming I can figure out how Motif ! 185: widgets are supposed to look and feel). ! 186: ! 187: 2. Tk doesn't work very well with virtual-root window managers such ! 188: as tvtwm. ! 189: ! 190: The file ToDo contains a list of various smaller bugs and mis-features ! 191: that haven't been fixed yet. ! 192: ! 193: 9. Feedback Wanted ! 194: ------------------ ! 195: ! 196: I'm very interested in getting feedback from you both about bugs and about ! 197: overall design issues. Send your comments to "[email protected]". ! 198: I'll do my best to fix show-stopping bugs quickly, but most other things ! 199: may not get fast turnaround, since I already have a zillion high-priority ! 200: things to fix or implement. Before submitting requests for new features ! 201: you may wish to check the file ToDo, which has a list of things I already ! 202: know about and plan to implement soon. ! 203: ! 204: 7. The Future ! 205: ------------- ! 206: ! 207: Tk is still young. I expect it to undergo substantial changes as I learn ! 208: more about its strengths and weaknesses. Some of the changes will not be ! 209: backward compatible: at this point I think it's more important to fix ! 210: problems and improve Tk's structure than to maintain compatibility. At ! 211: some point in the next year or so there will be a new release with major ! 212: incompatibilities. My plan is to save up as many as possible of the ! 213: incompatible changes that are needed and do them all at once.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.