Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 40fa3e2f00e360f496248e1b391e4658 > files > 8

libXawM1-1.5u-1mdk.i586.rpm

                   Modern-look Athena Widgets (XawM)
                          Edward A. Falk
                   falk@falconer.vip.best.com
		   $Id: README.XawM,v 1.2 2000/10/12 14:55:15 ulric Exp $


TOPICS:
	Features
	Compiling
	Installing (important)
	Bugs
	New Features
	Security
	Y2K
	Credits



Features:

This is YAAC (Yet Another Athena Clone).  Based primarily on the Xaw3d
widget set, v1.5, by Kaleb Keithly.  This version is an attempt to adhere as
closely as possible with what is becoming the modern standard graphics
interface.  When finished, this toolkit should produce applications
that share the look-and-feel of other modern toolkits, such as Motif,
Tk, Qt, windows-95 and so on.

This version is based on Xaw3d for the following reasons:

	Xaw3d is "almost there" -- only a few things need to be changed.

	Xaw3d is highly standard -- it is the most widely distributed
	and widely supported of the Athena clones..

Minimal changes should be needed to convert Xaw3d to XawM.  It is hoped
that XawM will be accepted as a replacement of Xaw3d.


Compiling:

	It should be sufficient to unpack the sources and type

		xmkmf
		make

	To build all the libraries.



Installing:

    This is beta software, so I haven't yet made installation
    trivial.  However, it's not too hard.

    Note: I make several references to "/usr/X11R6" as your X-windows
    directory.  This may vary, depending on your system.  For instance,
    if you have Solaris, use "/usr/openwin" instead.

    *	Create the directory /usr/X11R6/include/XawM.  Copy all the
	header files from here to there.  Alternative:  Make
	/usr/X11R6/include/XawM a symlink to this directory.

    *	Copy libXawM* to /usr/X11R6/lib.

    *	Get rid of the original libXaw and libXaw3d libraries.
	Preferably back them up somehow.

    *   Get rid of the original libXaw and libXaw3d header files.
	Preferably back them up somehow.

	This is my preferred method:

	  Create backup directories:

		# mkdir /usr/X11R6/include-orig/X11
		# mkdir /usr/X11R6/lib-orig
		# mkdir /usr/X11R6/bin-orig

	  Move header files and libraries:

		# mv /usr/X11R6/include/X11/Xaw /usr/X11R6/include-orig/X11
		# mv /usr/X11R6/include/X11/Xaw3d /usr/X11R6/include-orig/X11
		# mv /usr/X11R6/lib/libXaw.* /usr/X11R6/lib-orig
		# mv /usr/X11R6/lib/libXaw3d.* /usr/X11R6/lib-orig

    *	Make these symlinks:

    	/usr/X11R6/lib/libXaw.a -> libXawM.a
	/usr/X11R6/lib/libXaw.so -> libXaw.so.6.1
	/usr/X11R6/lib/libXaw.so.6 -> libXaw.so.6.1
	/usr/X11R6/lib/libXaw.so.6.1 -> libXawM.so.6.1

	/usr/X11R6/lib/libXaw3d.a -> libXawM.a
	/usr/X11R6/lib/libXaw3d.so -> libXaw3d.so.6.1
	/usr/X11R6/lib/libXaw3d.so.6 -> libXaw3d.so.6.1
	/usr/X11R6/lib/libXaw3d.so.6.1 -> libXawM.so.6.1

    	/usr/X11R6/include/Xaw -> XawM
    	/usr/X11R6/include/Xaw3d -> XawM

	  (here are the commands:)

		# cd /usr/X11R6/lib
		# ln -s libXawM.a libXaw.a
		# ln -s libXaw.so.6.1 libXaw.so
		# ln -s libXaw.so.6.1 libXaw.so.6
		# ln -s libXawM.so.6.1 libXaw.so.6.1
		# ln -s libXawM.a libXaw3d.a
		# ln -s libXaw.so.6.1 libXaw3d.so
		# ln -s libXaw.so.6.1 libXaw3d.so.6
		# ln -s libXawM.so.6.1 libXaw3d.so.6.1

		# cd /usr/X11R6/include/X11
		# ln -s XawM Xaw
		# ln -s XawM Xaw3d

    *	At this point, all your old applications that used Athena
	should start using XawM.

    *	You can further improve the look of XawM by adding these
	to your .Xdefaults file:

		*BeNiceToColormap: False
		*background: grey
		*highlightThickness: 1
		*Toggle.ToggleStyle: Auto


    See README.XAW3D for more information.




Known Bugs:

	I would like to stress that the problems listed here are common
	to all Athena clones, and are not specific to XawM.  Each
	variant of XawM has different header files, which can break
	binary compatibility in some cases.

	Applications that depend on knowledge of widget internals, such
	as viewres and listres will fail unless linked to the original
	Xaw libraries or recompiled with the new header files.

	Applications which use custom widgets subclassed from Athena
	widgets will die is mysterious ways.  If you see error messages
	about resources being the wrong size, that's a dead giveaway.

	In most cases, it is sufficient to recompile these applications.
	You will need source code to do this.

	GV, the ghostscript viewer, and bitmap, the bitmap editor
	are known to exhibit this problem.

	  IMPORTANT:  It is vitally important when recompiling widgets
	  subclassed from Athena that the header files match the
	  libraries.  Failure to ensure this is the cause of almost
	  all problems.  Make sure that the Xaw and Xaw3d header
	  directories are symlinks to XawM.

	  (I find it helpful to compile with '-E' (or do "make Foo.i").
	  This will generate a .i file which shows where the header
	  files originated.)

	Xapm, which displays power level, depends on the Athena Classic
	scrollbar, which it uses as a display widget.  It will look
	really weird linked to Xaw3d or XawM.  You may wish to rebuild
	it, and link explicitly to Xaw-orig.


	Another way to get around this problem is to take failing applications
	and run them with LD_LIBRARY_PATH set to use /usr/X11R6/lib-orig
	before /usr/X11R6/lib.

	  Here is my preferred method:

	    * Move problem application to /usr/X11R6/bin-orig
	    * Replace the original program with a shell script that
	      sets LD_LIBRARY_PATH.

	    For example, /usr/X11R6/bin/gv looks like this:

	    	#!/bin/sh
		LD_LIBRARY_PATH=/usr/X11R6/lib-orig ; export LD_LIBRARY_PATH
		/usr/X11R6/bin-orig/gv $*




New Resources with this version:

    ThreeD:
    	armPixel		color when widget is "armed"
	topShadowPixmap		pixmap for top shadow
	bottomShadowPixmap	pixmap for bottom shadow
	armPixmap		pixmap for "armed" widgets.
	insensitiveContrast	contrast for widgets in "insensitive" state
	insensitivePixel	color for widgets in "insensitive" state
	ridgeShadow		boolean: widget drawn with a ridge shadow.

    Scrollbar:
    	arrowScrollbar		enables or disables end arrows

    Toggle:
    	toggleStyle		one of Simple, Check, Radio, Auto


New Functions with this version:

    ThreeD:
    	Several new internal functions to export ThreeD functionality.
	See ThreeDP.h

    Traversal:
    	Keyboard traversal has been added to XawM.  Functions exported
	in Traversal.h allow you to add traversal to 3rd-party widgets
	which will be used with Athena.







Goals:

	Binary & source compatibility with existing Athena applications.
	You should be able to simply plug this library in place of the
	existing Xaw (or Xaw3d) library.

	Source compatibility with existing widgets subclassed from Xaw3d.

	Integrate updates made to Xaw since Xaw3d was created.

	Integrate nifty features from XawXpm, Xaw95, neXtaw that I deem
	fit.  This is *not* intended to be a kitchen-sink release.

	Upgrade text widgets as follows:
	  Single-line text widgets have horizontal scrolling.
	  Uses erase, word-erase and kill as indicated by tty settings.
	  Handles primary selection and cut/paste buffers both.
	  Selected text is "pending-delete"; meaning that if characters are
	  typed while text is selected, the selected text is replaced by
	  the new characters.

	Pass lint and gcc -Wall -pedantic compile tests.

	It is not expected to expand the capabilities of XawM much beyond
	the basics of Xaw -- this is left to the lessTif project.

New Features:

	(This is only a wish list at this time; features will be added as
	time permits, and only if they cause no unreasonable increase in
	library size or execution time.)

	Pixmap backgrounds, as with XawXpm
	Use of Xpm or Imlib or None for pixmap converter.

	"Ridge" and "Groove" borders as with XawXpm

	Alternate toggle button styles, as with neXtaw

	Alternate menu button styles, as with neXtaw.

	Arrow buttons on scrollbar:  automatic or fixed.

	Underlines in labels and menu items, so that keyboard accelerators
	may be displayed.

	Addition of spot help and long help to widgets, as with Motif.

	Addition of Help() action in widgets to display long help.  Default
	translation table will call this action when user hits help key
	or widget receives a help message(?).

	Improved keyboard focus control.  Goal is to allow a user to
	navigate an application with the keyboard alone, as with Motif.

	Addition of keyboard activation for widgets:
	  All widgets: Tab, backtab to move from widget to widget
	  Command, toggle, etc.: space, return activates.
	  Scrollbar: arrow keys act like presses in arrow buttons.
	  	Page up/down act like press in bar background
		shift-arrow: ?
		ctrl-arrow: ?
		alt-arrow: ?


New Features for widget authoring:

	ThreeD class to formally export convenience routines for creation
	of shadow GCs, and for rendering of 3-d borders.

	Label class to formally export convenience routines for display
	of text.




Security:

	This software includes the RedHat security patches.  I am not
	a security expert and as far as I know, this software has not
	been audited by a security expert, so this software should not
	be considered secure.  All we know is that there were real
	security problems in Athena Classic.

	Therefore:

	  NO PROGRAM LINKED TO THIS LIBRARY SHOULD BE INSTALLED
	  WITH SETUID-ROOT PERMISSIONS.


Y2K:

	I have no clue as to whether or not XawM is Y2K-compliant.
	I don't believe that XawM uses dates or times in any way.
	I'll know more in a few weeks.

	There may be a problem with event timestamps from the X server
	for applications running past midnight on 31 Dec, but if you're
	sitting at a computer at that time, you are in more need of a
	life than I am.

	Should this software exhibit any Y2K problems, simply return the
	unused portion of this software, and I will cheerfully refund
	the unused portion of your money.


Credits (in chronological order of their contribution):

          All the people at the X Consortium

	  Kaleb S. Keithley <kaleb@opengroup.org>

          Achille Hui (eillihca@drizzle.stanford.edu)
          Robert Withrow (witr@rwwa.com)
          Malcolm Strickland (chuck-strickland@orl.mmc.com
          David Flanagan (david@ora.com)
          Jamie Zawinski (jwz%thalidomide@lucid.com
          Frank Terhaar-Yonkers (fty@bizarre.trpnc.epa.gov)
          Mike Schulze (mike@cs.curtin.edu.au)
          Gustaf Neumann (neumann@dec4.wu-wien.ac.at)
          Jerry Whelan (guru@stasi.bradley.edu)
          Mark Rawling (mwr@mel.dit.csiro.au)
          Tim Theisen (tim@cs.wisc.edu)
          Mitch Trachtenberg (mitch@mta.com)
          Keith Packard (keithp@ncd.com)
	  Ed Falk (falk@falconer.vip.best.com)


Comments, fixes, etc. to: 
	  Ed Falk (falk@falconer.vip.best.com)