home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
x
/
volume10
/
wcl
/
part06
< prev
next >
Wrap
Internet Message Format
|
1990-12-17
|
23KB
Path: uunet!zaphod.mps.ohio-state.edu!julius.cs.uiuc.edu!apple!sun-barr!newstop!exodus!jpl-devvax.jpl.nasa.gov
From: david@jpl-devvax.jpl.nasa.gov (David E. Smyth)
Newsgroups: comp.sources.x
Subject: v10i054: wcl -- Widget Creation Library, Part06/11
Message-ID: <4649@exodus.Eng.Sun.COM>
Date: 17 Dec 90 22:15:43 GMT
References: <csx-10i049:wcl@uunet.UU.NET>
Sender: news@exodus.Eng.Sun.COM
Lines: 596
Approved: argv@sun.com
Submitted-by: david@jpl-devvax.jpl.nasa.gov (David E. Smyth)
Posting-number: Volume 10, Issue 54
Archive-name: wcl/part06
# to unbundle, "sh" this file -- DO NOT use csh
# SHAR archive format. Archive created Fri Oct 19 09:32:53 PDT 1990
echo x - MD.c
sed 's/^X//' > MD.c <<'+FUNKY+STUFF+'
X/*
X** Copyright (c) 1990 David E. Smyth
X**
X** Redistribution and use in source and binary forms are permitted
X** provided that the above copyright notice and this paragraph are
X** duplicated in all such forms and that any documentation, advertising
X** materials, and other materials related to such distribution and use
X** acknowledge that the software was developed by David E. Smyth. The
X** name of David E. Smyth may not be used to endorse or promote products
X** derived from this software without specific prior written permission.
X** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
X** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
X** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X**
X*/
X
X/******************************************************************************
X**
X** SCCS_data: @(#)MD.c 1.04 ( 30 September 1990 )
X**
X** Description: This file contains main() for an example demonstrating
X** how to support multiple displays. This file is derived
X** from Mri.c, and which allows prototype interfaces to be
X** built from resource files. The Widget Creation library
X** is used.
X**
X** Note that a real application would probably want to keep
X** the multiple displays syncronized. The only way to do
X** that is to specifically cause each widget to update all
X** the other widgets. This takes PROGRAMMING!!!
X**
X*******************************************************************************
X** Include_files.
X******************************************************************************/
X
X#ifdef MOTIF
X#include <Xm/Xm.h>
X#else
X#include <X11/Intrinsic.h>
X#endif
X#include <X11/Shell.h>
X#include <ctype.h>
X#include <WcCreate.h>
X#include <WcCreateP.h> /* for callback convenience funcs */
X
X#include <Table.h>
X
X/******************************************************************************
X** Global Application Data
X******************************************************************************/
X
Xint gargc;
Xchar** gargv;
X
Xchar* appName;
Xchar* appClass;
XXtAppContext app;
X
Xstatic char msg[MAX_ERRMSG];
X
X/******************************************************************************
X** Private Functions
X******************************************************************************/
X
X#ifdef MOTIF
Xextern void MriRegisterMotif();
X#define REGISTER_WIDGET_SET MriRegisterMotif
X#else
Xextern void AriRegisterAthena ();
X#define REGISTER_WIDGET_SET AriRegisterAthena
X#endif
X
X/*
X -- Open a new display, build another widget tree on that display.
X******************************************************************************
X*/
X
Xstatic void NewWidgetTreeOnDisplay( this, name, ignored )
X Widget this;
X char* name; /* display name from res file */
X caddr_t ignored;
X{
X static char clean[128]; /* display name w/o leading & trailing junk */
X int i;
X int largc;
X char** largv;
X Display* dpy;
X Widget newShell;
X Arg args[3];
X
X /* -- get clean display name by stripping leading & trailing whitespace */
X (void)WcCleanName( name, clean );
X
X /* -- make local copy of global argc and argv */
X largc = gargc;
X largv = (char**)XtMalloc( (gargc+1) * sizeof(char*) );
X for (i = 0 ; i < gargc ; i++)
X largv[i] = gargv[i];
X largv[i] = NULL;
X
X /* -- open display, build Xrdb, add to app context */
X dpy = XtOpenDisplay(
X app, clean, appName, appClass, NULL, 0, &largc, largv );
X if (dpy == NULL)
X {
X sprintf( msg, "NewWidgetTreeOnDisplay( %s ) failed:\
X Could not open display %s", clean, clean);
X XtWarning( msg );
X return;
X }
X
X /* -- create new shell on new display */
X /* these args are exactly what XtAppInitialize sets. */
X i = 0;
X /* XtSetArg(args[i], XtNscreen, DefaultScreenOfDisplay(dpy)); i++; */
X XtSetArg(args[i], XtNargc, largc); i++;
X XtSetArg(args[i], XtNargv, largv); i++;
X
X newShell = XtAppCreateShell(
X appName, appClass,
X applicationShellWidgetClass,
X dpy,
X args, i );
X if (newShell == NULL)
X {
X sprintf( msg, "NewWidgetTreeOnDisplay( %s ) failed:\
X Could not create new application shell.", clean);
X XtWarning( msg );
X return;
X }
X
X /* -- create widget tree under this new application shell */
X WcWidgetCreation ( newShell );
X
X /* -- Realize the widget tree and return to the main application loop */
X XtRealizeWidget ( newShell );
X return;
X}
X
X/*
X -- Kill a widget tree on a display, close that display.
X******************************************************************************
X*/
X
Xstatic void KillWidgetTreeOnDisplay( this, notused, ignored )
X Widget this;
X caddr_t notused;
X caddr_t ignored;
X{
X Display* dpy = XtDisplay(this);
X XtDestroyWidget( WcRootWidget(this) );
X XtCloseDisplay ( dpy );
X}
X
X/*
X -- Register Table widget and application specific callbacks.
X******************************************************************************
X*/
X
Xstatic void RegisterApplication ( app )
X XtAppContext app;
X{
X#define RCN( name, class ) WcRegisterClassName ( app, name, class );
X#define RCP( name, class ) WcRegisterClassPtr ( app, name, class );
X#define RCB( name, func ) WcRegisterCallback ( app, name, func, NULL );
X
X /* -- register widget classes */
X RCN( "Table", tableWidgetClass );
X RCP( "tableWidgetClass", tableWidgetClass );
X
X /* -- register callbacks to open a new display */
X RCB( "NewWidgetTreeOnDisplay", NewWidgetTreeOnDisplay );
X RCB( "KillWidgetTreeOnDisplay", KillWidgetTreeOnDisplay );
X
X#undef RCN
X#undef RCP
X#undef RCB
X}
X
X/******************************************************************************
X* MAIN function
X******************************************************************************/
X
Xmain ( argc, argv )
X int argc;
X char* argv[];
X{
X int i;
X Widget appShell;
X
X /* make copies of argc and argv for later use in NewWidgetTreeOnDisplay */
X gargc = argc;
X gargv = (char**)XtMalloc( (argc+1) * sizeof(char*) );
X for (i = 0 ; i < argc ; i++)
X gargv[i] = argv[i];
X gargv[i] = NULL;
X
X appName = argv[0];
X appClass = (char*) XtMalloc ( strlen ( argv[0] ) + 1 );
X strcpy (appClass, argv[0]);
X /* initialize first letter to make class, or first two if
X ** first is already capitalized, or don't worry about it.
X */
X if (islower(appClass[0]))
X appClass[0] = toupper(appClass[0]);
X else if (islower(appClass[1]))
X appClass[1] = toupper(appClass[1]);
X
X /* -- Intialize Toolkit creating the application shell */
X appShell = XtInitialize (
X appName, appClass, /* app name and class */
X NULL, 0, /* description of cmd line options */
X &argc, argv
X );
X app = XtWidgetToApplicationContext(appShell);
X
X /* -- Register all application specific callbacks and widget classes */
X RegisterApplication ( app );
X
X /* -- Register all classes and constructors for desired widget set */
X REGISTER_WIDGET_SET ( app );
X
X /* -- Create widget tree below toplevel shell using Xrm database */
X WcWidgetCreation ( appShell );
X
X /* -- Realize the widget tree and enter the main application loop */
X XtRealizeWidget ( appShell );
X XtMainLoop ( );
X}
+FUNKY+STUFF+
echo '-rw-r--r-- 1 david 7234 Oct 12 09:57 MD.c (as sent)'
chmod u=rw,g=r,o=r MD.c
ls -l MD.c
echo x - Mri.c
sed 's/^X//' > Mri.c <<'+FUNKY+STUFF+'
X/*
X** Copyright (c) 1990 David E. Smyth
X**
X** Redistribution and use in source and binary forms are permitted
X** provided that the above copyright notice and this paragraph are
X** duplicated in all such forms and that any documentation, advertising
X** materials, and other materials related to such distribution and use
X** acknowledge that the software was developed by David E. Smyth. The
X** name of David E. Smyth may not be used to endorse or promote products
X** derived from this software without specific prior written permission.
X** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
X** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
X** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X**
X*/
X
X/******************************************************************************
X**
X** SCCS_data: @(#)Mri.c 1.0 ( 19 June 1990 )
X**
X** Description: This file contains main() for a Motif Resource Interpreter
X** which allows prototype interfaces to be built from
X** resource files. The Widget Creation library is used.
X**
X** Besides the Motif widgets, Mri also knows about Table
X** widgets, simply because they are so dang useful!
X**
X** Notes: This program uses the Xrm (X resource management) database
X** for widget tree definition and management. This program
X** is dependent on the Motif widget set only because the
X** Motif classes and constructors are registered, which
X** causes the Motif libs to be linked in. Someday I'll
X** get a shared lib version of Motif and the Athena widgets,
X** and even the OpenLook widget set, and then there will
X** be no reason that widgets could not be mixed and matched.
X** Doing that without shared libs makes for a HUGE executable.
X**
X******************************************************************************/
X
X/******************************************************************************
X** Include_files.
X******************************************************************************/
X
X#include <Xm/Xm.h>
X#include <ctype.h>
X#include <WcCreate.h>
X
X#include <Table.h>
X
X/******************************************************************************
X** Private Functions
X******************************************************************************/
X
Xextern void MriRegisterMotif();
X
Xstatic void RegisterTable ( app )
X XtAppContext app;
X{
X#define RCN( name, class ) WcRegisterClassName ( app, name, class );
X#define RCP( name, class ) WcRegisterClassPtr ( app, name, class );
X
X /* -- register widget classes */
X RCN( "Table", tableWidgetClass );
X RCP( "tableWidgetClass", tableWidgetClass );
X
X#undef RCN
X#undef RCP
X}
X
X/******************************************************************************
X* MAIN function
X******************************************************************************/
X
Xmain ( argc, argv )
X int argc;
X char* argv[];
X{
X char* appClass;
X XtAppContext app;
X Widget appShell;
X
X appClass = (char*) XtMalloc ( strlen ( argv[0] ) + 1 );
X strcpy (appClass, argv[0]);
X /* initialize first letter to make class, or first two if
X ** first is already capitalized, or don't worry about it.
X */
X if (islower(appClass[0]))
X appClass[0] = toupper(appClass[0]);
X else if (islower(appClass[1]))
X appClass[1] = toupper(appClass[1]);
X
X /* -- Intialize Toolkit creating the application shell */
X appShell = XtInitialize (
X argv[0], appClass, /* app name and class */
X NULL, 0, /* description of cmd line options */
X &argc, argv
X );
X app = XtWidgetToApplicationContext(appShell);
X
X /* -- Register all application specific callbacks and widget classes */
X RegisterTable ( app );
X
X /* -- Register all Motif classes and constructors */
X MriRegisterMotif ( app );
X
X /* -- Create widget tree below toplevel shell using Xrm database */
X WcWidgetCreation ( appShell );
X
X /* -- Realize the widget tree and enter the main application loop */
X XtRealizeWidget ( appShell );
X XtMainLoop ( );
X}
+FUNKY+STUFF+
echo '-rw-r--r-- 1 david 4088 Aug 6 09:36 Mri.c (as sent)'
chmod u=rw,g=r,o=r Mri.c
ls -l Mri.c
echo x - MriRegAll.c
sed 's/^X//' > MriRegAll.c <<'+FUNKY+STUFF+'
X/*
X** Copyright (c) 1990 David E. Smyth
X**
X** This file was derived from work performed by Martin Brunecky at
X** Auto-trol Technology Corporation, Denver, Colorado, under the
X** following copyright:
X**
X*******************************************************************************
X* Copyright 1990 by Auto-trol Technology Corporation, Denver, Colorado.
X*
X* All Rights Reserved
X*
X* Permission to use, copy, modify, and distribute this software and its
X* documentation for any purpose and without fee is hereby granted, provided
X* that the above copyright notice appears on all copies and that both the
X* copyright and this permission notice appear in supporting documentation
X* and that the name of Auto-trol not be used in advertising or publicity
X* pertaining to distribution of the software without specific, prior written
X* permission.
X*
X* Auto-trol disclaims all warranties with regard to this software, including
X* all implied warranties of merchantability and fitness, in no event shall
X* Auto-trol be liable for any special, indirect or consequential damages or
X* any damages whatsoever resulting from loss of use, data or profits, whether
X* in an action of contract, negligence or other tortious action, arising out
X* of or in connection with the use or performance of this software.
X*******************************************************************************
X**
X** Redistribution and use in source and binary forms are permitted
X** provided that the above copyright notice and this paragraph are
X** duplicated in all such forms and that any documentation, advertising
X** materials, and other materials related to such distribution and use
X** acknowledge that the software was developed by David E. Smyth. The
X** name of David E. Smyth may not be used to endorse or promote products
X** derived from this software without specific prior written permission.
X** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
X** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
X** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X**
X*/
X
X/*
X* SCCS_data: @(#)MriRegAll.c 1.0 ( 19 June 1990 )
X*
X* This module contains registration routine for all Motif
X* widget/gadget constructors and classes.
X*
X* Module_interface_summary:
X*
X* void MriRegisterMotif ( XtAppContext app )
X*
X*******************************************************************************
X*/
X
X#include <Xm/Xm.h>
X
X#include <Xm/ArrowB.h>
X#include <Xm/ArrowBG.h>
X#include <Xm/BulletinB.h>
X#include <Xm/CascadeB.h>
X#include <Xm/CascadeBG.h>
X#include <Xm/Command.h>
X#include <Xm/DialogS.h>
X#include <Xm/DrawingA.h>
X#include <Xm/DrawnB.h>
X#include <Xm/FileSB.h>
X#include <Xm/Form.h>
X#include <Xm/Frame.h>
X#include <Xm/Label.h>
X#include <Xm/LabelG.h>
X#include <Xm/List.h>
X#include <Xm/MainW.h>
X#include <Xm/MenuShell.h>
X#include <Xm/MessageB.h>
X#include <Xm/PanedW.h>
X#include <Xm/PushB.h>
X#include <Xm/PushBG.h>
X#include <Xm/RowColumn.h>
X#include <Xm/Scale.h>
X#include <Xm/ScrollBar.h>
X#include <Xm/ScrolledW.h>
X#include <Xm/SelectioB.h>
X#include <Xm/SeparatoG.h>
X#include <Xm/Separator.h>
X#include <Xm/Text.h>
X#include <Xm/ToggleB.h>
X#include <Xm/ToggleBG.h>
X
Xvoid MriRegisterMotif ( app )
X XtAppContext app;
X{
X#define RCO( name, func ) WcRegisterConstructor ( app, name, func )
X#define RCN( name, class ) WcRegisterClassName ( app, name, class )
X#define RCP( name, class ) WcRegisterClassPtr ( app, name, class )
X
X/* -- register all Motif constructors */
X RCO( "XmCreateArrowButton", XmCreateArrowButton );
X RCO( "XmCreateArrowButtonGadget", XmCreateArrowButtonGadget );
X RCO( "XmCreateBulletinBoard", XmCreateBulletinBoard );
X RCO( "XmCreateBulletinBoardDialog", XmCreateBulletinBoardDialog );
X RCO( "XmCreateCascadeButton", XmCreateCascadeButton );
X RCO( "XmCreateCascadeButtonGadget", XmCreateCascadeButtonGadget );
X RCO( "XmCreateCommand", XmCreateCommand );
X RCO( "XmCreateDialogShell", XmCreateDialogShell );
X RCO( "XmCreateDrawingArea", XmCreateDrawingArea );
X RCO( "XmCreateDrawnButton", XmCreateDrawnButton );
X RCO( "XmCreateErrorDialog", XmCreateErrorDialog );
X RCO( "XmCreateFileSelectionBox", XmCreateFileSelectionBox );
X RCO( "XmCreateFileSelectionDialog", XmCreateFileSelectionDialog );
X RCO( "XmCreateForm", XmCreateForm );
X RCO( "XmCreateFormDialog", XmCreateFormDialog );
X RCO( "XmCreateFrame", XmCreateFrame );
X RCO( "XmCreateInformationDialog", XmCreateInformationDialog );
X RCO( "XmCreateLabel", XmCreateLabel );
X RCO( "XmCreateLabelGadget", XmCreateLabelGadget );
X RCO( "XmCreateList", XmCreateList );
X RCO( "XmCreateMainWindow", XmCreateMainWindow );
X RCO( "XmCreateMenuBar", XmCreateMenuBar );
X RCO( "XmCreateMenuShell", XmCreateMenuShell );
X RCO( "XmCreateMessageBox", XmCreateMessageBox );
X RCO( "XmCreateMessageDialog", XmCreateMessageDialog );
X RCO( "XmCreateOptionMenu", XmCreateOptionMenu );
X RCO( "XmCreatePanedWindow", XmCreatePanedWindow );
X RCO( "XmCreatePopupMenu", XmCreatePopupMenu );
X RCO( "XmCreatePromptDialog", XmCreatePromptDialog );
X RCO( "XmCreatePulldownMenu", XmCreatePulldownMenu );
X RCO( "XmCreatePushButton", XmCreatePushButton );
X RCO( "XmCreatePushButtonGadget", XmCreatePushButtonGadget );
X RCO( "XmCreateQuestionDialog", XmCreateQuestionDialog );
X RCO( "XmCreateRadioBox", XmCreateRadioBox );
X RCO( "XmCreateRowColumn", XmCreateRowColumn );
X RCO( "XmCreateScale", XmCreateScale );
X RCO( "XmCreateScrollBar", XmCreateScrollBar );
X RCO( "XmCreateScrolledList", XmCreateScrolledList );
X RCO( "XmCreateScrolledText", XmCreateScrolledText );
X RCO( "XmCreateScrolledWindow", XmCreateScrolledWindow );
X RCO( "XmCreateSelectionBox", XmCreateSelectionBox );
X RCO( "XmCreateSelectionDialog", XmCreateSelectionDialog );
X RCO( "XmCreateSeparator", XmCreateSeparator );
X RCO( "XmCreateSeparatorGadget", XmCreateSeparatorGadget );
X RCO( "XmCreateText", XmCreateText );
X RCO( "XmCreateToggleButton", XmCreateToggleButton );
X RCO( "XmCreateToggleButtonGadget", XmCreateToggleButtonGadget );
X RCO( "XmCreateWarningDialog", XmCreateWarningDialog );
X RCO( "XmCreateWorkingDialog", XmCreateWorkingDialog );
X
X/* -- register Motif widget classes */
X RCP("xmArrowButtonWidgetClass", xmArrowButtonWidgetClass );
X RCN("XmArrowButton", xmArrowButtonWidgetClass );
X RCP("xmArrowButtonGadgetClass", xmArrowButtonGadgetClass );
X RCN("XmArrowButtonGadget", xmArrowButtonGadgetClass );
X RCP("xmBulletinBoardWidgetClass", xmBulletinBoardWidgetClass );
X RCN("XmBulletinBoard", xmBulletinBoardWidgetClass );
X RCP("xmCascadeButtonWidgetClass", xmCascadeButtonWidgetClass );
X RCN("XmCascadeButton", xmCascadeButtonWidgetClass );
X RCP("xmCascadeButtonGadgetClass", xmCascadeButtonGadgetClass );
X RCN("XmCascadeButtonGadget", xmCascadeButtonGadgetClass );
X RCP("xmCommandWidgetClass", xmCommandWidgetClass );
X RCN("XmCommand", xmCommandWidgetClass );
X RCP("xmDialogShellWidgetClass", xmDialogShellWidgetClass );
X RCN("XmDialogShell", xmDialogShellWidgetClass );
X RCP("xmDrawingAreaWidgetClass", xmDrawingAreaWidgetClass );
X RCN("XmDrawingArea", xmDrawingAreaWidgetClass );
X RCP("xmDrawnButtonWidgetClass", xmDrawnButtonWidgetClass );
X RCN("XmDrawnButton", xmDrawnButtonWidgetClass );
X RCP("xmFileSelectionBoxWidgetClass", xmFileSelectionBoxWidgetClass );
X RCN("XmFileSelectionBox", xmFileSelectionBoxWidgetClass );
X RCP("xmFormWidgetClass", xmFormWidgetClass );
X RCN("XmForm", xmFormWidgetClass );
X RCP("xmFrameWidgetClass", xmFrameWidgetClass );
X RCN("XmFrame", xmFrameWidgetClass );
X RCP("xmGadgetClass", xmGadgetClass );
X RCN("XmGadget", xmGadgetClass );
X RCP("xmLabelWidgetClass", xmLabelWidgetClass );
X RCN("XmLabel", xmLabelWidgetClass );
X RCP("xmLabelGadgetClass", xmLabelGadgetClass );
X RCN("XmLabelGadget", xmLabelGadgetClass );
X RCP("xmListWidgetClass", xmListWidgetClass );
X RCN("XmList", xmListWidgetClass );
X RCP("xmMainWindowWidgetClass", xmMainWindowWidgetClass );
X RCN("XmMainWindow", xmMainWindowWidgetClass );
X RCP("xmManagerWidgetClass", xmManagerWidgetClass );
X RCN("XmManager", xmManagerWidgetClass );
X RCP("xmMenuShellWidgetClass", xmMenuShellWidgetClass );
X RCN("XmMenuShell", xmMenuShellWidgetClass );
X RCP("xmMessageBoxWidgetClass", xmMessageBoxWidgetClass );
X RCN("XmMessageBox", xmMessageBoxWidgetClass );
X RCP("xmPanedWindowWidgetClass", xmPanedWindowWidgetClass );
X RCN("XmPanedWindow", xmPanedWindowWidgetClass );
X RCP("xmPrimitiveWidgetClass", xmPrimitiveWidgetClass );
X RCN("XmPrimitive", xmPrimitiveWidgetClass );
X RCP("xmPushButtonWidgetClass", xmPushButtonWidgetClass );
X RCN("XmPushButton", xmPushButtonWidgetClass );
X RCP("xmPushButtonGadgetClass", xmPushButtonGadgetClass );
X RCN("XmPushButtonGadget", xmPushButtonGadgetClass );
X RCP("xmRowColumnWidgetClass", xmRowColumnWidgetClass );
X RCN("XmRowColumn", xmRowColumnWidgetClass );
X RCP("xmScaleWidgetClass", xmScaleWidgetClass );
X RCN("XmScale", xmScaleWidgetClass );
X RCP("xmScrollBarWidgetClass", xmScrollBarWidgetClass );
X RCN("XmScrollBar", xmScrollBarWidgetClass );
X RCP("xmScrolledWindowWidgetClass", xmScrolledWindowWidgetClass );
X RCN("XmScrolledWindow", xmScrolledWindowWidgetClass );
X RCP("xmSelectionBoxWidgetClass", xmSelectionBoxWidgetClass );
X RCN("XmSelectionBox", xmSelectionBoxWidgetClass );
X RCP("xmSeparatorWidgetClass", xmSeparatorWidgetClass );
X RCN("XmSeparator", xmSeparatorWidgetClass );
X RCP("xmSeparatorGadgetClass", xmSeparatorGadgetClass );
X RCN("XmSeparatorGadget", xmSeparatorGadgetClass );
X RCP("xmTextWidgetClass", xmTextWidgetClass );
X RCN("XmText", xmTextWidgetClass );
X RCP("xmToggleButtonWidgetClass", xmToggleButtonWidgetClass );
X RCN("XmToggleButton", xmToggleButtonWidgetClass );
X RCP("xmToggleButtonGadgetClass", xmToggleButtonGadgetClass );
X RCN("XmToggleButtonGadget", xmToggleButtonGadgetClass );
X
X#undef RCO
X#undef RCN
X#undef RCP
X}
+FUNKY+STUFF+
echo '-rw-r--r-- 1 david 9953 Aug 6 09:36 MriRegAll.c (as sent)'
chmod u=rw,g=r,o=r MriRegAll.c
ls -l MriRegAll.c
exit 0
dan
----------------------------------------------------
O'Reilly && Associates argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.
--
dan
----------------------------------------------------
O'Reilly && Associates argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.