Blame demos/programs/Exm/README

Packit b099d7
/* $XConsortium: README /main/3 1996/07/15 14:00:27 drk $ */
Packit b099d7
This directory contains the source code for the Exm demonstration widgets.
Packit b099d7
The Exm demonstration widgets illustrate how to write a Motif widget in C.
Packit b099d7
If you are interested in writing a Motif widget in C++, you should see the
Packit b099d7
../ExmCxx directory.  Complete details on the Exm demonstration widgets can
Packit b099d7
be found in the "OSF/Motif Widget Writer's Guide and Reference" manual. 
Packit b099d7
Packit b099d7
We are providing the Exm widget set for educational purposes only.  
Packit b099d7
Programmers should not use any Exm widgets inside a commercial application.
Packit b099d7
Packit b099d7
This README file summarizes the purpose of each file in this directory. 
Packit b099d7
The end of this README file contains instructions for building the Exm widget
Packit b099d7
set. 
Packit b099d7
Packit b099d7
Packit b099d7
                           ***************************
Packit b099d7
                            WIDGETS IN THIS DIRECTORY
Packit b099d7
                           ***************************
Packit b099d7
Packit b099d7
The Exm demonstration widgets is an eight widget set having the following
Packit b099d7
hierarchy:
Packit b099d7
Packit b099d7
                            --------------------Core--------------------
Packit b099d7
                            |                                          |
Packit b099d7
                            V                                          V
Packit b099d7
                       XmPrimitive                                 XmManager
Packit b099d7
                            |                                          |
Packit b099d7
                            |                                          |
Packit b099d7
                            V                                          V
Packit b099d7
                        ExmSimple------------------------           ExmGrid
Packit b099d7
                            |                           |
Packit b099d7
                            V                           V
Packit b099d7
       -----------------ExmString--------------      ExmPanner
Packit b099d7
       |                    |                 |
Packit b099d7
       V                    V                 V
Packit b099d7
 ExmCommandButton   ExmStringTransfer    ExmMenuButton
Packit b099d7
       |
Packit b099d7
       V
Packit b099d7
 ExmTabButton
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
*********
Packit b099d7
ExmSimple
Packit b099d7
*********
Packit b099d7
The ExmSimple widget consists of three files: 
Packit b099d7
   * Simple.c 
Packit b099d7
   * Simple.h
Packit b099d7
   * SimpleP.h
Packit b099d7
The ExmSimple widget renders a rectangle or an oval.  This widget demonstrates 
Packit b099d7
how to create a 
Packit b099d7
   * relatively easy Motif widget.
Packit b099d7
   * primitive widget that can serve as a superclass for other widgets.
Packit b099d7
   * new representation type.
Packit b099d7
 
Packit b099d7
Packit b099d7
*********
Packit b099d7
ExmString
Packit b099d7
*********
Packit b099d7
The ExmString widget consists of three files: 
Packit b099d7
   * String.c
Packit b099d7
   * String.h
Packit b099d7
   * StringP.h
Packit b099d7
The ExmString widget demonstrates how to handle compound strings in Motif
Packit b099d7
widgets.  The ExmString widget is similar to the XmLabel widget.  
Packit b099d7
The biggest difference between the two is that an XmLabel can 
Packit b099d7
render either a compound string or a pixmap but an ExmString can 
Packit b099d7
render only a compound string.  More specifically, the ExmString 
Packit b099d7
widget demonstrates how to:
Packit b099d7
  * use the four recommended resources for handling compound strings.
Packit b099d7
  * use the XmQTaccessTextual trait.
Packit b099d7
  * calculate the baselines of each lines of text.
Packit b099d7
Packit b099d7
Packit b099d7
****************
Packit b099d7
ExmCommandButton
Packit b099d7
****************
Packit b099d7
The ExmCommandButton widget consists of three files: 
Packit b099d7
   * CommandB.c 
Packit b099d7
   * CommandB.h 
Packit b099d7
   * CommandBP.h
Packit b099d7
This widget displays a button that, when activated, initiates a callback.
Packit b099d7
This widget demonstrates how to
Packit b099d7
   * create Motif-style button visuals.
Packit b099d7
   * establish Motif-style actions for buttons. 
Packit b099d7
   * install the XmQTactivatable trait.
Packit b099d7
   * install the XmQTtakesDefault trait.
Packit b099d7
   * establish a simple Motif callback.
Packit b099d7
Packit b099d7
Packit b099d7
*************
Packit b099d7
ExmMenuButton
Packit b099d7
*************
Packit b099d7
The ExmMenuButton widget consists of three files: 
Packit b099d7
   * MenuB.c
Packit b099d7
   * MenuB.h
Packit b099d7
   * MenuBP.h
Packit b099d7
This widget renders a menu child button that, when activated, initiates
Packit b099d7
a callback.  This widget demonstrates how to 
Packit b099d7
   * create a menu child widget, in the style of XmPushButton. 
Packit b099d7
   * install the XmQTmenuSavvy trait. 
Packit b099d7
   * call the trait methods of XmQTmenuSystem.
Packit b099d7
Packit b099d7
Packit b099d7
*****************
Packit b099d7
ExmStringTransfer
Packit b099d7
*****************
Packit b099d7
The ExmStringTransfer widget consists of three files: 
Packit b099d7
   * StringTrans.c
Packit b099d7
   * StringTrans.h
Packit b099d7
   * StringTransP.h
Packit b099d7
This widget renders a compound string.  The ExmStringTransfer widget 
Packit b099d7
demonstrates how to
Packit b099d7
   * implement the Uniform Transfer Method (UTM) in a Motif widget.
Packit b099d7
   * write a widget that supports Drag and Drop.
Packit b099d7
   * install the XmQTtransfer trait.
Packit b099d7
Packit b099d7
Packit b099d7
*********
Packit b099d7
ExmPanner
Packit b099d7
*********
Packit b099d7
The ExmPanner widget consists of three files: 
Packit b099d7
   * Panner.c
Packit b099d7
   * Panner.h
Packit b099d7
   * PannerP.h
Packit b099d7
This widget allows users to pan (navigate) through different portions
Packit b099d7
of another widget.  The ExmPanner widget renders a small rectangle 
Packit b099d7
inside a widget.  The user may move this rectangle.  As the rectangle 
Packit b099d7
moves to different portions of its surrounding widget, different 
Packit b099d7
portions of the target widget will become visible.  The ExmPanner widget
Packit b099d7
demonstrates how to:
Packit b099d7
   * write a navigator widget.
Packit b099d7
   * use the XmQTnavigator trait.
Packit b099d7
 
Packit b099d7
Packit b099d7
************
Packit b099d7
ExmTabButton
Packit b099d7
************
Packit b099d7
The ExmTabButton widget consists of three files: 
Packit b099d7
   * TabB.c
Packit b099d7
   * TabB.h
Packit b099d7
   * TabBP.h
Packit b099d7
This widget attaches itself to one side of a parent widget in order
Packit b099d7
to give the appearance of a tab "growing out of" the parent.  The
Packit b099d7
ExmTabButton widget is activatable.  It demonstrates how to
Packit b099d7
   * use the XmQTjoinSide trait.
Packit b099d7
   * use several Xme drawing functions.
Packit b099d7
Packit b099d7
Packit b099d7
*******
Packit b099d7
ExmGrid
Packit b099d7
*******
Packit b099d7
The ExmGrid widget consists of three files: 
Packit b099d7
   * Grid.c 
Packit b099d7
   * Grid.h
Packit b099d7
   * GridP.h
Packit b099d7
The ExmGrid widget demonstrates how to
Packit b099d7
   * write a manager widget. 
Packit b099d7
   * use the XmQTdialogSavvy trait.
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
                                 ***********
Packit b099d7
                                 UIL SUPPORT
Packit b099d7
                                 ***********
Packit b099d7
Packit b099d7
The directory also contains several files pertaining to UIL support of the
Packit b099d7
Exm widgets.  They are:
Packit b099d7
Packit b099d7
   * Exm.uil: a header file that can be included in UIL applications.
Packit b099d7
              This file defines the API for UIL applications wishing
Packit b099d7
              to use the Exm widget set.
Packit b099d7
Packit b099d7
   * Exm.wml: (not available at Alpha.)  This file can be compiled with
Packit b099d7
              wml in order to form a new motif.wmd file or a new UIL compiler.
Packit b099d7
Packit b099d7
   * ExmMrm.c: contains MrmRegisterClass calls for the Exm widget set.
Packit b099d7
Packit b099d7
   * ExmMrm.h: a header file that provides an interface to the code in the
Packit b099d7
               ExmMrm.c file.
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
                         ***************************
Packit b099d7
                         BUILDING THE EXM WIDGET SET
Packit b099d7
                         ***************************
Packit b099d7
This directory contains an Imakefile.  In order to build the Exm widget set
Packit b099d7
from this Imakefile, you should follow these steps: 
Packit b099d7
   1. $ make Makefile    # This command should create a true Makefile.
Packit b099d7
   2. $ make includes
Packit b099d7
   3. $ make depend
Packit b099d7
   4. $ make
Packit b099d7
Packit b099d7
The "make" command should compile all of the source code files in the directory.
Packit b099d7
The resulting widget object files will be archived into a library file named 
Packit b099d7
libExm.a.  The ExmMrm.o object file will be archived into a library file named 
Packit b099d7
libMrm.a.  In order to exercise the code in the libraries, you must build an
Packit b099d7
application stored in one of the following subdirectories:
Packit b099d7
Packit b099d7
   * simple_app
Packit b099d7
   * exm_app_in_c
Packit b099d7
   * exm_app_in_uil
Packit b099d7
Packit b099d7
 
Packit b099d7