home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / x / volume10 / wcl / part06 < prev    next >
Internet Message Format  |  1990-12-17  |  23KB

  1. Path: uunet!zaphod.mps.ohio-state.edu!julius.cs.uiuc.edu!apple!sun-barr!newstop!exodus!jpl-devvax.jpl.nasa.gov
  2. From: david@jpl-devvax.jpl.nasa.gov (David E. Smyth)
  3. Newsgroups: comp.sources.x
  4. Subject: v10i054: wcl -- Widget Creation Library, Part06/11
  5. Message-ID: <4649@exodus.Eng.Sun.COM>
  6. Date: 17 Dec 90 22:15:43 GMT
  7. References: <csx-10i049:wcl@uunet.UU.NET>
  8. Sender: news@exodus.Eng.Sun.COM
  9. Lines: 596
  10. Approved: argv@sun.com
  11.  
  12. Submitted-by: david@jpl-devvax.jpl.nasa.gov (David E. Smyth)
  13. Posting-number: Volume 10, Issue 54
  14. Archive-name: wcl/part06
  15.  
  16. # to unbundle, "sh" this file -- DO NOT use csh
  17. #  SHAR archive format.  Archive created Fri Oct 19 09:32:53 PDT 1990
  18. echo x - MD.c
  19. sed 's/^X//' > MD.c <<'+FUNKY+STUFF+'
  20. X/*
  21. X** Copyright (c) 1990 David E. Smyth
  22. X**
  23. X** Redistribution and use in source and binary forms are permitted
  24. X** provided that the above copyright notice and this paragraph are
  25. X** duplicated in all such forms and that any documentation, advertising
  26. X** materials, and other materials related to such distribution and use
  27. X** acknowledge that the software was developed by David E. Smyth.  The
  28. X** name of David E. Smyth may not be used to endorse or promote products
  29. X** derived from this software without specific prior written permission.
  30. X** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  31. X** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  32. X** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  33. X**
  34. X*/
  35. X
  36. X/******************************************************************************
  37. X**
  38. X** SCCS_data: @(#)MD.c 1.04 ( 30 September 1990 )
  39. X**
  40. X** Description:    This file contains main() for an example demonstrating
  41. X**        how to support multiple displays.  This file is derived
  42. X**        from Mri.c, and which allows prototype interfaces to be 
  43. X**        built from resource files.  The Widget Creation library 
  44. X**        is used.
  45. X**
  46. X**        Note that a real application would probably want to keep
  47. X**        the multiple displays syncronized.  The only way to do
  48. X**        that is to specifically cause each widget to update all
  49. X**        the other widgets.  This takes PROGRAMMING!!!
  50. X**
  51. X*******************************************************************************
  52. X**   Include_files.
  53. X******************************************************************************/
  54. X
  55. X#ifdef MOTIF
  56. X#include <Xm/Xm.h>
  57. X#else
  58. X#include <X11/Intrinsic.h>
  59. X#endif
  60. X#include <X11/Shell.h>
  61. X#include <ctype.h>
  62. X#include <WcCreate.h>
  63. X#include <WcCreateP.h>        /* for callback convenience funcs    */
  64. X
  65. X#include <Table.h>
  66. X
  67. X/******************************************************************************
  68. X**  Global Application Data
  69. X******************************************************************************/
  70. X
  71. Xint          gargc;
  72. Xchar**       gargv;
  73. X
  74. Xchar*        appName;
  75. Xchar*        appClass;
  76. XXtAppContext app;
  77. X
  78. Xstatic char msg[MAX_ERRMSG];
  79. X
  80. X/******************************************************************************
  81. X**  Private Functions
  82. X******************************************************************************/
  83. X
  84. X#ifdef MOTIF
  85. Xextern void MriRegisterMotif();
  86. X#define REGISTER_WIDGET_SET MriRegisterMotif
  87. X#else
  88. Xextern void AriRegisterAthena ();
  89. X#define REGISTER_WIDGET_SET AriRegisterAthena
  90. X#endif
  91. X
  92. X/*
  93. X    -- Open a new display, build another widget tree on that display.
  94. X******************************************************************************
  95. X*/
  96. X
  97. Xstatic void NewWidgetTreeOnDisplay( this, name, ignored )
  98. X    Widget  this;
  99. X    char*   name;    /* display name from res file */
  100. X    caddr_t ignored;
  101. X{
  102. X    static char clean[128];    /* display name w/o leading & trailing junk */
  103. X    int        i;
  104. X    int        largc;
  105. X    char**    largv;
  106. X    Display*    dpy;
  107. X    Widget      newShell;
  108. X    Arg        args[3];
  109. X
  110. X    /* -- get clean display name by stripping leading & trailing whitespace */
  111. X    (void)WcCleanName( name, clean );
  112. X
  113. X    /* -- make local copy of global argc and argv */
  114. X    largc = gargc;
  115. X    largv = (char**)XtMalloc( (gargc+1) * sizeof(char*) );
  116. X    for (i = 0 ; i < gargc ; i++)
  117. X    largv[i] = gargv[i];
  118. X    largv[i] = NULL;
  119. X
  120. X    /* -- open display, build Xrdb, add to app context */
  121. X    dpy = XtOpenDisplay( 
  122. X    app, clean, appName, appClass, NULL, 0, &largc, largv );
  123. X    if (dpy == NULL)
  124. X    {
  125. X    sprintf( msg, "NewWidgetTreeOnDisplay( %s ) failed:\
  126. X        Could not open display %s", clean, clean);
  127. X    XtWarning( msg );
  128. X    return;
  129. X    }
  130. X
  131. X    /* -- create new shell on new display */
  132. X    /* these args are exactly what XtAppInitialize sets. */
  133. X    i = 0;
  134. X /* XtSetArg(args[i], XtNscreen, DefaultScreenOfDisplay(dpy));    i++; */
  135. X    XtSetArg(args[i], XtNargc, largc);                i++;
  136. X    XtSetArg(args[i], XtNargv, largv);                i++;
  137. X
  138. X    newShell = XtAppCreateShell(
  139. X    appName, appClass,
  140. X    applicationShellWidgetClass, 
  141. X    dpy, 
  142. X    args, i );
  143. X    if (newShell == NULL)
  144. X    {
  145. X    sprintf( msg, "NewWidgetTreeOnDisplay( %s ) failed:\
  146. X        Could not create new application shell.", clean);
  147. X        XtWarning( msg );
  148. X        return;
  149. X    }
  150. X
  151. X    /* -- create widget tree under this new application shell */
  152. X    WcWidgetCreation ( newShell );
  153. X
  154. X    /*  -- Realize the widget tree and return to the main application loop */
  155. X    XtRealizeWidget ( newShell );
  156. X    return;
  157. X}
  158. X
  159. X/*
  160. X    -- Kill a widget tree on a display, close that display.
  161. X******************************************************************************
  162. X*/
  163. X
  164. Xstatic void KillWidgetTreeOnDisplay( this, notused, ignored )
  165. X    Widget  this;
  166. X    caddr_t notused;
  167. X    caddr_t ignored;
  168. X{
  169. X    Display* dpy = XtDisplay(this);
  170. X    XtDestroyWidget( WcRootWidget(this) );
  171. X    XtCloseDisplay ( dpy );
  172. X}
  173. X
  174. X/*
  175. X    -- Register Table widget and application specific callbacks.
  176. X******************************************************************************
  177. X*/
  178. X
  179. Xstatic void RegisterApplication ( app )
  180. X    XtAppContext app;
  181. X{
  182. X#define RCN( name, class ) WcRegisterClassName ( app, name, class );
  183. X#define RCP( name, class ) WcRegisterClassPtr  ( app, name, class );
  184. X#define RCB( name, func  ) WcRegisterCallback  ( app, name, func, NULL );
  185. X
  186. X    /* -- register widget classes */
  187. X    RCN( "Table",                       tableWidgetClass                );
  188. X    RCP( "tableWidgetClass",            tableWidgetClass                );
  189. X
  190. X    /* -- register callbacks to open a new display */
  191. X    RCB( "NewWidgetTreeOnDisplay",    NewWidgetTreeOnDisplay        );
  192. X    RCB( "KillWidgetTreeOnDisplay",    KillWidgetTreeOnDisplay        );
  193. X
  194. X#undef  RCN
  195. X#undef  RCP
  196. X#undef  RCB
  197. X}
  198. X
  199. X/******************************************************************************
  200. X*   MAIN function
  201. X******************************************************************************/
  202. X
  203. Xmain ( argc, argv )
  204. X    int argc;
  205. X    char* argv[];
  206. X{   
  207. X    int        i;
  208. X    Widget    appShell;
  209. X
  210. X    /* make copies of argc and argv for later use in NewWidgetTreeOnDisplay */
  211. X    gargc = argc;
  212. X    gargv = (char**)XtMalloc( (argc+1) * sizeof(char*) );
  213. X    for (i = 0 ; i < argc ; i++)
  214. X    gargv[i] = argv[i];
  215. X    gargv[i] = NULL;
  216. X
  217. X    appName = argv[0];
  218. X    appClass = (char*) XtMalloc ( strlen ( argv[0] ) + 1 );
  219. X    strcpy (appClass, argv[0]);
  220. X    /* initialize first letter to make class, or first two if
  221. X    ** first is already capitalized, or don't worry about it.
  222. X    */
  223. X    if (islower(appClass[0]))
  224. X    appClass[0] = toupper(appClass[0]);
  225. X    else if (islower(appClass[1]))
  226. X        appClass[1] = toupper(appClass[1]);
  227. X    
  228. X    /*  -- Intialize Toolkit creating the application shell */
  229. X    appShell = XtInitialize ( 
  230. X    appName, appClass,        /* app name and class */
  231. X    NULL, 0,             /* description of cmd line options */
  232. X    &argc, argv 
  233. X    );
  234. X    app = XtWidgetToApplicationContext(appShell);
  235. X
  236. X    /*  -- Register all application specific callbacks and widget classes */
  237. X    RegisterApplication ( app );
  238. X
  239. X    /*  -- Register all classes and constructors for desired widget set */
  240. X    REGISTER_WIDGET_SET ( app );
  241. X
  242. X    /*  -- Create widget tree below toplevel shell using Xrm database */
  243. X    WcWidgetCreation ( appShell );
  244. X
  245. X    /*  -- Realize the widget tree and enter the main application loop */
  246. X    XtRealizeWidget ( appShell );
  247. X    XtMainLoop ( );
  248. X}
  249. +FUNKY+STUFF+
  250. echo '-rw-r--r--  1 david        7234 Oct 12 09:57 MD.c    (as sent)'
  251. chmod u=rw,g=r,o=r MD.c
  252. ls -l MD.c
  253. echo x - Mri.c
  254. sed 's/^X//' > Mri.c <<'+FUNKY+STUFF+'
  255. X/*
  256. X** Copyright (c) 1990 David E. Smyth
  257. X**
  258. X** Redistribution and use in source and binary forms are permitted
  259. X** provided that the above copyright notice and this paragraph are
  260. X** duplicated in all such forms and that any documentation, advertising
  261. X** materials, and other materials related to such distribution and use
  262. X** acknowledge that the software was developed by David E. Smyth.  The
  263. X** name of David E. Smyth may not be used to endorse or promote products
  264. X** derived from this software without specific prior written permission.
  265. X** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  266. X** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  267. X** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  268. X**
  269. X*/
  270. X
  271. X/******************************************************************************
  272. X**
  273. X** SCCS_data: @(#)Mri.c 1.0 ( 19 June 1990 )
  274. X**
  275. X** Description:    This file contains main() for a Motif Resource Interpreter
  276. X**        which allows prototype interfaces to be built from
  277. X**        resource files.  The Widget Creation library is used.
  278. X**
  279. X**        Besides the Motif widgets, Mri also knows about Table
  280. X**        widgets, simply because they are so dang useful!
  281. X**
  282. X** Notes:    This program uses the Xrm (X resource management) database
  283. X**        for widget tree definition and management.  This program
  284. X**        is dependent on the Motif widget set only because the
  285. X**        Motif classes and constructors are registered, which
  286. X**        causes the Motif libs to be linked in.  Someday I'll
  287. X**        get a shared lib version of Motif and the Athena widgets,
  288. X**        and even the OpenLook widget set, and then there will
  289. X**        be no reason that widgets could not be mixed and matched.
  290. X**        Doing that without shared libs makes for a HUGE executable.
  291. X**
  292. X******************************************************************************/
  293. X
  294. X/******************************************************************************
  295. X**   Include_files.
  296. X******************************************************************************/
  297. X
  298. X#include <Xm/Xm.h>
  299. X#include <ctype.h>
  300. X#include <WcCreate.h>
  301. X
  302. X#include <Table.h>
  303. X
  304. X/******************************************************************************
  305. X**  Private Functions
  306. X******************************************************************************/
  307. X
  308. Xextern void MriRegisterMotif();
  309. X
  310. Xstatic void RegisterTable ( app )
  311. X    XtAppContext app;
  312. X{
  313. X#define RCN( name, class ) WcRegisterClassName ( app, name, class );
  314. X#define RCP( name, class ) WcRegisterClassPtr  ( app, name, class );
  315. X
  316. X    /* -- register widget classes */
  317. X    RCN( "Table",                       tableWidgetClass                );
  318. X    RCP( "tableWidgetClass",            tableWidgetClass                );
  319. X
  320. X#undef  RCN
  321. X#undef  RCP
  322. X}
  323. X
  324. X/******************************************************************************
  325. X*   MAIN function
  326. X******************************************************************************/
  327. X
  328. Xmain ( argc, argv )
  329. X    int argc;
  330. X    char* argv[];
  331. X{   
  332. X    char*        appClass;
  333. X    XtAppContext app;
  334. X    Widget       appShell;
  335. X
  336. X    appClass = (char*) XtMalloc ( strlen ( argv[0] ) + 1 );
  337. X    strcpy (appClass, argv[0]);
  338. X    /* initialize first letter to make class, or first two if
  339. X    ** first is already capitalized, or don't worry about it.
  340. X    */
  341. X    if (islower(appClass[0]))
  342. X    appClass[0] = toupper(appClass[0]);
  343. X    else if (islower(appClass[1]))
  344. X        appClass[1] = toupper(appClass[1]);
  345. X    
  346. X    /*  -- Intialize Toolkit creating the application shell */
  347. X    appShell = XtInitialize ( 
  348. X    argv[0], appClass,        /* app name and class */
  349. X    NULL, 0,             /* description of cmd line options */
  350. X    &argc, argv 
  351. X    );
  352. X    app = XtWidgetToApplicationContext(appShell);
  353. X
  354. X    /*  -- Register all application specific callbacks and widget classes */
  355. X    RegisterTable ( app );
  356. X
  357. X    /*  -- Register all Motif classes and constructors */
  358. X    MriRegisterMotif ( app );
  359. X
  360. X    /*  -- Create widget tree below toplevel shell using Xrm database */
  361. X    WcWidgetCreation ( appShell );
  362. X
  363. X    /*  -- Realize the widget tree and enter the main application loop */
  364. X    XtRealizeWidget ( appShell );
  365. X    XtMainLoop ( );
  366. X}
  367. +FUNKY+STUFF+
  368. echo '-rw-r--r--  1 david        4088 Aug  6 09:36 Mri.c    (as sent)'
  369. chmod u=rw,g=r,o=r Mri.c
  370. ls -l Mri.c
  371. echo x - MriRegAll.c
  372. sed 's/^X//' > MriRegAll.c <<'+FUNKY+STUFF+'
  373. X/*
  374. X** Copyright (c) 1990 David E. Smyth
  375. X**
  376. X** This file was derived from work performed by Martin Brunecky at
  377. X** Auto-trol Technology Corporation, Denver, Colorado, under the
  378. X** following copyright:
  379. X**
  380. X*******************************************************************************
  381. X* Copyright 1990 by Auto-trol Technology Corporation, Denver, Colorado.
  382. X*
  383. X*                        All Rights Reserved
  384. X*
  385. X* Permission to use, copy, modify, and distribute this software and its
  386. X* documentation for any purpose and without fee is hereby granted, provided
  387. X* that the above copyright notice appears on all copies and that both the
  388. X* copyright and this permission notice appear in supporting documentation
  389. X* and that the name of Auto-trol not be used in advertising or publicity
  390. X* pertaining to distribution of the software without specific, prior written
  391. X* permission.
  392. X*
  393. X* Auto-trol disclaims all warranties with regard to this software, including
  394. X* all implied warranties of merchantability and fitness, in no event shall
  395. X* Auto-trol be liable for any special, indirect or consequential damages or
  396. X* any damages whatsoever resulting from loss of use, data or profits, whether
  397. X* in an action of contract, negligence or other tortious action, arising out
  398. X* of or in connection with the use or performance of this software.
  399. X*******************************************************************************
  400. X**
  401. X** Redistribution and use in source and binary forms are permitted
  402. X** provided that the above copyright notice and this paragraph are
  403. X** duplicated in all such forms and that any documentation, advertising
  404. X** materials, and other materials related to such distribution and use
  405. X** acknowledge that the software was developed by David E. Smyth.  The
  406. X** name of David E. Smyth may not be used to endorse or promote products
  407. X** derived from this software without specific prior written permission.
  408. X** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  409. X** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  410. X** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  411. X**
  412. X*/
  413. X
  414. X/*
  415. X* SCCS_data: @(#)MriRegAll.c 1.0 ( 19 June 1990 )
  416. X*
  417. X*     This module contains registration routine for all Motif
  418. X*     widget/gadget constructors and classes.
  419. X*
  420. X* Module_interface_summary: 
  421. X*
  422. X*     void MriRegisterMotif ( XtAppContext app )
  423. X*
  424. X*******************************************************************************
  425. X*/
  426. X
  427. X#include <Xm/Xm.h>
  428. X
  429. X#include <Xm/ArrowB.h>
  430. X#include <Xm/ArrowBG.h>
  431. X#include <Xm/BulletinB.h>
  432. X#include <Xm/CascadeB.h>
  433. X#include <Xm/CascadeBG.h>
  434. X#include <Xm/Command.h>
  435. X#include <Xm/DialogS.h>
  436. X#include <Xm/DrawingA.h>
  437. X#include <Xm/DrawnB.h>
  438. X#include <Xm/FileSB.h>
  439. X#include <Xm/Form.h>
  440. X#include <Xm/Frame.h>
  441. X#include <Xm/Label.h>
  442. X#include <Xm/LabelG.h>
  443. X#include <Xm/List.h>
  444. X#include <Xm/MainW.h>
  445. X#include <Xm/MenuShell.h>
  446. X#include <Xm/MessageB.h>
  447. X#include <Xm/PanedW.h>
  448. X#include <Xm/PushB.h>
  449. X#include <Xm/PushBG.h>
  450. X#include <Xm/RowColumn.h>
  451. X#include <Xm/Scale.h>
  452. X#include <Xm/ScrollBar.h>
  453. X#include <Xm/ScrolledW.h>
  454. X#include <Xm/SelectioB.h>
  455. X#include <Xm/SeparatoG.h>
  456. X#include <Xm/Separator.h>
  457. X#include <Xm/Text.h>
  458. X#include <Xm/ToggleB.h>
  459. X#include <Xm/ToggleBG.h>
  460. X
  461. Xvoid MriRegisterMotif ( app )
  462. X    XtAppContext app;
  463. X{
  464. X#define RCO( name, func  )  WcRegisterConstructor ( app, name, func  )
  465. X#define RCN( name, class )  WcRegisterClassName   ( app, name, class )
  466. X#define RCP( name, class )  WcRegisterClassPtr    ( app, name, class )
  467. X
  468. X/* -- register all Motif constructors */
  469. X RCO( "XmCreateArrowButton",        XmCreateArrowButton        );
  470. X RCO( "XmCreateArrowButtonGadget",    XmCreateArrowButtonGadget    );
  471. X RCO( "XmCreateBulletinBoard",        XmCreateBulletinBoard        );
  472. X RCO( "XmCreateBulletinBoardDialog",    XmCreateBulletinBoardDialog    );
  473. X RCO( "XmCreateCascadeButton",        XmCreateCascadeButton        );
  474. X RCO( "XmCreateCascadeButtonGadget",    XmCreateCascadeButtonGadget    );
  475. X RCO( "XmCreateCommand",        XmCreateCommand            );
  476. X RCO( "XmCreateDialogShell",        XmCreateDialogShell        );
  477. X RCO( "XmCreateDrawingArea",        XmCreateDrawingArea        );
  478. X RCO( "XmCreateDrawnButton",        XmCreateDrawnButton        );
  479. X RCO( "XmCreateErrorDialog",        XmCreateErrorDialog        );
  480. X RCO( "XmCreateFileSelectionBox",    XmCreateFileSelectionBox    );
  481. X RCO( "XmCreateFileSelectionDialog",    XmCreateFileSelectionDialog    );
  482. X RCO( "XmCreateForm",            XmCreateForm            );
  483. X RCO( "XmCreateFormDialog",        XmCreateFormDialog        );
  484. X RCO( "XmCreateFrame",            XmCreateFrame            );
  485. X RCO( "XmCreateInformationDialog",    XmCreateInformationDialog    );
  486. X RCO( "XmCreateLabel",            XmCreateLabel            );
  487. X RCO( "XmCreateLabelGadget",        XmCreateLabelGadget        );
  488. X RCO( "XmCreateList",            XmCreateList            );
  489. X RCO( "XmCreateMainWindow",        XmCreateMainWindow        );
  490. X RCO( "XmCreateMenuBar",        XmCreateMenuBar            );
  491. X RCO( "XmCreateMenuShell",        XmCreateMenuShell        );
  492. X RCO( "XmCreateMessageBox",        XmCreateMessageBox        );
  493. X RCO( "XmCreateMessageDialog",        XmCreateMessageDialog        );
  494. X RCO( "XmCreateOptionMenu",        XmCreateOptionMenu        );
  495. X RCO( "XmCreatePanedWindow",        XmCreatePanedWindow        );
  496. X RCO( "XmCreatePopupMenu",        XmCreatePopupMenu        );
  497. X RCO( "XmCreatePromptDialog",        XmCreatePromptDialog        );
  498. X RCO( "XmCreatePulldownMenu",        XmCreatePulldownMenu        );
  499. X RCO( "XmCreatePushButton",        XmCreatePushButton        );
  500. X RCO( "XmCreatePushButtonGadget",    XmCreatePushButtonGadget    );
  501. X RCO( "XmCreateQuestionDialog",        XmCreateQuestionDialog        );
  502. X RCO( "XmCreateRadioBox",        XmCreateRadioBox        );
  503. X RCO( "XmCreateRowColumn",        XmCreateRowColumn        );
  504. X RCO( "XmCreateScale",            XmCreateScale            );
  505. X RCO( "XmCreateScrollBar",        XmCreateScrollBar        );
  506. X RCO( "XmCreateScrolledList",        XmCreateScrolledList        );
  507. X RCO( "XmCreateScrolledText",        XmCreateScrolledText        );
  508. X RCO( "XmCreateScrolledWindow",        XmCreateScrolledWindow        );
  509. X RCO( "XmCreateSelectionBox",        XmCreateSelectionBox        );
  510. X RCO( "XmCreateSelectionDialog",    XmCreateSelectionDialog        );
  511. X RCO( "XmCreateSeparator",        XmCreateSeparator        );
  512. X RCO( "XmCreateSeparatorGadget",    XmCreateSeparatorGadget        );
  513. X RCO( "XmCreateText",            XmCreateText            );
  514. X RCO( "XmCreateToggleButton",        XmCreateToggleButton        );
  515. X RCO( "XmCreateToggleButtonGadget",    XmCreateToggleButtonGadget    );
  516. X RCO( "XmCreateWarningDialog",        XmCreateWarningDialog        );
  517. X RCO( "XmCreateWorkingDialog",        XmCreateWorkingDialog        );
  518. X
  519. X/* -- register Motif widget classes */
  520. X RCP("xmArrowButtonWidgetClass",    xmArrowButtonWidgetClass    );
  521. X RCN("XmArrowButton",            xmArrowButtonWidgetClass    );
  522. X RCP("xmArrowButtonGadgetClass",    xmArrowButtonGadgetClass    );
  523. X RCN("XmArrowButtonGadget",        xmArrowButtonGadgetClass    );
  524. X RCP("xmBulletinBoardWidgetClass",    xmBulletinBoardWidgetClass    );
  525. X RCN("XmBulletinBoard",            xmBulletinBoardWidgetClass    );
  526. X RCP("xmCascadeButtonWidgetClass",    xmCascadeButtonWidgetClass    );
  527. X RCN("XmCascadeButton",            xmCascadeButtonWidgetClass    );
  528. X RCP("xmCascadeButtonGadgetClass",    xmCascadeButtonGadgetClass    );
  529. X RCN("XmCascadeButtonGadget",        xmCascadeButtonGadgetClass    );
  530. X RCP("xmCommandWidgetClass",        xmCommandWidgetClass        );
  531. X RCN("XmCommand",            xmCommandWidgetClass        );
  532. X RCP("xmDialogShellWidgetClass",    xmDialogShellWidgetClass    );
  533. X RCN("XmDialogShell",            xmDialogShellWidgetClass    );
  534. X RCP("xmDrawingAreaWidgetClass",    xmDrawingAreaWidgetClass    );
  535. X RCN("XmDrawingArea",            xmDrawingAreaWidgetClass    );
  536. X RCP("xmDrawnButtonWidgetClass",    xmDrawnButtonWidgetClass    );
  537. X RCN("XmDrawnButton",            xmDrawnButtonWidgetClass    );
  538. X RCP("xmFileSelectionBoxWidgetClass",    xmFileSelectionBoxWidgetClass    );
  539. X RCN("XmFileSelectionBox",        xmFileSelectionBoxWidgetClass    );
  540. X RCP("xmFormWidgetClass",        xmFormWidgetClass        );
  541. X RCN("XmForm",                xmFormWidgetClass        );
  542. X RCP("xmFrameWidgetClass",        xmFrameWidgetClass        );
  543. X RCN("XmFrame",                xmFrameWidgetClass        );
  544. X RCP("xmGadgetClass",            xmGadgetClass            );
  545. X RCN("XmGadget",            xmGadgetClass            );
  546. X RCP("xmLabelWidgetClass",        xmLabelWidgetClass        );
  547. X RCN("XmLabel",                xmLabelWidgetClass        );
  548. X RCP("xmLabelGadgetClass",        xmLabelGadgetClass        );
  549. X RCN("XmLabelGadget",            xmLabelGadgetClass        );
  550. X RCP("xmListWidgetClass",        xmListWidgetClass        );
  551. X RCN("XmList",                xmListWidgetClass        );
  552. X RCP("xmMainWindowWidgetClass",        xmMainWindowWidgetClass        );
  553. X RCN("XmMainWindow",            xmMainWindowWidgetClass        );
  554. X RCP("xmManagerWidgetClass",        xmManagerWidgetClass        );
  555. X RCN("XmManager",            xmManagerWidgetClass        );
  556. X RCP("xmMenuShellWidgetClass",        xmMenuShellWidgetClass        );
  557. X RCN("XmMenuShell",            xmMenuShellWidgetClass        );
  558. X RCP("xmMessageBoxWidgetClass",        xmMessageBoxWidgetClass        );
  559. X RCN("XmMessageBox",            xmMessageBoxWidgetClass        );
  560. X RCP("xmPanedWindowWidgetClass",    xmPanedWindowWidgetClass    );
  561. X RCN("XmPanedWindow",            xmPanedWindowWidgetClass    );
  562. X RCP("xmPrimitiveWidgetClass",        xmPrimitiveWidgetClass        );
  563. X RCN("XmPrimitive",            xmPrimitiveWidgetClass        );
  564. X RCP("xmPushButtonWidgetClass",        xmPushButtonWidgetClass        );
  565. X RCN("XmPushButton",            xmPushButtonWidgetClass        );
  566. X RCP("xmPushButtonGadgetClass",        xmPushButtonGadgetClass        );
  567. X RCN("XmPushButtonGadget",        xmPushButtonGadgetClass        );
  568. X RCP("xmRowColumnWidgetClass",        xmRowColumnWidgetClass        );
  569. X RCN("XmRowColumn",            xmRowColumnWidgetClass        );
  570. X RCP("xmScaleWidgetClass",        xmScaleWidgetClass        );
  571. X RCN("XmScale",                xmScaleWidgetClass        );
  572. X RCP("xmScrollBarWidgetClass",        xmScrollBarWidgetClass        );
  573. X RCN("XmScrollBar",            xmScrollBarWidgetClass        );
  574. X RCP("xmScrolledWindowWidgetClass",    xmScrolledWindowWidgetClass    );
  575. X RCN("XmScrolledWindow",        xmScrolledWindowWidgetClass    );
  576. X RCP("xmSelectionBoxWidgetClass",    xmSelectionBoxWidgetClass    );
  577. X RCN("XmSelectionBox",            xmSelectionBoxWidgetClass    );
  578. X RCP("xmSeparatorWidgetClass",        xmSeparatorWidgetClass        );
  579. X RCN("XmSeparator",            xmSeparatorWidgetClass        );
  580. X RCP("xmSeparatorGadgetClass",        xmSeparatorGadgetClass        );
  581. X RCN("XmSeparatorGadget",        xmSeparatorGadgetClass        );
  582. X RCP("xmTextWidgetClass",        xmTextWidgetClass        );
  583. X RCN("XmText",                xmTextWidgetClass        );
  584. X RCP("xmToggleButtonWidgetClass",    xmToggleButtonWidgetClass    );
  585. X RCN("XmToggleButton",            xmToggleButtonWidgetClass    );
  586. X RCP("xmToggleButtonGadgetClass",    xmToggleButtonGadgetClass    );
  587. X RCN("XmToggleButtonGadget",        xmToggleButtonGadgetClass    );
  588. X
  589. X#undef RCO
  590. X#undef RCN
  591. X#undef RCP
  592. X}
  593. +FUNKY+STUFF+
  594. echo '-rw-r--r--  1 david        9953 Aug  6 09:36 MriRegAll.c    (as sent)'
  595. chmod u=rw,g=r,o=r MriRegAll.c
  596. ls -l MriRegAll.c
  597. exit 0
  598.  
  599. dan
  600. ----------------------------------------------------
  601. O'Reilly && Associates   argv@sun.com / argv@ora.com
  602. Opinions expressed reflect those of the author only.
  603. --
  604. dan
  605. ----------------------------------------------------
  606. O'Reilly && Associates   argv@sun.com / argv@ora.com
  607. Opinions expressed reflect those of the author only.
  608.