This is patch6 for Wafe 0.96. It contains: o All changes included in patch 1 to patch 5 (see wafe-0.96.p1.README, wafe-0.96.p2.README, wafe-0.96.p3.README, wafe-0.96.p4.README and wafe-0.96.p5.README) o based on tcl 7.3 (instead of 7.2) o new commands: + fontHeight Widget fontResource returns the height of a font in pixels. The font is taken is taken from the given fontResource of the given widget. + popupChildren Widget this command is similar to [gV Widget children] of a composite widget, but it returns the list of popup Shells (eg: TransientShells) which are created as children of the given widget. Popup shells are not required to be children of composite widgets. If a widget has no popup children an empty list is returned. + alias newCommand oldCommand can be used to register an alternate name (newCommand) for an existing command (oldCommand). o removed commands: + asciiTextAppend Widget Text can be easily achieved using 'sV Widget string [gV Widget string]$Text' + simple this command created an instance of the simple widget class, which is primarily used for subclassing o new naming conventions (NNC) Most of the native command names of wafe/mofe have been changed between relative to the previous version to solve the name clash problem between Tcl's list command and Wafe's command to generate a list widget. I have to decided not to use the proposed ":" apporach to leave the use of other tcl extensions (such as [incr tcl] which uses ":" as well to separate class names) open for future enhancements. Here are the new naming rules: 1) All widget creation commands - start with a capital letter - are identical with the widgetClass of the created widget - the widgetClass is the value returned by [getClass ...] (as a consequence the former Athena asciiText is now called Text) 2) All widget set specific commands are prefixed with the same prefix - Xaw for Athena widget specific commands, - Xm for OSF/Motif specific widgets and commands, - At for Plotter widgets and commands 3) All toolkit and xlib commands have naming conventions like all previous wafe releases: - leading X, Xt, XtApp, XtVa prefixes are stripped, - the first character is lowercased Reasons: a) many commands names contain c programming conventions, which are meaningless for Wafe user: * XtAppAddTimeOut vs. XtAddTimeOut Wafe's addTimeOut is implemented using the recommended XtAppAddTimeOut, which uses as first argument the application context. Wafe supports only one application context, which is invisible for a Wafe user. we use: addTimeOut * example XtSetValues vs. XtVaSetValues Wafe's setValues (sV) is implemented using XtSetValues but has argument conventions closer to XtVaSetValues we use: sV or setValues * distinction between xlib commands and Xt commands are not important for a Wafe user; in many cases where windows are expected as arguments (typical for xlib commands), widgets are passed in Wafe; the distinction between a xlib and a command xt command is not important for an enduser, who might ask: "why is it called XBell and XtTranslateCoords". we use: bell and translateCoords b) consistency: * XtSetSensitive setBusy Xt's XtSetSensitive sets a widget and it's children sensitive or insensitive, Wafe's own setBusy has same argument structure and busy-fies the specified Widget. Using for one command the name 'XtSetSensitive' and the other 'setBusy' is confusing, giving Wafe's setBusy an Xt or X prefix (setBusy is implemented using various Xt and Xlib commands) is missleading. we use: setSensitive and setBusy * XtDisownSelection and ownSelection Wafe's ownSelection differs significantly from XtOwnSelection where several function pointers and procedures are involved, so we should not call it XtOwnSelection. Using for "Disown" the Xt prefix and for "Own" no prefix is confusing. we use: disownSelection and ownSelection c) Xt and Xlib are the basic underlaying mechanism in Wafe, they are the true core of Wafe. Replacing these libraries by others is more work than replacing Tcl by another interpreter. Xt and Xlib will be used always in Wafe. Naming conflicts will be highly unlikely since each additional widget set will have its own prefix. o We provide two migration tools to change older scripts to the new conventions: a) auto aliasing of old naming conventions to new ones: the tcl library of wafe has a subdirectory called bc (backward compatibility) which provides name automatic aliasing: if an old name is used a warning message is displayed and the new name is used instead. The warning message is displayed only once for each command. Example: if you execute the following script !#/usr/bin/X11/wafe --f command c topLevel label "Hello World" realize the warning message ** alias command Command will be displayed and "Command" will be executed instead of "command" Note1: automatic name aliasing requires 1) the standard tcl library (not Wafe specific); As shipped this library will be installed in /usr/local/lib/tcl; this default directory name can be altered during compilation of tcl. At runtime of Wafe, the environment variable TCL_LIBRARY could be used to point to to this library if it is on a different place. 2) the Wafe specific tcl library (the standard location as distributed is /usr/lib/X11/wafe, the standard location can be altered in wafe/src/Imakefile, the environment variable WAFELIB can be used to point at runtime to a different place) Note2: auto aliasing works only for undefined commands, so it will not automatically map the old "list ....." to "List ...." you will have to change this command by hand or by using renameCommands (see next item) b) wafe/src/renameCommands This is a small perl script that expects a wafe program as single command line argument (i.e. perl-script, wafeperl/mofeperl script or a pure wafe/mofe script) and changes command names from the old naming conventions to the new ones. renameCommands makes first a backup copy of the old script (adding .bak to the name of the old script) substitues commands and writes to a new file with the same name. at the end the renameCommands displays the differences between the old and the new script. note1: renameCommands is a simple minded script to support the renaming transition. it is far away from being perfect. In particular, watch out for occurances of - Label (using the old naming conventions "label" is both a command to create an instance of the label widget class and a resource name) - Form (some scripts use form as widget name) renameCommands changes short names (up to 5 characters, where unintended changes are likely) more carefully by checking whether the command is not preceded by a $ or { (Tcl variables or arguments) and verifying that the following word starts with a character (this will handle for example 'command c topLevel label "xxx"' correctly by not changing the resource name 'label') note2: renameCommands reads the information about old and new naming conventions from $WAFELIB/tcllib/bc. if tcllib is not installed in /usr/lib/X11/wafe, set the environment variable WAFELIB to the right directory. If you have not installed wafe at all, you might set WAFELIB to the src directory of Wafe (/wafe/src). o initial library functions (available via auto_loading): - showRes ... displays resources of a given widget try "wafe --e 'Command c topLevel;showRes c;quit'" to see the resources of a Command widget - library support to create new widgets classes in tcl - sample file selector implemented as a wafe widget try "wafe --f wafe/src/tcl/filesel" o new library configuration: - wafe/tcl7.3/Makefile: check after ./configure whether points to a TCL_LIBRARY points to a writable location - in order to install the standard (not Wafe specific) tcl libraries issue a make install-libraries in wafe/tcl7.3, unless you have the tcl library already installed - wafe/src/Imakefile Check the variable WAFELIB. it should point to a place on your system where Wafe-specific libraries are installed. If you use Wafe already with the distributed Perl written Wafe applications, you know already this library. The WAFELIB directory will contain subdirectories like bitmaps, faces, perl, tcllib, etc. At runtime of wafe, the the environment variable WAFELIB could be used to override the default specified in the Imakefile. To apply this patch, "cd" to the wafe 0.96 directory, expand the tar file, and do a "rm -f ../libhtmlw/*.a src/htmlwGen.o; make". Please note that in cases where you have 0.96 not installed, you should a) first get the wafe 0.96 distribution, expand the tar file, expand the wafeapps.tar.gz tar file as indicated in wafe/INSTALL, and b) expand this update 'over' the 0.96 distribution, and follow then the instructions in wafe/INSTALL -gustaf