Example AIC Interface --------------------- Do not look at my code for the TupleViewer challenge. A much better example of how I think AIC code should be written is the pixmap editor. It is not completely functional, but hopefully it contains examples of most everything a GUI will need to do. Of further interest, it makes use of several very useful modules. These modules should be portable. Here is a description of the source files: main.i - The main window. Uses a ScrolledList, ScrolledText, and pulldown and popup menus. edit.i - The editor window. Complex constraints. Uses a PanedWindow and scrolled drawing area. (The horizontal pane is something I wrote to demonstrate translations - not part of a PanedWindow.) Also has an example of redefining the cursor. name.i - Just a window with a text field. Used to edit the pixmap's name. pix.c - The pixmap utilities. Nothing useful here. sure.i - A customized message box. Should be portable. file.i - A simple file selection box. Fixes up the colors and fonts. Portable. init.c - Really short section of code: typical main() function. aic.c - This contains code that I feel should be in all AIC-generated GUI's. It sets up default colors, and defines useful constants. It also has a few useful macros to make bypassing AIC more convenient. list.c - A layer on top of the AIC list widget. VERY useful - allows you to work with char * items instead of XmStrings. Portable. dll.c - Just a collection of doubly-linked-list utilities. I like it. class.c - I wrote this when learning about Motif: converts a WidgetClass variable to a string. Still useful for debugging occasionally. pix.h, sure.h, file.h, aic.h, list.h, dll.h, class.h - Header files. Makefile - This is customized for AIC: recognizes '.i' files. Also has a backup and purge "target" which are probably out-dated by CVS.