Differences between Wafe 0.92 and 0.93: - all Wafe commands are generated from a high level spefication - short reference guide (also generated automatically) - improved documentation with index - a wafe applications can connect to various x servers (see $WAFE/src/tcl/multi-screen.tcl) - wafe applications can participate in the window manager protocols; applications can handle "close" from Motif window manager et al. (see $WAFE/src/tcl/multi-screen.tcl) - the value of callbacks can be obtained via getValue (or gV) - support for OSF/Motif (not complete) - support for the XmGraph widget - better storage management - less memory leaks - better signal and exception handling - several bugfixes in Wafe and the contributed application programs - improved converter (it allow to set a x bitmap eg as background Pixmap) (conversion to Pixmap uses XFILESEARCHPATH, see also INSTALL) - based on tcl 6.5 (instead of 6.4 in Wafe 0.92) - based on xpm 3.2c (instead of 3.2 in Wafe 0.92) - a sample game xwafebrett - usenix 93 paper about wafe included several commands were changed in this release to determine display or make the commands more regular: ownSelection: new form ownSelection String \ register unregister old version: stdinHandler unregisterStdinHandler new version: register stdin ungregister stdin getValue: name in old version getValues the following commands have an additional first argument to determine the affected display: fetchBytes convertSelection storeBuffer fetchBuffer mergeResources setIconPixmap new general commands: setWMProtocols topLevel WM_DELETE_WINDOW applicationShell top2 dec3:0 "callback callback exec " not longer supported, replaced by "sV callback " or by the callback resource during creation WAFEAPPS: several bug-fixes and improvements m key in subjectbox in xwafenews marks selected articles d key (r key) in xwafedesign in tree display (R5) duplicates (removes) selected widgets improved text editing support for asciiText widgets (Thanks dov@menora.weizmann.ac.il (Dov Grobgeld)) defaultMailHost in wafe_mu.pl for xwafemail and xwafenews: used for mail adresses without @ and without elm alias wafedesign labeling of the nodes in the widget tree with sensible values allowing empty resorce lists bug with multiple references removed (as indicated by laplante@crim.ca (Pierre Laplante)) Here is the updated README file. The lines marked with "n" denote new features, "c" in the first column means "changed". ====================================================================== WHAT IS WAFE Wafe (Widget[Athena]front end) is a package that implements a symbolic interface to the Athena widgets (X11R5). A typical Wafe application consists of two parts: a front-end (Wafe) and an application program which runs typically as a separate process. The application program can be implemented in an arbitrary programming language and talks to the front-end via stdio. Since Wafe (the front-end) was developed using the extensible TCL shell (cite John Ousterhout), an application program can dynamically submit requests to the front-end to build up the graphical user interface; the application can even down-load application specific procedures into the front-end. In opposite to the described two process frontend approach, wafe applications can also be written purely in TCL, in which case only one process is needed. The distribution contains sample application programs in Perl, GAWK, Prolog, TCL, C and Ada talking to the same Wafe binary. Most of the following demo applications are implemented in Perl 4.0.35: c - xwafedesign: interactive design program for wafe applications c - xwafeftp: FTP front-end c - xwafemail: Mail user front-end with faces, using elm aliases c - xwafenews: NNTP based newsreader, using elm aliases c - xwafegopher: a very simple gopher interface c - xdirtree: tree directory browser c - xprojektor: white board program for the classroom c - xbm: bitmap and pixmap viewer c - xwafemc: multiple choice test answering program c - xruptimes: rwho monitor like xnetload c - xnetstats: network statistics, front-end for netstat -i c - xvmstats: system statistics, front-end for vmstat -i c - xiostats: io statistics, front-end for iostat -i c - xwafeping: pings several machines an show up-status c - xwafecf: a simple read only card-filer c - xwafetel: a simple read only Oracle front-end for looking up telephone numbers c - xwafeora: a more elaborated Oracle front-end with updates capable to model an entity type with distinct predicate defined subtypes, allowing multi valued attributes (it comes with sample applications "filing management" and "paper base") doing field completion and other funky stuff - primfakt.awk: primfakt program in GAWK using wafe - primfakt.prolog: primfakt program in Prolog using wafe - primfakt.perl: primfakt program in Perl using wafe - primfakt.c: primfakt program in C using wafe - primfakt.a: primfakt program in Ada using wafe - cprimfakt.c: native C implementation of primfakt (single process) - xprimfakt.tcl: primfakt program in TCL using wafe (single process) - perlwafe: an example program calling wafe as a subprocess of the application program (normally, it is the other way round). HOW CAN WAFE BE USED AS A FRONTEND Suppose you have an application program named "app". If we install a link like "ln -s wafe xapp" and execute "xapp ", the program "app" is spawn as a subprocess of wafe and connects its stdio channels with the front end. Lines written from the application program to stdout are read from Wafe. If the line starts with a certain character (such as %) Wafe tries to interpret the remainder of the line as TCL command. The standard TCL shell has been extended with new commands exploiting Athena widget set and the XPM library to build up user interfaces with the window system named X. In most example programs of the distribution the application program is run as a subprocess of wafe, one example (perlwafe) shows the opposite constellation where the "link magic" is not needed. ADVANTAGES of Wafe - application program can be written in wide range of programming languages - relatively high level interface to widget applications - single wafe binary for multiple applications - better refresh behavior when application program is busy - click ahead - better separation between user interface and application program matters - no need to hack C code - easier migration from existing ascii based programs to X-window applications REQUIREMENTS FOR APPLICATION PROGRAMS In order to use Wafe in a two process setup, an application program must be able to write **UNBUFFERED** to stdout (the application program must at least be able to flush the buffer) and to read from stdio. The application program determines the syntax in which Wafe talks back. AVAILABILITY Wafe was developed on DECstations 5000/200 under Ultrix 4.2 using X11R5, and has been tested on a SparcStation 1+ under SunOS 4.1, RS6000/320 under AIX and on a HP 9000/720 under hpux 8.05. Wafe can be compiled under X11R5 and X11R4. The preferred program-to-program communication is done via socketpair, support for PIPES and SYS V streams is included for systems without the socktepair system call. NECESSARY, BUT NOT INCLUDED Most application of the distribution are written in Perl. Perl 4.035 is needed to run these applications. Two applications will need oraperl. Only user with an Oracle license might find wafeora and wafetel useful. User might wish to compile wafe with the 3d athena widget library Xaw3d-0.1.tar.Z. Pointers can be found in the INSTALL file. PRERELEASE c The current distribution is a prerelease (version 0.93). The final version (whatever final means) will be posted after we got some feedback/suggestions from the network. ACKNOWLEDGEMENT The Wafe project would have been impossible without the availability of software in source form such as - X11R5 distribution from the MIT - TCL and TK (John Ousterhout) - Perl (Larry Wall) - XPM-Library (Arnaud Le Hors ) - dbug-Library (Fred Fish) - plotter widget set (Peter Klingebiel ) - XmGraph (Douglas Young) - Xaw3d (Kaleb Keithley ) - rdd2 (Roger Reynolds ) - oraperl (Kevin Stock ) - ftp.pl package (Alan R. Martello ) - chat2.pl package (Randall L. Schwartz ) - nntp.pl package (Randall S. Krebs) Only the most important packages are listed here. # Copyright (C) 1992,93 by Gustaf Neumann, Stefan Nusser # # Wirtschaftsuniversitaet Wien, # Abteilung fuer Wirtschaftsinformatik # Augasse 2-6, # A-1090 Vienna, Austria # neumann@wu-wien.ac.at, nusser@wu-wien.ac.at # # Permission to use, copy, modify, and distribute this software # and its documentation for any purpose and without fee is # hereby granted, provided that the above copyright notice # appears in all copies and that both that copyright notice and # this permission notice appear in all supporting documentation. # This software is provided "as is" without expressed or implied # warranty. Every user is permitted to create derivative work to this program. However, all copies of the program and its derivative works must contain the above copyright notice. We would like to ask every user to supply a copy of any change, enhancement or derivative work to the mailing address wafe@wu-wien.ac.at Thank you in advance. c Wafe 0.93 can be obtained via anonymous ftp from c ftp.wu-wien.ac.at:pub/src/X11/wafe/wafe-0.93.tar.Z c (for people without name server: the ip address is 137.208.3.4) A split up version is available from the same directory. c Does anybody know whether or not it is legal to make a c OSF/Motif binary of Wafe available? -gustaf PS: i will be unreachable between Jan 24 and Feb 6. -- Gustaf Neumann neumann@dec4.wu-wien.ac.at, neumann@awiwuw11.bitnet Vienna University of Economics and Business Administration Augasse 2-6, A-1090 Vienna, Austria Tel: +43 (222) 31-336 x4533 Fax: 347-555