The CTk Toolkit by Martin Andrews andrewm@ccfadm.eeg.ccf.org @(#) $Id: ctk.shar,v 1.50 1996/01/15 14:47:16 andrewm Exp andrewm $ 1. Introduction ---------------- This directory contains the sources for CTk, a curses port of John Ousterhout's Tk toolkit for X11. The information here corresponds to CTk 4.0. CTk 4.0 is based on Tk 4.0p3. Like Tk 4.0p3, it is designed to work with Tcl 7.4p3 and may not work with other releases of Tcl. Using CTk, applications with a modern GUI-ish interface can be created for character terminals. These same applications, without modification, can provide a real GUI interface by using Tk. Thus, sites with an embedded base of character terminals (and a small capital budget) can smoothly migrate to GUI applications. 2. Documentation ---------------- There is a man page for cwish (cwish(1)) explaining execution options for the CTk shell. For script writing, the Tk Documentation, along with the list of differences in section 5 of this document should be enough to get started. 3. Compiling and installing CTk ------------------------------- CTk requires TCL and a System V curses package (CTk will build with BSD curses but has at least one display glitch and many missing features - see porting.notes for more information). Unlike Tk, you do not need the source for Tcl to build CTk. Only the Tcl 7.4 library and include file (tcl.h) are necessary. If your system does not have a System V compatible curses, there is a free version, ncurses, available in GNU archives (for instance ftp://prep.ai.mit.edu/pub/gnu). CTk builds cleanly on the three systems I have easy access to: 486 PC running Linux 1.1.54 using gcc 2.58 and ncurses 1.8.5 HP 9000/835 running HP-UX 9.04 using optional ANSI C compiler and ncurses 1.8.6 or using K&R C compiler and hp curses (old system V, not very pretty) Sun 4c running Sun OS 4.13 using System V compiler (/usr/5bin/cc) and System V curses Perform the following steps to compile and install CTk: (a) Type "./configure" in this directory. This runs a configuration script created by GNU autoconf, which configures CTk for your system and creates a Makefile. If you are using ncurses, and the library is named "libncurses" instead of "libcurses" give the "-with-ncurses" option to configure. Also, if Tcl or curses are not installed in the standard search path, you can use "-with-libdirs=" and "-with-incdirs=" to add directories to the library and header search path, respectively (use the directives once, the argument can be a list of space separated directories). For more details on using configure, check out the autoconf documentation (not included here). (b) Type "make". This will create a library archive called "libctk.a" and an interpreter application called "cwish" that allows you to type Tcl commands interactively or execute script files. (c) If the make fails then you'll have to personalize the Makefile for your site or possibly modify the distribution in other ways. First check the file "porting.notes" to see if there are hints for compiling on your system. If you need to modify Makefile, there are comments at the beginning of it that describe the things you might want to change and how to change them. (d) Type "make install" to install CTk's binaries and script files in standard places. In the default configuration, information will be installed in /usr/local so you'll need write permission on this directory. If you'd like to use a default installation directory, you can change the "exec_prefix" and "prefix" definitions in the Makefile. (e) At this point you can play with Tcl by invoking the "cwish" program and typing Tcl commands. However, if you haven't installed CTk then you'll first need to set your CTK_LIBRARY environment variable to hold the full path name of the "library" subdirectory. I am interested in receiving information on changes required to build CTk on your platform. 4. Test suite ------------- Next release. (Really.) 5. Getting started ------------------ It is now easy to run cwish interactively. If you have not installed cwish set the CTK_LIBRARY environment variable to the path of the library directory, then try: cwish This will start cwish, and then pop-up a command dialog window where you can enter TCL commands. You can bring up this dialog at any time by pressing . You can also try out a simple demo of the cwish widgets with: cwish library/demos/stuff There are other demos in the library/demos directory including a crude port of the Tk widget demo (warning it is easy for the focus to get lost - if so press Ctrl+C to get the command dialog and type "exit" there). Key bindings are very nearly the same as for Tk (which is very nearly the same as Motif). This may be unfamiliar to people used to common Unix curses applications (elm, lynx, ..). I decided to stick with the Tk binding for two reasons: 1) Less confusion for users that switch between Tk and CTk versions of an application. 2) Easier to incorporate updates from Tk. Here is a quick summary of the key bindings for those unfamiliar with Motif (or Microsoft Windows): activates/selects a widget moves focus to next the widget moves focus to the prior widget activates the default button in a dialog Arrow keys move the cursor within a widget moves focus to the first menu closes a menu without making a selection Your terminal or terminfo entry may not support all the keys (like ). See README.TERM for tips on configuring terminfo entries for CTk. 6. Summary of differences between CTk 4.0b1 and Tk 4.0 -------------------------------------------------------- The following commands are not available in CTk: canvas clipboard message image scale selection send The wm command is severely crippled. None of the widgets support the scan method. The text widget does not support tag bindings: "text tag bind". The text widget does not support embedded windows "text window". The -tearoff option for menu widgets can create a tearoff entry, but the entry doesn't work (and I don't know if there is any point in making it work). Many configuration options (like -background and -foreground) cannot be modified. Attempts to set the unsupported options will silently be ignored. Querying the options with cget will return a fixed ?reasonable? value. The unsupported options are: -activebackground -activeborderwidth -activerelief -background -bg -bitmap -borderwidth (supported by widgets, not by text tags) -colormap -cursor -disabledforeground -exportselection -fg -font -foreground -highlightcolor -highlightbackground -highlightthickness -image -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -indicatoron -jump -relief -repeatdelay -repeatinterval -screen -selectbackground -selectborderwidth -selectcolor -selectforeground -selectimage -setgrid -tearoff -troughcolor -visual And a lot more I forgot to mention. 7. Support and bug fixes ------------------------ Send bug reports and suggestions for improvements to: Martin Andrews andrewm@ccfadm.eeg.ccf.org When reporting bugs, please provide a short cwish script that I can use to reproduce the bug. Make sure that the script runs with a bare-bones cwish and doesn't depend on any extensions. Also, please include three additional pieces of information with the script: (a) how do I use the script to make the problem happen (e.g. what keys do you press, in what order)? (b) what happens when you do these things (presumably this is undesirable)? (c) what did you expect to happen instead? For general problems with using Tk or Tcl, try posting to the comp.lang.tcl Usenet newsgroup. 8. Release organization --------------------------- Each CTk release is identified by two numbers separated by a dot, e.g. 3.2 or 3.3. These numbers match the release number of the corresponding Tk release. Suffixes for alpha, beta, and patch releases (aX, bX, and pX respectively) are numbered independent of Tk.