.in 2.5i [An Andrew ToolKit view (a raster image) was included here, but could not be displayed.].in 4i .sp -1.25i Andrew Consortium 106 Smith Hall School of Computer Science Carnegie Mellon University 5000 Forbes Avenue Pittsburgh, PA 15213-3891 15 January 1993 Andrew User Interface System: New and Revised Features in Version 5.2.0 edited by Wilfred J. Hansen Director, Andrew Consortium After a year of effort, the Andrew Consortium staff is pleased to present Version 5.2.0 of the Andrew User Interface System containing many new and improved features, including those discussed in our newsletters. Many changes were wrought by the consortium staff: Gary Keim, Rob Ryan, Andy Plotkin, Susan Straub, and Doug DeJulio. Others were sent in various contributors, to whom we are grateful, including Todd Inglett, IBM Rochester Wayne Richardson, IBM Rochester Robert Kemmetmueller, IBM Rochester Nathaniel Borenstein, Bellcore John Myers, Carnegie Mellon Bill Janssen, Xerox PARC This release of the Andrew User Interface System--including the Andrew User Environment, the Andrew Toolkit, and the Andrew Message System--is for Consortium members. Release to non-members of the consortium is not allowed so we can encourage more organizations to join; larger membership increases our capability for enhancing the system and maintaining the source as it accrues changes from sites everywhere. (Version 5.2 is sufficiently similar to 5.1 that code and changes from 5.1 users can still be important contributions.) Depending on class of membership, some members may be given written permission to make wider distribution of the system. A version of 5.2.0 with some bug fixes will appear on the X11 tape Release 6, at which time it will be available for users everywhere. The ATK copyright notice and disclaimer is now displayed in various key files such as the toplevel Imakefile and the README. It is displayed on starting up programs that use frame. This document is derived from the log entries made at the time of making the source code change. A more complete, and less polished, listing of those entries is available on request. For presentation here, the entries have been divided in four categories: User Visible Changes - of interest to all users System Maintainer Visible Changes - for those who install the system Programmer Visible Changes - for those coding with ATK Trivial Changes - changes just barely worth mentioning Where help is available on a feature, there will appear the notation `help feature` indicating the command to give in a typescript or the term to give to the help menu option "Show help on." In all but the first section, the source files relevant to a change are listed at the head of the entry. File names beginning with "$ANDREWDIR" are those in the installed files; other file names beginning without a slash are in the source tree. User visible changes ____________________________________________ New applications and Insets Launchapp Launchapp displays a menu of the various AUIS applications. It can serve as an alternative to the shell for initiating AUIS applications. Give the command `launchapp`; there is no help file; just click on the buttons. (Here at the School of Computer Science, the commands `atk` and `auis` also run launchapp. Sites can choose their own aliases.) Prefed Prefed is an editor for the preferences file (by whatever name the user calls it). It displays existing preferences and offers graphical options to change them; help is available on each option. `help prefed` Figure Drawing editor; faster and more reliable than zip, but lacks zip's capability for multiple levels of detail. `help figure` Image Image supplements the existing raster inset by providing for multibit pixels: color and greyscale images. Unlike raster, however, editing operations are not supported. A variety of image storage formats are supported such as jpeg, and gif. `help image` Troff-embed inset The contrib/mit/annot directory installs an inset for embedding troff commands in text. These could be entered under the FormatNote style, but the inset approach makes them more visible. `help troff-inset` ____________________________________________ New general facilities Key equivalents in menus Menus now display the equivalent keystroke combinations. File name canonicalization In most instances, prompts for a file name will accept the following: $XXX where XXX is an environment variable, ~user/ or ~user@afs-cell/ at the beginning of the file name, /../ at the beginning of a filename to refer to superroot. Keyboard-macro-to-ness-macro conversion facility With this facility users can define new key stroke and menu operations dynamically. The macro can be created with the usual keyboard macro { ^X-( ... ^X-) } and then edited. `help macros` Commands and documentation for emulating gnu-emacs `help gnucompat` or `help ez-gnu` `help ez-emacs-diffs` When fonts go awry - New documentation suggests some things to try. There is one document, but it can be viewed via any of `help fonts`, `help icons`, or `help cursors`. ATKCONSOLEHOST - When this environment variable is given a value of the form hostname[:port#] subsequent error messages to stderr are instead redirected to the named host. ANDREWFONTDIR - If this environment variable is specified, its value is taken as the name of a directory to be add to the X server fontpath during application startup. Iconic Startup Applications will now accept a -iconic flag to indicate that initial windows should start out iconified. When started in this way applications don't wait for the first expose event, so when messages is started this way it does its startup processing without waiting for the window to appear. WM_DELETE_WINDOW protocol This patch from Todd Inglett for means that killing a window from the window manager will properly terminate the application. ____________________________________________ New documentation Intro A user introduction to the Andrew User Environment is installed into $ANDREWDIR/doc/intro.doc. This is suitable for printing; it describes how to get started, names the important applications, and shows how to get help. Frequently Asked Questions The answers to frequently asked questions have been amassed into an FAQ.ez file which resides at the top level of the source tree, but is not at present installed. There are sections for problems building the system and problems using it. Updated examples The example programs for atk applications and objects residing in source files ./atk/examples/ex... have been updated for the filename changes of version R4. Other various cleanups and modernizations have happened and they all now compile and execute. Note and postscript insets Documentation has been added for the annotation and postscript embedding insets whose sources are in contrib/mit/annot: `help note`, `help psinset` Help document for MIME-format electronic mail: `help mime` MIT thesis format The MIT Thesis package is a set of various sample files and support files designed to help you to format your thesis using ez. The sources do not install these files; they are in the sources in ./contrib/mit/thesis/. Conference papers The papers from the 1992 Andrew Consortium Technical Conference are in the source in directory ./doc/papers/atk/conference/ ____________________________________________ New preferences For definitions and setting these preferences, see the `prefed` application described above. XStyleSelections and StrictXStyleSelections - In some X applications, the act of selecting text automatically makes it the source for any subsequent paste operation. (You can't do "replace" operations!) These two preferences cause ATK applications to behave just like X applications. QuitWindowOnly, QuitBuffer - Can eliminate the distinction between to Quit and Delete Window menu options. DynamicMessageLineSize, ResizableMessageLine, MinimumMessageLines The message line can grow and shrink either dynamically or in response to user action. (WJH: I recommend setting DynamicMessageLineSize to Yes; it is disabled because others didn't like it in one annoying case that has since been fixed.) ScrollClass, RasterScrollClass, FigureScrollClass - with these the choice can be made among scrollbars and a few alternatives such as panners. HighlightToBorders - The highlight of the text selection has been changed so the newline is part of the preceeding line rather than th efollowing. Now, when the first word on a line is selected, the highlight includes only that word. The old behavior can be recovered by setting this preference to TRUE. TabsCharSpaces - controls the number of spaces a tab character is equivalent to when TabsCharacters is enabled for a style. LineThruFormatNotes - When enabled, text in the FormatNote style is shown with a line drawn through it. (Thanks to Bill Cattey.) ForceMetaMail - A list of types of message contents which should be sent in metamail format. The default list is empty. MailSendingFormat - Determines what is done when sending formatted mail. May choose between MIME, Andrew format, and others. ____________________________________________ Improvements to existing applications and insets Click boxes in help All .help files have been converted to use the new 'Help Topic' font for references. They will appear surrounded with dotted boxes and can be simply clicked on to traverse to the reference. Editing rasters When editing a raster you can now select the "Toolset" menu item. A separate window will appear with a menu of operations available. It is also possible to overlay an arbitrary inset, such as text, on top of a raster. After adjusting it to the desired image, its bits can be frozen to become part of the raster image. Thereafter, they can be edited just like any other part of the raster. Lookz inset The layout of the lookz image was reapportioned and the Enable and Disable boxes were revised to include DottedBox and . The option "Pass thru" was renamed to "Format Note" and removed from the initial display (it can be gotten via .) Todd Inglett contributed two changes: DeleteStyle is now a menu option; it prompts for a style and deletes it. The base document is now updated whenever a change is made. Srctext Andrew has always had a diverse collection of tools for editing files particular formats: ctext for C code, mtext for Modula code, and so on. These have now been superseded with a more generalized mechanism provided by IBM Rochester. The superclass "srctext" provides general source text editing mechanisms which are supplemented by subclasses to provide editors for even more source languages than before. General help is available via `help srctext`. Help is also available for the following modes (each followed by the language and a set of possible extensions for which the mode might be appropriate.) asmtext (Assembly Language) .asm .s cpptext (C++) .C .H ctext (C) .c .h .ch .eh .ih m3text (Modula-3) .m3 .i3 mtext (Modula-2) .mod .def rawtext (ASCII text, discard styles) preferences, .atkinit, ... A 'hlptext' mode exists, but is used internally by the `help` application. Moreover, there is an undocumented mode 'modtext' for Modula-X files. The following source modes continue to exist, but are not subclasses of srctext. `Help` is available for both. ltext (Lisp, Flames) .l .lsp .eli .flms ... ptext (Pascal) .p Some names of proc-table entries have changed, which may require changes to .atkinit, .ezinit, and other .xxxinit files. For instance, instead of ctextview-newline, the procedure is srctextview-newline; so that, for instance, to change the binding of control-J you would write addkey srctextview-newline ^J srctextview srctextview inherit Ez - Changed such that you don't get prompted for a initial filename when no filename argument is given. Template for typescript This change to typescript attempts to read a ``typescript.tpl'' template which is then used for typescript's text. The only styles that are used are bold and global, but you can do nifty things like make the command line green. Simply copy $ANDREWDIR/lib/tpls/typescript.tpl to the directory named in your typescript.atktemplatepath preference and edit your copy of the template. Datacat - You can now use either absolute or relative filenames in @include lines. There is a "clean up" facility and input can be read from stdin. `help datacat` Bdffont - Numerous bug fixes and cleaning up. The font editor now works on all bdf format fonts we have been able to find. Tm - Revised so that tabs will behave as expected for a terminal. Printer options - The options box size is now scaled so the check box area and printer name areas relative to the resolution of the display so the text will be visible. Popup menu - preferences were renamed. The old preferences may still work in .Xdefaults, but only the new names apply in the preferences file. Here are the popup menu preferences, with old names (if any) in parentheses: PopupTitleFont (TitleFont), PopupItemFont (SelectionFont), PopupKeysFont (SelectionFont), PopupClickInterval (ClickInterval), PopupOverlapPct (OverlapPct), PopupPaneSpread (PaneSpread), PopupUseSaveUnder (UseSaveUnder), PopupForegroundColor (MenuForeground), PopupKeysColor (MenuKeys), PopupBackgroundColor (MenuBackground), MotifPopupMenus, PopupTopShadowColor, PopupBottomShadowColor, PopupBottomShadowColor. Toez - Fixed so it no longer generates two copies of the input file for troff input. Pushbuttons - Buttons now print (rudimentarily) using troff. Bush - Added preference for AutoRescan that defaults to no. Now bush does not rescan the directories as often, thus improving performance. - Fixed sorting of dir entries. - Added two new proctable entries: bushv-entries-page-up and bushv-entries-page-down. - Bound the new proctable entries PageDown and PageUp as well as ^v and ESC-v. ____________________________________________ Messages MIME format support has been augmented, There is now better support for message bodies of type multipart/digest. And messages bodies may contain items of type image/gif, image/pbm, image/ppm, image/pgm, and image/jpeg. There was a bug in the delivery system that kept MIME messages from netnews; this has been fixed. MIME documentation has been added to `help messages` The preferences ForceMetaMail and MailSendingFormat described (far) above have been added to let users choose mail sending formats. The mailobj inset used by Messages to handle non-native MIME objects no longer gives an obscure message, but rather says something like "Running MetaMail to display StarTrek.gif". The "clean up body" menu item no longer exists, as its action has become the default (it was made efficient enough that it doesn't really slow things down). This makes the ClariNet groups in particular much easier to read. The big visible difference is that basically, any message that has underscore-backspace-letter in it will display the letter with the underscore style. To see the raw body, you need to use the "show raw body" menu item. (John Myers) There is now a preference called "ReadMailFolders" that, when set to TRUE, will cause the newer behavior of the 'Read Mail' menu item: all folders currently visible are removed, and the set of personal folders with new mail are displayed. The default value for "ReadMailFolders" is FALSE, resulting in the old behavior. Fixed the ~/.signature bogosity -- it checks the home directory now. The checkpoint line for sendmessage is now minuscule. It is no longer a reason not to set the DynamicMessageLineSize preference to True. ____________________________________________ Text Selecting a word at the beginning of a line will no longer select all the way to the left margin. This behavior can be disabled with the HighlightToBorders preference. Printing of color text is now supported using the \X'...' facility of ditroff. If the color chages in the middle of a word, an extra space will appear. Added support for the X style selection mechanism. See preferences XStyleSelections and StrictXStyleSelections. There is now a ChangeBar style. Text marked with this style is displayed with change bars in the margin. (There is no support for automatically marking text with this style.) The style which was called ChangeBar is now called StrikeThrough. ____________________________________________ Ness - Version 1.7 New functions These new functions are documented in $ANDREWDIR/doc/atk/ness/nessfunc.doc. - ReadRawFile and WriteRawFile functions. The file is read or written as though it is just a string of bytes, even if they constitute valid ATK objects. See $ANDREWDIR/doc/atk/ness/nessfunc.doc. - QueueAnswer and QueueCancellation. These support the macro facility. They enqueue responses to proctable commands which prompt the user in the message line. A Ness function can now visit a new file in a buffer via QueueAnswer(desiredfile) frame_visit_file() - WriteObject. Writes an object value to a file. There is a new function written in Ness which italicizes keywords in Ness programs: see $ANDREWDIR/lib/ness/italicize.n and $ANDREWDIR/doc/atk/ness/nessfunc.doc. Ness now offers a collection of REXX-like functions for string manipulation. Unlike most Ness functions, these create new strings each time they are called. See $ANDREWDIR/doc/atk/ness/rexf.doc. File names are now canonicalized in numerous contexts within Ness. Such names may begin with tilde to refer to a users' home directory and may contain $XXX to be replaced by the value of environment variable XXX. The contexts affected include: - arguments to 'call ness-load' in .xxxinit files - file name arguments to nessrun - the file name argument to functions readfile, readrawfile, writefile, writerawfile, and writeobject. The argument to ness-load can be the name of a file in one of the directories named in the nesspath preference. In strings it has been the case that the caret (^) was a special character that was interpreted as making the next character a control character. This has been changed so that caret is now itself. The sequence backslash caret letter is now converted to the control character corresponding to the letter. Nessrun timing messages now go to stderr instead of stdout. "Sysmark"s are now correctly allocated and deallocated during compilation. This corrects one of the causes of arbitrary core dumps when Ness functions were compiled multiple times. Fixed core dump bug if ThisCell stuff is not initialized right. --wdc The new fancy search algorithm in Ness had at least two bugs which have now been corrected. This fixes the problem in dict.n and probably xmas.d as well. ____________________________________________ Improvements to general facilities Proctable names are now case-insensitive This means that entries in .atkinit and other .xxxinit files do not have to be careful in capitalization of the names of proctable entries. Copy/paste on multiple displays fixed Added per display Atom caching, the old code would possibly fail to perform copy/paste operations on any display other than the first. Menubar preferences Some of the preferences for the menubar were renamed. See `prefed`. Arrow keys fixed They will now work even if num-lock or caps-lock is on. Administrator visible changes Disclaimers and Copyrights For all files that could be reasonably adapted, a $Disclaimer:$ field was added. This is then instantiated with a disclaimer at the time of checking out the files from RCS. In this way, files can have different permissions depending on the release; those for the X tape release will have the typical X permissions and disclaimer. At the same time, old style $xxx$ fields were discarded. In . c files there are now blocks of the form: #ifndef NORCSIDS #define NORCSIDS static char *rcsid = "$Header:$"; #endif The ATK copyright notice and disclaimer is now displayed in various key files like the toplevel Imakefile and the README. It is displayed on starting up programs that use frame. You will note that the disclaimer restricts distribution of the source and binaries for version 5.2.0 of the Andrew User Interface System. An update of this version will be released on the X tape release 6 at the end of 1993. Until then, this version is for use of Consortium members. Please make it clear to people at your site that these restrictions are in place to help foster the long term existence of the consortium by encouraging membership. Without members, we would no longer be able to perform our functions of providing a central source repository, maintaining the sources for multiple platforms, and enhancing the Andrew system with new facilities. More New Preferences ShowColorStyles - When disabled, the color attributes in text styles are ignored. Defaults to off for monochrome displays and to on for color displays. CheckOwnerHome - Helps determine how the window title is truncated. When the option is enabled (the default), the user id of the owner of the file is abbreviated at the front of the name. ForceMonochromeThreshold - If the screen has fewer than this many color cells, it will be treated like a static gray monochrome screen. (default 16) ErrorsToConsole - Defaults to yes. When set to No it suppresses the redirection of stderr to console; they will likely show up in the shell script used to launch the application. (See ATKCONSOLEHOST.) AddFontPath - Defaults to yes. Normally Andrew applications attempt to add a font directory to the X server for the fonts used by Andrew applications. When the AddFontPath preference is No, the fontpath is not augmented. AndrewFontDir - If specified, this preference lists a directory to be add to the X server fontpath during application startup. (See ANDREWFONTDIR.) OptimizeProtocol - When enabled, this option attepmts to reduce the traffic of calls to the X server. This is experimental, so the current default is No. ParanoidWindowLocationCaching - Before this option was installed, ATK would frequently query the X server about window locations. Now, unless this option is set to Yes, window locations are only requested from the server when the application wants to know. ReadMailFolders - If set TRUE, when the 'Read Mail' menu item is selected all others folders will be dismissed. The default is False, which retains the old behavior. PopupKeysSpacing - Determines the amount of space between the longest item name on the popup menu and the key equivalents. Documentation Table of Contents (manually created) The file atk/doc.toc refers to the documents and subdirectories containing doc.toc files and .doc files. This may be examined manually or the set of files may be printed via cd andrew-source-directory datacat -I ./atk/doc.toc | lpr Warning: Prints a vary large document. You should split it up before printing. Note: doc.toc was created manually; only documents in the ./atk tree (and not all of them) are printed. (Moreover, datacat -I will not work untilthe first patch.) New documentation on some things to try when fonts go awry `help fonts` `help icons` `help cursors` (These all refer to the same help file.) Some new documentation for the message system - ams/utils/muserver/muserver.d describes the message server - ams/doc/AMS.ovr - an overview of the Andrew Message System Added support for ispell3 which is an Internationalized version of ispell. The behavior of the -a flag is not backward-compatible with previous versions X Protocol Optimizations The X atoms ATK needs to communicate with window managers, and other clients are now cached in a property on the root window, avoiding many costly round-trip requests on invocation of subsequent ATK processses. When the preference CacheShades is set to yes the gray shade pixmaps used by ATK are also cached in a property on the root window. Again saving start up time on subsequent invocations of ATK processes. When the preference OptimizeProtocol is set to yes some unnecessary operations are omitted in the cursor management code. This preference defaults to no, since it is not yet clear that no bugs arise. _____________________________________________________ Source tree rearrangement The source tree was rearranged to deemphasize some facilities Moved to contrib/ overhead/pobbconf CMU specific code for managing trees of bboards overhead/parsec generalized parser for C code atk/calc a simple graphic calculator atk/champ appointments calendar manager atk/examples/atkbook the examples from Nathaniel Borenstein's book atk/zip superseded by figure inset, but needed for old docs Moved from contrib to contrib/srctext: ltext, ptext (still useful) m3text, mtext (superseded by atk/srctext) Removed from the distribution (copies of the code are available on previous releases) atk/kal (not fully implemented) atk/console/consoles/*.vop (used at CMU for monitoring servers) atk/form (not implemented) atk/gob (not used) atk/value.R4 (obsolete) atk/ness/token (superseded by atk/syntax) config/{pmax_3,sun2_35,sun3_35,rt_r3,vax_3} (obsolete) contrib/{rctext,rmtext,compress} (new versions in atk/srctext) contrib/parsegen (replaced with atk/syntax/...) install (replaced by inst) ______________________________________________________ Changes to system build process New platforms are now supported: Added to overhead/class/machdep/: aix_32, sun_sparc_mach, dec_mach, mach_rt Added to config/: rs_aix32, rt_mach, hpx.series, sun4_mach, pmax_mach README.ez - Added descriptions of MK_METAMAIL, METAMAIL_ENV site variables. - Added section 1.2.9 Notes for displaying on an Open Windows server. - Added bdffont to list in section 2.2.5 Contrib. - Included info on support for the NeXT. ossupport/Imakefile Added hpx sys dependent directory. config/Imakefile Removed HP def. config/Imakefile Install hpux.series hack include file for hpux 8.0 or greater. config/Imakefile, platform.tmpl Renamed hp.series to hpx.series to avoid macro expansion. Changed hpux.series to hp since hpux was somehow being defined as 1. config/allsys.h - Added #define MK_JPEG. - Added #defines for TRUE & FALSE so that they get into andrewos.h. The only other place that I know they exist is in class.h. - Added #define MK_TIFF and appropriate comments for sites that already have the TIFF lib. config/allsys.mcr Changed XBINDIR and XUTILDIR defaults to /usr/bin/X11. config/allsys.mcr Added macros for JPEGLIB and TIFFLIB. config/andrew.rls - Added "ForceInstallFiles(files, mode, dest)" macro. - The .ih files were getting continuously remade because the ones in the $ANDREWDIR/include/atk have an older time than the corresponding .ch files. Two lines were reversed in andrew.rls. config/hp700_80/system.mcr Added XBINDIR and XUTILDIR. config/imake.tmpl - Moved platform.tmpl include before test for HP_OS since the hp system files define this. - Moved #include platform.tmpl after INST*FLAGS macros. - Moved MacroIncludeFile after #include of platform.tmpl. config/platform.tmpl - Added hack for determining which Series of HP9000 is being used. It now #includes "hpux.series" where the builder must enable the proper defines. - I added defined(rs6000) to check for a 6000. IBM's imake that comes on an examples source tree defines this instead of _IBMR2. It may not apply easily to your platform.tmpl because yours doesn't attempt to distinguish AIX 3.1 from AIX 3.2. - Added cruft to determine AIX3.2-ness. - Added tests for MACH to support sun4_mach. - Added pmax_mach sys type. config/pmax_ul4/system.mcr Changed COMPILERFLAGS and removed quotes around compiler options. config/rs_aix31/system.h - Made a macro for setreuid. It is now bound to atk_setuid which is defined in the ossupport directory for the 6000. - ANSI_COMPILER tells makefiles that the compiler in use can handle prototypes, stdarg, and const at least. config/rs_aix31/system.mcr - Added IBMEXPFILE and IBMEXP make macros. This points to the exports file needed by clients of libclass.a (runapp, doindex, etc). - Added SYS_LIBRARIES = $(DESTDIR)/lib/libossup.a to get better setreuid. - Added defines _POSIX_SOURCE, _ALL_SOURCE, and some-other-source. overhead/Imakefile Removed WM and CWM from build process, commented out build of CONV. overhead/class/lib/Imakefile,class.c, class.h overhead/class/machdep/aix_31/makedo.csh overhead/class/pp/class.c Todd Inglett's changes for a static libclass on the RS/6000. overhead/class/machdep/aix_31/Imakefile, libclass.exp, makedo.csh Install the libclass exports file in the Imakefile. The exports file must start with #!. Makedo now imports symbols from this installed exports file and no longer links with libiclass.a (my previous dynamic load hack). Note that the imports file (libclass.imp) is not used in this implementation and may be deleted. overhead/class/machdep/aix_31/doload.c If doload_trace is non zero .dog files will be preferred to .do files. __________________________________________________ Other minor changes atk/apps/statload.c Statically load the color and colormap classes. atk/basics/x/Imakefile - Changed the way libX11.a is linked for the HP. We want relative reference to the library (-L$XLIBDIR -lX11) so that the shared library is used. - Added installation of atkatoms program to initialize the atom cache on a display. atk/help/maint/mkindex.c Added -n argument to fake-it. atk/console/stats/ Added versions for rs_aix32, sun4_mach, pmax_mach, rt_mach. (The mach versions are not yet fully operational.) atk/chart/Imakefile Removed build of chartmap since it doesn't look like it does anything and it won't build since zip is not built until contrib now. ams/delivery/trymail/trymail.c Patch submitted by John Myers: This patch is only relevant to sites runing AMDS (the Andrew Mail Delivery System). It removes the requirement that an address have an "ID" field in the White Pages in order for AMDS to deliver mail to it. ams/utils/muserver/Imakefile Now install an ATK format version of muserver.8 and put it in ${ANDREWDIR}/doc/ams. ams/lib/ms/* Patch submitted by Nathaniel Borenstein: Better support added for private bboards on non-AFS systems. For the preferences editor, prefed, the system build process concatenates the .pr files from each source directory to build $ANDREWDIR/lib/prefs.def. This file can be edited to improve descriptions and add local preferences; however, to be permanent, changes need to be made to the source files. Programmer visible changes Preference description files: .pr To support the preference editor, prefed, source directories need to provide xxx.pr files to describe the preferences provided by those applications. The format of these files is in source file atk/prefed/writing.prs and is installed in $ANDREWDIR/doc/writing.prs. (Writing.prs is not in 5.2.0, but will appear in the first patch.) Two new classes have been added to the graphics model to handle color. The generic versions of these are in atk/basics/common/{cmap.c,cmap.ch,color.c,color.ch} Minor general changes CMUCS - Numerous files have code #ifdef'ed under CMUCS. These are for the Computer Science environment at CMU. NULL - In numerous places, where appropriate, NULL was replaced with '\0'. Global names - global variable names can be a problem when objects are statically linked. Therefore, in several files global names are being modified to be more unique. (This will happen in the first patch.) Posixification Many files were "Posixified", mostly by Todd Inglett. This meant converting to use posix defined libraries; primarily, strchr() and strrchr() are now used instead of index() and rindex(). The other things done relate to signal handling, particularly the return type, and to return values from wait. Also some prototypes were added under ifdef POSIX (related to signal handler functions), some, if not all of these have been expanded to test POSIX and __STDC__ separately, since under AIX we compile with POSIX compliance, but old style C. In this process various additional corrections from IBM Rochester were incorporated into the sources. Owatch This new class eases the burden of ensuring that destroyed objects are not referenced. It is currently used only by the internals of the observable class to avoid a crash when a trigger callback causes the destruction of the object the trigger is pulled on. It may also be useful in code asking questions through the message line to ensure that any objects which will be operated on weren't destroyed while the question was being asked. Traced 'Traced' has been inserted in the class hierarchy as a superclass of observable, and thus as a superclass of most inset objects. It supports reference counting so objects are not destroyed too early. object_Destroy() has been modified to call Destroyp and ignore the Destroy if FALSE is returned. As one example, the viewref object Reference's its dataobject to avoid premature destruction. Syntax A new set of tools has been introduced for token analysis and parsing. They are in the source tree as the atk/syntax subtree. Subdirectories include -- bison - a modified version of the Bison parser from the Free Software Foundation. One modification is an extension to allow strings such as "<=" to serve as tokens. Another is the addition of a switch which causes the bison processor to produce just tables, with no parser. The bison manual is in the source as both bison.texinfo and a set of derived bison.info files suitable for use with the gnu-emacs info mode. -- parse - This is a parser object that uses tables as generated by the modified bison and calls on a lexical analyzer which is a subclass of lexan. -- lexan - This is a superclass for lexical analyzers acceptable to the parse object. It also provides classprocedures for parsing numbers and for converting backslashed escape sequences. -- tlex - This is subclass of lexan and lexically analyzes input in the form of an ATK text object. Lexical analyzers for tlex are described in xxx.tlx files which are converted by a processor called gentlex into xxx.tlc files. The lexeme description language is documented in source file atk/syntax/tlex/tlex.doc, which is not currently copied during the system install process. -- sym - A symbol table package suitable for keeping track of symbols discovered by tlex. (But tlex and sym are independent.) Converted Ness and bdffont to use the new syntax mechanisms Exceptions An exception handling object has been added to source directory atk/support. Clients can use macros to TRY code that might RAISE an exception. See except.ch. Panners New panner and scpanner objects have been added to atk/supportviews. Programmers can use them in building applications. Users can replace scrollbars with panners via the ScrollClass, RasterScrollClass, and FigureScrollClass preferences. ______________________________________________________ Other new files atk/basics/x/atoms.h atoms.c atkatoms.c X atoms are now cached on a per-display basis. atk/basics/common/ rastio.c rastio.ch routines for writing and reading compressed byte streams (moved here from atk/raster) atk/support/ hash.c hash.ch (from atk/rofftext) glist.c glist.ch glist.doc (from atk/glist) ghash.c ghash.ch (new generalized hashing routines) strcache.c strcache.ch (string cache, uses glist) atk/apt/suite/suitex1a.c{,h} (trivial suite application) atkams/messages/lib/writeone.c WriteOneFile has been split out of sendaux.c overhead/util/hdrs/ ansitext.h mathaux.h units.h (used by bdffont) overhead/util/lib: Imakefile, encode.c, systypes.awk, system.c, xbasedir.c moved MIME-related encoding routines from atk/raster/cmd/raster.c to overhead/util/lib/encode.c overhead/class/lib/iclass.c (now obsolete) overhead/genmake/genmake.proto helpindex/help.alias (now obsolete) Null application To support the creation of applications, an application object was added to the null inset installed into $ANDREWDIR/lib/null. This object is also made available as part of any new inset created with createinset. Mkbrowse A graphical representation of the class hierarchy can be created and viewed. The system installation process installs the system tree into $ANDREWDIR/doc/atk/classes.org; you can create a tree for other class hierarchies: `help mkbrowse` ossupport A few system library functions that are unavailable on some platforms have been provided in the ossupport directory. They are installed in $ANDREWDIR/lib/libossup.a; Imakefiles that compile programs should include ${SUPLIBS} among the list of system libraries. ______________________________________________________ Other Notes Many of these notes are included here not only to describe changes, but also to provide cautionary lessons in how to write code consistent with the existing Andrew Toolkit code. Imakefile tools (config/andrew.rls) = ExecuteFromDESTDIR(cmd) - this Imake macro can appear as an executed line in a make rule. The cmd is executed with ANDREWDIR, CLASSPATH, and PATH set to use the entries from DESTDIR. = ClassTestProgramTarget, ClassProgramTarget - These rule macros are for building programs that use the class system. (They support RS/6000 dynamic loading.) = HOWINSTALL - All recursive imake lines now have -DHOWINSTALL_ENV=$(HOWINSTALL_ENV), so that that variable propagates correctly during `make Makefiles`. overhead/class/lib/class.h Class_GetSuperType(object) and class_GetSuperTypeName(object) provide access to the type and type name of the superclass of an object. overhead/util/lib/profile.c Patch from Todd Inglett to make getprofileswitch case insensitive. atk/adew/celv.c Fixed to not pass in self->menus to PostMenus in ReceiveInputFocus... . The correct way to post only your own methods is to use NULL as the menulist argument to PostMenus. atk/createinset/null/Imakefile Added $(RESOLVLIB) to BASETESTLIBS (via proper ifdef) so the resolver libraries will be loaded appropriately. atk/text/smpltext.c, smpltext.ch Added GetUnsignedChar. atk/ness/doc/nessfunc.d Sigh... in 1.16 I re-introduced the same problem as I was fixing. since the file contains $Log: $. Never, ever include backslash or curly braces in an RCS log message for a datastream file. atk/ness/type/Imakefile, chtest.c, parse.gra, parse.h, type.c Chtest: added -t switch to dump parse transitions. atk/ness/type/type.ch Rename 'index' field of info union to 'ind' to avoid macro expansion of index to strchr on hp. atk/raster/cmd/Imakefile Link against utillib to pick up os_system. atk/raster/cmd/dispbox.c, rastvaux.c Changed calls to graphic-layer into calls to the view-layer. DON'T CALL THE GRAPHIC_LAYER DIRECTLY! atk/supportviews/scroll.c, scroll.ch Added CreateScroller classprocedure to create a scroll object (or a subclass), and if a ScrollClass preference is specified and a subclass name is not, to use the class specified by the ScrollClass preference. atk/support/Imakefile, print.c, print.ch Print_LookUpColor() is now available to figure out color values when there is no X server available. atk/basics/common/graphic.c, graphic.ch, graphic.doc Added graphic_IsImageInverted() method. This method returns TRUE is the graphic is inverting the image because it treats zero as black and ATK treats zero as white. (For X, the value is always TRUE.) atk/basics/common/im.c atk/basics/x/xim.c atk/frame/framecmd.c Use prototypes only if _ANSI_C_SOURCE is defined and _NO_PROTO is not defined. atk/basics/common/im.c, im.ch Added support for determining a key equivalent for a menu item. atk/basics/common/initfls.help The description of the addfiletype command was wrong wrt how to specify a list of parameters for a particular inset. The parameter/value pairs are to be separated by semicolons, not commas. atk/basics/common/keymap.c Provide a FinalizeObject procedure to let keymaps be created and destroyed. atk/basics/common/pixelimg.c Changed _GetScaledSubraster(self, ...) so that it doesn't affect the value of self->ChangedRect. atk/basics/common/pixelimg.c, pixelimg.ch Added transfer functions to BlitSubraster(). atk/basics/x/xgraphic.c - Changed color cube to be 64 elements. - Added image_WriteOtherFormat & image_ReadOtherFormat that translate between ATK image and gif for use in MIME messages. atk/basics/x/xim.c Used FD_SET and other methods of select'ing from an arbitrarily long list of files. atk/frame/frame.c, frame.ch Added method frame_RemoveHelp, with associated realView and realBuffer variables. This allows you to set the help buffer, and then restore whatever view or buffer was previously under the frame. atk/hyplink/link.ch Added backward compatibility method: GetLink. atk/supportviews/sbutton.c, sbutton.ch Added bdepth member to sbutton_prefs structure. This is the width of the border. atk/text/text.c, text.ch - Corrected text_ClearCompletely; it no longer needs to explicitly do anything about subobjects, since they are handled when the environments (aka styles) are cleared. - Ensure that text is observing any subobjects. - Try to avoid full updates of subobjects when they are changed. - Added SetBaseTemplateName and GetBaseTemplateName so srctext can set the template name without causing a coredump on 6000s when text attempts to free the template name (mixing data malloced from two different malloc packages doesn't work...) - Changed to keep a list of all subobjects so that getmodified won't become unbearably slow on large documents with many styles. atk/text/txttroff.c Added code which could be used to pass the desired width and height to an inset when printing, but the width and height in a viewref are never set so this can't be used just yet atk/apt/suite/* - item borders are now drawn via sbutton - several attributes have been removed and are not supported (font scaling attributes mainly -- CaptionFontHigh, CaptionFontLow, etc.) - New attributes have been added to support color: suite_ForegroundColor, suite_BackgroundColor, suite_ActiveItemForegroundColor, .., suite_PassiveItemForegoundColor. atk/apt/suite/SuitePG.doc Removed description of font scaling attributes. Now you can specify a font and that is what you get. We previously were trying to scale the font such that the captions and titles (which may actually have multiple fonts) such that the caption or title fit perfectly in the item's bounding box. Too complicated. atk/apt/suite/suite.c, suite.ch, suiteev.c - Added item label color attributes - Added caption color attributes - Added suite_ActiveItemCaptionColor and suite_PassiveItemCaptionColor atk/bush/bushv.c atk/org/orgv.c Added LinkTree override. Many views that have children incorrectly link these children once, in InitializeObject. These views must also provide a LinkTree because you can't assume that you are being linked into a valid viewtree (one with a path to the im), but it is assured that once the tree is valid, the message will be distributed through the viewtree. atk/org/org.c, orgv.c Changed the way the description associated with an org node is kept in core. It used to be a simple string that was "saved" each time the user moved to a different node. Now the node description is kept in a text object. This makes sense because you want the data to in the dataobject, not the view. By having the view involved in the data, it misses out on the Save method calls. This is better. atk/org/orgv.c, orgv.ch Added call to lpair_LinkTree in FullUpdate. You must call LinkTree before InsertGraphic. Trivial changes overhead/cmenu/cmcreate.c Fixed bug with drawing grey items on monochrome displays with depth > 1. overhead/mail/lib/mailconf.c Fixed *.mspath problem. overhead/util/lib/setprof.c We now use the FirstProfileFileName only if the name returned by GetProfileFileName is either 1) NULL, 2) the same as AndrewDir("/lib/global.prf"), or 3) not accessable. atk/basics/common/im.c - Fixed bug with MessageTimeout preference reported by Todd Inglett. - Fixed bug with last change which caused arg: 4 to be echoed when a ^U bound proctable function was called. atk/basics/common/observe.c, observe.ch Fixed so that having a trigger destroy the object it is pulled on won't crash the process. atk/basics/x/xgraphic.c - Treat staticgray displays just like monochrome. There seems to be a problem treating them like color: all sbutton type stuff was coming out black. - Fixed FillArcSize() -- angle transform was wrong. atk/basics/x/xcursor.c Fixed bug which caused console cursors to get messed up. atk/basics/x/xgraphic.c, xgraphic.ch - Fix for the bug where text was getting drawn with a stipple unnecessarily. Thanks to Bill Janssen (janssen@parc.xerox.com) for the initial code fragment and basic concept. - Fix so that if the transfermode is graphic_XOR a stipple of all ones will be used, regardless of the color. atk/basics/x/xim.c - Fixed redraw problem in off-screen windows. - Fixed to not wait for a seenstructure when starting up. Should fix bug with bringing up windows when there is no window manager. - Cut buffer patches from Todd Inglett. - Fixed so partial updates are handled properly when the menubar is present. - Added support for windows which don't get automatically mapped and for windows which start iconified. - Fixed so that resizing a window with a dialog up doesn't core dump. atk/frame/frame.c Fixed input focus bug where the wrong view would sometimes get the input focus after a dialog was dismissed. atk/frame/frame.c, frame.ch, framecmd.c - Fixed so that if the inputfocus cached by a dialog is destroyed things don't break. - Fixed so that if a buffer is deleted while another delete is pending an error is reported on the second delete instead of crashing. atk/supportviews/scroll.c Let scroll be a slider when it doesn't have a child. atk/supportviews/oscroll.help, sbutton.help Added mention of panner. atk/supportviews/sbutton.c, sbuttonv.c Fixed so that a button will not be destroyed until all callback actions have been completed. atk/supportviews/sbuttonv.c - Ensure that the left hand side of a button label will always be visible. - Clip labels to within the interior of the button. - Fixed so it doesn't depend on txttroff, this means sbuttons cannot print as top level objects. - Fixed so that even if a new size is requested the rest of the current update cycle proceeds normally. This fixes a bug where messages buttons wouldn't display the new name when toggled. atk/supportviews/scroll.c Patch submitted by Bill Cattey: The problem was that the new scrollbar decided to add end zones to small windows of a LARGER size than the old scrollbar code. This was due to some code re-arrangement not making a proper size computation. atk/raster/cmd/rastvaux.c Fixed problem with multiple raster updates in one ObservedChanged call. atk/text/content.c Changed occurrences of isprint to ISPRINT and made ISPRINT recognize ISO-8859-1 encoded highbit chars as printable. atk/text/txtvcmv.c Applied patch from Kemmetmueller so ESC-N is correct at start of line. atk/text/text.c Fixed so that when a child inset is manually resized the display will update appropriately. atk/text/textv.c Fixed so that WantNewSize actually propogates the request to the parent, and doesn't request a redraw... the redraw will be requested elsewhere. atk/text/tmac.acc I made a mistake in my upper case tilde overstrike. Instead of making the tilde big, troff in its conventional way of interpreting senseless input in a random way put a space after the character. This patch contains a correct upper case tilde overstrike. atk/text/txtvcmod.c - Patch submitted by Robert Kemmetmueller: makes "Insert File" highlight the file when it's inserted - Fixed so that the insertinsetcmd function forces the redraw to happen immediately so that the input focus is reliably transferred to the inset before any more keystrokes are processed. atk/text/text.c Fix submitted by Rob Kemmetmueller: The problem shows up when you do an "Insert File" of a non-datastream file into a document. It also occurs when using datacat for such files. (But it only occurs if the file's extension is mapped to something other than text.) The symptom is a complete disregard for all newline characters in the file. The whole thing is (mostly) "flowed together". I'm pretty sure the problem is in text_AlwaysInsertFile method. It calls filetype_Lookup, which correctly reports that the file is NOT a datastream (objectID=0). But _AlwaysInsertFile ignores that, and passes dataobject_UniqueID(dat) to the dataobject_Read method. This non-zero value makes the dataobject think its file IS a datastream, which is Not Good. atk/typescript/tscript.c Fix submitted by Todd Inglett: Here's an obscure bug I found in typescript. It's hard to reproduce. We were getting intermittent core dumps, mainly from pipescript. It's a wonder it ever worked. atk/typescript/tscript.c Patch submitted by John Howard: Sometimes (often!) echoing gets turned off without my doing anything explicit. Entering the command "stty echo" turns it back on for a little while. atk/typescript/fcomp.c If you try to complete a filename like ~tinglet (i.e. username completion), fcomp inserted the current directory name on the command line and said '[no match]'. This was easy to fix by just making CompleteFname return early in this case (CanonicalizeFilename apparently doesn't like a path that doesn't exist). atk/help/src/help.c - Fix for reading compressed man pages. - Fixed GetHelpOn to behave correctly when an alias-command is found. - Fix bug where toggling the panels could cause the input focus to be lost. atk/help/src/help.c, helpaux.c, helpdb.c Modified to prevent execution of commands with '`'s in them, thus preventing a security problem with the demo service. atk/help/src/helpa.c Now when passing in -i , don't disable an initial file. atk/help/src/helpdb.c Patch from Todd Inglett: Here is a simple patch that has help tell you what is running, which should be more useful information to the user. I noticed that when help runs a command alias, it puts the message ``Preparing new window; it should appear soon'' in the message line. Of course the command might not even open a window. atk/console/stats/rs_aix31/getstats.c I think the filesystems get sync'ed doing this. I made a simple change which honors the filesystem check interval argument. I think this will work for AIX 3.1 as well. atk/ez/ezext.help Changed zip examples to figure. atk/ez/ezinit, ezinit.cmu - Added filetype .bdf for bdffont inset. - Added extension .fi for figure inset. atk/apt/suite/suiteev.c Fixed the code that draws the "gutter lines" between rows and columns. atk/apt/tree/treev.c Fixed scrolling, at least for viewing folder tree in messages. atk/bush/bush.c, bush.ch, bushv.c - Removed bogus feature where the SortMode and Detail are set on a per-directory basis. They are now global attributes. - Modified to disallow executing things if SecurityConsciousness is in effect. - Changed to take advantage of new suite that uses pretty sbutton drawing code. atk/org/org.c Fixed Write_Body to write out ATK text insets for the node description. Fixed Read_Body to read in ATK text insets for the node description. contrib/mit/util/headrtv.c Fixed headrtv__Hit to use the first subclass of textview it finds for passing for the inputFocus when the header is being closed. Also, give that textview the input focus prior to setting the section's lpair to be a zero-sized inset. These changes put the input focus in more reasonable places for the user. ____________________________________________________ Trivial Changes to Messages and AMDS Fixed bug where the owner of a privatebb couldn't read it (by name) if they subscribed to it. Patch submitted by Nathaniel Borenstein: If you read a MIME message, this will mark it as having been read. Patch to MIME support submitted by Nathaniel Borenstein: This makes the unnecessary "User prefix goes here..." stuff disappear for messages. Removed bogus insertion of a newline when forwarding a message. Users should be careful to click on the TOP line if they don't want the text they type to be in the style used for the headers. Patch submitted by Wayne Richardson: We've fixed a problem in ams.c that causes a double-spaced instead of single-spaced list to be displayed when "?" is used with folder name completion. It's probably been there for years, but didn't show up until recently when Rob Ryan added support to frame to display buffers. In the released version of Messages, there is a nasty bug that affects people who have the "hide after sending" option set and use complex compound operations from init files that expose the sending window when it is hidden. In such cases -- examples of which can be provided on request -- the window manager sometimes gets so confused that the sending window becomes totally inaccessible, and you have to quit & restart messages. The fix is simple -- just a one-line addition of a folder_ForceUpdate() call in folders.c. Patch submitted by Nathaniel Borenstein: extend the functionality of "Clean Up Body" so that if you get a MIME-format message rejected to you by a mail transport system that doesn't know how to make the rejection itself MIME-compliant, you can still see the original MIME-format data. ("Clean Up Body" has always done this for Andrew-format rejections; this just makes it work for MIME rejections, too.) ________________________________________________________ Trivial Changes not apparent to users overhead/conv/Imakefile Changed InstallFile to InstallCshScript for scripts. overhead/util/hdrs/util.h Fixed type of FoldTRT to be intb to match what it is in the .c file. (Probably it was changed to int in the .c file to avoid sign problems.) overhead/cmenu/cmcreate.c Taught cmenu about the ForceMonochromeThreshold preference. atk/basics/x/xim.c Arrange for menus to be de-cached when the view they pertain to is unlinked. atk/basics/x/xcursor.c, xcursor.ch Added caching of constructed cursors. Could go one step further and only make each cursor once per display. atk/basics/common/im.c Made change to im_UnlinkNotification. When dealing with the inputFocus, if the unlinked view has a valid parent and that parent isn't the im, then give that parent the input focus. This should fix a fatal bug that occured when an inset has the input focus, and the user chooses the Delete Window menu option. atk/basics/x/xgraphic.c Got ReadPixImage to work (by taking out the #ifdef that was blocking it). atk/supportviews/sbutton.c, sbutton.ch, sbuttonv.c Fixed so that preference initialization is deferred until the last possible moment when creating an sbutton. This makes the preference editor work at a reasonable speed. atk/support/list.c - Replaced sorting code with a less memory efficient version using qsort, the new version works, the old one didn't. - Fix Delete for the case of deleting the last element in the list. atk/music/play.doc Added 3 blind mice example. atk/raster/cmd/rasterv.c, rastvaux.c Fixed highlighting bug. atk/text/smpltext.c Fixed GetLineForPos so that the position just after the last character in a line is considered part of that line and not the next. atk/text/drawtxtv.c, tabs.c, tabs.ch, text.c, textv.c Plugged tabs coreleak the right way this time. atk/createinset/null/nullv.c - Test for NULL in getting fontdesc. - Made blobs chartreuse on color displays. - Removed extraneous clearing of screen in _ClearRectangle. - Check for NULLs in InitializeClass. - Give a default desiredSize. atk/createinset/null/null.c - Fixed so it doesn't give MISSINGENDDATAMARKER . - Revised description of __Read. atk/ness/objects/nesssym.c Added code to ensure proper deallocation of ness symbols. atk/ness/objects/nevent1.c Created from routine ProperPtr taken from nevent.c atk/adew/arbcon.c, cel.c, celv.c Updated to use the refcounting of dataobjects properly. atkams/messages/lib/capaux.c, foldaux.c, messages.c, messaux.c, sendaux.c, text822v.c Hack to curb number of defines (to avoid RT cpp limit). ams/utils/muserver/server.c Add dummy getdtablesize function...; just returns _NFILE.