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

  1. Path: uunet!bellcore!rutgers!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: v10i053: wcl -- Widget Creation Library, Part05/11
  5. Message-ID: <4682@exodus.Eng.Sun.COM>
  6. Date: 18 Dec 90 02:03:26 GMT
  7. References: <csx-10i049:wcl@uunet.UU.NET>
  8. Sender: news@exodus.Eng.Sun.COM
  9. Lines: 1561
  10. Approved: argv@sun.com
  11.  
  12. Submitted-by: david@jpl-devvax.jpl.nasa.gov (David E. Smyth)
  13. Posting-number: Volume 10, Issue 53
  14. Archive-name: wcl/part05
  15.  
  16. # to unbundle, "sh" this file -- DO NOT use csh
  17. #  SHAR archive format.  Archive created Fri Oct 19 09:32:30 PDT 1990
  18. echo x - M5.Dialogs
  19. sed 's/^X//' > M5.Dialogs <<'+FUNKY+STUFF+'
  20. X  Dialogs
  21. X  -------
  22. X
  23. X  This example allows instances of each type of Motif dialog to be
  24. X  selected from a pulldown menu.  Both statically created and dynamically
  25. X  created dialogs are demonstrated.
  26. X
  27. X  Funny Names Due To Motif Constructors
  28. X  -------------------------------------
  29. X
  30. X  Motif constructors often introduce extra widgets.  In this example, the
  31. X  buttons on the menus cause various types of dialog boxes to be managed
  32. X  (popped-up).  Note the names required:
  33. X
  34. X    *pd.activateCallback: WcManageCB( *PromptDialog.PromptDialog )
  35. X
  36. X  This seemingly strange naming can be detected using the wcTrace
  37. X  resource.  The XmCreatePromptDialog constructor creates a dialog shell
  38. X  named `PromptDialog' and a SelectionBox child which is also named
  39. X  `PromptDialog'.  In order to see the SelectionBox, it must be managed,
  40. X  not just the dialog shell.  A common error is the following:
  41. X
  42. X    *pd.activateCallback:    WcManageCB( *PromptDialog )
  43. X
  44. X  This simply causes the dialog shell to pop-up, but it will be empty:
  45. X  its child, the SelectionBox, is still not managed and so will not be
  46. X  visible.
  47. X
  48. X  Note also that not all dialog constructors create pop-up shells
  49. X  using the same naming conventions in Motif 1.0.
  50. X
  51. X*************************************************************************
  52. X** NOTE!  Motif 1.1 will use a common and different naming convention: **
  53. X** shells built be XmCreate*Dialog will be named <name>_popup !!!!!!!! **
  54. X*************************************************************************
  55. X
  56. X
  57. X  Widgets Statically Created By XmCreate*Dialog Should Be Unmanaged
  58. X  -----------------------------------------------------------------
  59. X
  60. X  Otherwise, they will appear at widget creation time in the upper
  61. X  left location of the screen (at least when using mwm).  Probably
  62. X  not what you had in mind.   
  63. X
  64. X
  65. X  Dynamically Created Widgets
  66. X  ---------------------------
  67. X
  68. X  Most of the dialogs in this example are dynamically created.  
  69. X  When they are created, the WcCreateChildrenCB() specifies
  70. X  the parentage of the dynamically created widget.  The dynamcially
  71. X  created children are NOT listed in any wcChildren resource.
  72. X
  73. X    o    The heirarchy of statically (initially) created 
  74. X        widgets is specified by wcChildren resources.
  75. X
  76. X    o    The parentage of dynamically created widgets
  77. X        is specified by the first argument to the
  78. X        WcCreateChildrenCB() callback function.
  79. X
  80. X  Multiple Identical Widgets
  81. X  --------------------------
  82. X
  83. X  This example allows multiple identical copies of the dynamically
  84. X  created dialog boxes.  The buttons on such dynamic dialos
  85. X  invoke WcDestroyCB, which is effectively XtDestroy().
  86. X
  87. X  Dynamically Created Once Only
  88. X  -----------------------------
  89. X
  90. X  The WorkingDialog presents an example of a common use of dynamically
  91. X  created widgets.  The WorkingDialog is dynamically created the first
  92. X  time it is asked for, and from then on it is simply unmanaged and
  93. X  re-managed.  
  94. X
  95. X  ----------------------------------------------------------------------
  96. X
  97. X# The dialogs listed as children of Mri are the statically created dialogs:
  98. X#
  99. XMri.wcChildren:        menuBar, BulletinBoardDialog, ErrorDialog
  100. XMri.title:        Mri using M5.Dialogs
  101. X
  102. X# Only the first two dialogs are statically created, with exactly
  103. X# one instance existing throughout the life of the process.
  104. X#
  105. X# The button's callback unmanages the BulletinBoardDialog 
  106. X# child of the shell.
  107. X#
  108. X*BulletinBoardDialog.wcConstructor:    XmCreateBulletinBoardDialog
  109. X*BulletinBoardDialog.wcManaged:        False
  110. X*BulletinBoardDialog.wcTrace:        True
  111. X*BulletinBoardDialog.wcChildren:    bbButton
  112. X*bbButton.wcConstructor:        XmCreatePushButton
  113. X*bbButton.labelString:            Button on a BulletinBoardDialog
  114. X*bbButton.activateCallback:        WcUnmanageCB( ~BulletinBoardDialog )
  115. X
  116. X# Statically created, so buttons just unmanage:
  117. X#
  118. X*ErrorDialog.wcConstructor:        XmCreateErrorDialog
  119. X*ErrorDialog.wcTrace:            True
  120. X*ErrorDialog.wcManaged:            False
  121. X*ErrorDialog.cancelCallback:        WcUnmanageCB(this)
  122. X*ErrorDialog.helpCallback:        WcUnmanageCB(this)
  123. X*ErrorDialog.okCallback:        WcUnmanageCB(this)
  124. X
  125. X# All the other dialogs are dynamically created, so they start out 
  126. X# managed, and the std buttons destroy the pop-up (parent) shell:
  127. X
  128. X*cancelCallback:    WcDestroyCB( ~ )
  129. X*helpCallback:        WcDestroyCB( ~ )
  130. X*okCallback:        WcDestroyCB( ~ )
  131. X
  132. X*FileSelectionDialog.wcConstructor:    XmCreateFileSelectionDialog
  133. X*FileSelectionDialog.wcTrace:        True
  134. X
  135. X#
  136. X# The button's callback destroys the parent of the parent of the button
  137. X# which is the dialog shell.
  138. X#
  139. X*FormDialog.wcConstructor:        XmCreateFormDialog
  140. X*FormDialog.wcTrace:            True
  141. X*FormDialog.wcChildren:            fdButton
  142. X*fdButton.wcConstructor:        XmCreatePushButton
  143. X*fdButton.labelString:            Button on a FormDialog
  144. X*fdButton.activateCallback:        WcDestroyCB( ^^ )
  145. X
  146. X*InformationDialog.wcConstructor:    XmCreateInformationDialog
  147. X*InformationDialog.wcTrace:        True
  148. X
  149. X*MessageDialog.wcConstructor:        XmCreateMessageDialog
  150. X*MessageDialog.wcTrace:            True
  151. X
  152. X*PromptDialog.wcConstructor:        XmCreatePromptDialog
  153. X*PromptDialog.wcTrace:            True
  154. X
  155. X*QuestionDialog.wcConstructor:        XmCreateQuestionDialog
  156. X*QuestionDialog.wcTrace:        True
  157. X
  158. X*SelectionDialog.wcConstructor:        XmCreateSelectionDialog
  159. X*SelectionDialog.wcTrace:        True
  160. X
  161. X*WarningDialog.wcConstructor:        XmCreateWarningDialog
  162. X*WarningDialog.wcTrace:            True
  163. X
  164. X!  Note: this dialog is dynamically created, and then
  165. X!  simply unmanaged and remanaged.
  166. X! 
  167. X*WorkingDialog.wcConstructor:        XmCreateWorkingDialog
  168. X*WorkingDialog.wcTrace:            True
  169. X*WorkingDialog.cancelCallback:        WcUnmanageCB( this )
  170. X*WorkingDialog.helpCallback:        WcUnmanageCB( this )
  171. X*WorkingDialog.okCallback:        WcUnmanageCB( this )
  172. X
  173. X  ----------------------------------------------------------------------
  174. X
  175. X  Below are the resources for the menuBar and all its children.
  176. X
  177. X  ----------------------------------------------------------------------
  178. X
  179. X*menuBar.wcConstructor:    XmCreateMenuBar
  180. X*menuBar.wcChildren:    fileMenu, file, \
  181. X            staticDialogMenu, staticDialogs, \
  182. X            dynamicDialogMenu, dynamicDialogs
  183. X
  184. X! fileMenu contains only a quit button
  185. X
  186. X*fileMenu.wcConstructor: XmCreatePulldownMenu
  187. X*fileMenu.wcManaged:     False
  188. X*fileMenu.wcChildren:    quit
  189. X
  190. X*quit.wcConstructor:    XmCreateCascadeButton
  191. X*quit.labelString:    Quit
  192. X*quit.activateCallback:    WcExitCB
  193. X
  194. X*file.wcConstructor:    XmCreateCascadeButton
  195. X*file.labelString:    File
  196. X*file.subMenuId:    *fileMenu
  197. X
  198. X! staticDialogMenu contains one button for each dialog
  199. X! which is statically (initially) created.  These dialogs
  200. X! are managed (popped-up) when the cascade button is activated.
  201. X
  202. X*staticDialogs.wcConstructor:    XmCreateCascadeButton
  203. X*staticDialogs.labelString:    Manage Existing Dialogs
  204. X*staticDialogs.subMenuId:    *staticDialogMenu
  205. X
  206. X*staticDialogMenu.wcConstructor:    XmCreatePulldownMenu
  207. X*staticDialogMenu.wcManaged:        False
  208. X*staticDialogMenu.wcChildren:        bb, ed
  209. X
  210. X! The BulletinBoardDialog was statically created, so we just need to
  211. X! manage it.
  212. X! Note unexpected wierdness of name:
  213. X
  214. X*bb.wcConstructor:    XmCreateCascadeButton
  215. X*bb.labelString:    Manage BulletinBoardDialog
  216. X*bb.activateCallback:    WcManageCB( \
  217. X    *BulletinBoardDialog_popup.BulletinBoardDialog)
  218. X
  219. X! Statically created, just manage the ErrorDialog to make it pop-up.
  220. X! Note that only one ErrorDialog widget exists, so once it is managed
  221. X! subsequent menu button selection have no apparent effect.
  222. X
  223. X*ed.wcConstructor:    XmCreateCascadeButton
  224. X*ed.labelString:    Manage ErrorDialog
  225. X*ed.activateCallback:    WcManageCB(*ErrorDialog.ErrorDialog)
  226. X
  227. X! dynamicDialogMenu contains one button for each dialog
  228. X! which can be dynamically created.  These dialogs are
  229. X! created when the appropriate cascade button is activated.
  230. X
  231. X*dynamicDialogs.wcConstructor:    XmCreateCascadeButton
  232. X*dynamicDialogs.labelString:    Create New Dialogs
  233. X*dynamicDialogs.subMenuId:    *dynamicDialogMenu
  234. X
  235. X*dynamicDialogMenu.wcConstructor:    XmCreatePulldownMenu
  236. X*dynamicDialogMenu.wcManaged:        False
  237. X*dynamicDialogMenu.wcChildren:        fsd, fd, id, md, pd, \
  238. X                    qd, sd, warn, sep, work
  239. X
  240. X*sep.wcConstructor:    XmCreateSeparatorGadget
  241. X
  242. X! For all the rest of the dialogs, they are created, not just managed.
  243. X!
  244. X! This causes a new FileSelectionDialog to be created as a child of
  245. X! the application shell.
  246. X
  247. X*fsd.wcConstructor:    XmCreateCascadeButton
  248. X*fsd.labelString:    Create FileSelectionDialog
  249. X*fsd.activateCallback:    WcCreateChildrenCB( Mri, FileSelectionDialog )
  250. X
  251. X! The form dialog will be the child of the parent of the menu shell
  252. X! which is the ancestor of the `fd' cascade button.
  253. X!
  254. X*fd.wcConstructor:    XmCreateCascadeButton
  255. X*fd.labelString:    Create FormDialog
  256. X*fd.activateCallback:    WcCreateChildrenCB( ~^, FormDialog)
  257. X
  258. X*id.wcConstructor:    XmCreateCascadeButton
  259. X*id.labelString:    Create InformationDialog
  260. X*id.activateCallback:    WcCreateChildrenCB( Mri, InformationDialog)
  261. X
  262. X*md.wcConstructor:    XmCreateCascadeButton
  263. X*md.labelString:    Create MessageDialog
  264. X*md.activateCallback:    WcCreateChildrenCB( Mri, MessageDialog)
  265. X
  266. X*pd.wcConstructor:    XmCreateCascadeButton
  267. X*pd.labelString:    Create PromptDialog
  268. X*pd.activateCallback:    WcCreateChildrenCB( Mri, PromptDialog)
  269. X
  270. X*qd.wcConstructor:    XmCreateCascadeButton
  271. X*qd.labelString:    Create QuestionDialog
  272. X*qd.activateCallback:    WcCreateChildrenCB( Mri, QuestionDialog)
  273. X
  274. X*sd.wcConstructor:    XmCreateCascadeButton
  275. X*sd.labelString:    Create SelectionDialog
  276. X*sd.activateCallback:    WcCreateChildrenCB( Mri, SelectionDialog)
  277. X
  278. X*warn.wcConstructor:    XmCreateCascadeButton
  279. X*warn.labelString:    Create WarningDialog
  280. X*warn.activateCallback:    WcCreateChildrenCB( Mri, WarningDialog)
  281. X
  282. X! Here is something different: On the first push, the working dialog 
  283. X! is created.  On subsequent pushes, it is just managed.
  284. X!
  285. X*work.wcConstructor:    XmCreateCascadeButton
  286. X*work.labelString:    Create WorkingDialog
  287. X*work.activateCallback:    WcCreateChildrenCB( Mri, WorkingDialog), \
  288. X    WcSetValueCB( *work.labelString: Manage WorkingDialog),  \
  289. X    WcSetValueCB( *work.activateCallback: \
  290. X                WcManageCB( *WorkingDialog.WorkingDialog) )
  291. X
  292. X*dialogs.wcConstructor:    XmCreateCascadeButton
  293. X*dialogs.subMenuId:    *dialogMenu
  294. X*dialogs.labelString:    Dialogs
  295. +FUNKY+STUFF+
  296. echo '-rw-r--r--  1 david        9874 Aug  6 09:36 M5.Dialogs    (as sent)'
  297. chmod u=rw,g=r,o=r M5.Dialogs
  298. ls -l M5.Dialogs
  299. echo x - M6.ListRowCol
  300. sed 's/^X//' > M6.ListRowCol <<'+FUNKY+STUFF+'
  301. X  Scrolled Lists
  302. X  --------------
  303. X
  304. X  This resource file presents the way one must deal with scrolled lists
  305. X  inside of XmRowColumn widgets.  Its actually pretty easy now.
  306. X
  307. X  Note, however that XmRowColumn does not do such a good job of
  308. X  resizing the scrolled window widget.
  309. X
  310. X  ----------------------------------------------------------------------
  311. X
  312. X#*wcTrace:    True
  313. X
  314. XMri.wcChildren:        rc
  315. XMri.title:        M6.ListRowCol
  316. X
  317. X*rc.wcConstructor:    XmCreateRowColumn
  318. X*rc.wcChildren:        quit, slist
  319. X*rc.entryAlignment:    ALIGNMENT_CENTER
  320. X
  321. X*quit.wcConstructor:    XmCreatePushButton
  322. X*quit.activateCallback:    WcExitCB
  323. X*quit.labelString:    Push To Exit
  324. X
  325. X*slist.wcConstructor:        XmCreateScrolledList
  326. X*slist.items:            This demo uses the XmRowColumn,\
  327. X                widget.  Try resizing the window.,\
  328. X                You will see the list gets wider\\,,\
  329. X                but not longer.,\
  330. X                foo,bar, baz is a nice item,\
  331. X                zorp,the,quick,brown,fox,\
  332. X                jumped,over,the, lazy, dog, and, blew,\
  333. X                the, candle, out. This\\, and that, and,\
  334. X                more,to,come. That's all.
  335. X*slist.itemCount:        26
  336. X*slist.visibleItemCount:    11
  337. X*slist.selectionPolicy:        EXTENDED_SELECT
  338. +FUNKY+STUFF+
  339. echo '-rw-r--r--  1 david        1097 Aug  6 09:36 M6.ListRowCol    (as sent)'
  340. chmod u=rw,g=r,o=r M6.ListRowCol
  341. ls -l M6.ListRowCol
  342. echo x - M6.ListTable
  343. sed 's/^X//' > M6.ListTable <<'+FUNKY+STUFF+'
  344. X  Scrolled Lists in Tables
  345. X  ------------------------
  346. X
  347. X  This resource file presents the way one must deal with scrolled lists
  348. X  which are managed by Table widgets.  In the layout resource for the
  349. X  Table widget, we must name the scrolled window, NOT the list:
  350. X
  351. X        *table.layout:          quit    0 0 1 1 hH ;\
  352. X                                slistSW 0 1 1 1
  353. X
  354. X  If we simply said "slist" instead of "slistSW" then nothing
  355. X  appears, because slist is not one of the children of table.
  356. X  Rather, slistSW is the child of table, and slist is the
  357. X  child of slistSW.
  358. X
  359. X  As an aside, the layout options hH on the quit button allow
  360. X  resizing to work nicely.  Compare the behavior of the Table
  361. X  with the resize behavior of XmRowColumn.  I think you will
  362. X  prefer Table over XmRowColumn.
  363. X
  364. X  ----------------------------------------------------------------------
  365. X
  366. X#*wcTrace:    True
  367. X
  368. XMri.wcChildren:        table
  369. XMri.title:        M6.ListTable
  370. X
  371. X*table.wcClassName:    Table
  372. X*table.wcChildren:    quit, slist
  373. X*table.layout:        quit    0 0 1 1 hH ;\
  374. X            slistSW 0 1 1 1
  375. X
  376. X*quit.wcConstructor:    XmCreatePushButton
  377. X*quit.activateCallback:    WcExitCB
  378. X*quit.labelString:    Push To Exit
  379. X
  380. X*slist.wcConstructor:        XmCreateScrolledList
  381. X*slist.items:            This demo uses the Table widget.,\
  382. X                Try resizing the window.,\
  383. X                You will see the list gets wider\\,,\
  384. X                AND longer - unlike with XmRowColumn.,\
  385. X                foo,bar, baz is a nice item,\
  386. X                zorp,the,quick,brown,fox,\
  387. X                jumped,over,the, lazy, dog, and, blew,\
  388. X                the, candle, out. This\\, and that, and,\
  389. X                more,to,come. That's all.
  390. X*slist.itemCount:        26
  391. X*slist.visibleItemCount:    11
  392. X*slist.selectionPolicy:        EXTENDED_SELECT
  393. +FUNKY+STUFF+
  394. echo '-rw-r--r--  1 david        1636 Aug  6 09:36 M6.ListTable    (as sent)'
  395. chmod u=rw,g=r,o=r M6.ListTable
  396. ls -l M6.ListTable
  397. echo x - M7.Periodic
  398. sed 's/^X//' > M7.Periodic <<'+FUNKY+STUFF+'
  399. X! This example is taken from the periodic demo which came with Motif 1.0
  400. X! and was developed by Michael K. Yee at OSF.  To quote the original
  401. X! README:
  402. X! 
  403. X!     Periodic is a demo of the displayable widgets in 
  404. X!    Motif.  Periodic presents many Motif widgets for 
  405. X!    your visual and sensual enjoyment.
  406. X!
  407. X
  408. XMri.wcChildren:    main
  409. XMri.title:    Mri using M7.Periodic
  410. X
  411. X*background:    Turquoise
  412. X*fontList:    -adobe-new century schoolbook-medium-r-normal--10-*
  413. X
  414. X*main.wcConstructor:        XmCreateMainWindow
  415. X*main.wcChildren:        menuBar, table
  416. X
  417. X# If you want scrollbars, uncomment this line
  418. X#*main.scrollingPolicy:    AUTOMATIC
  419. X
  420. X##################################################################
  421. X# Minimal menu bar
  422. X##################################################################
  423. X
  424. X*menuBar.wcConstructor:    XmCreateMenuBar
  425. X*menuBar.wcCallback:    WcSetValueCB(*main.menuBar: this)
  426. X*menuBar.wcChildren:    fileMenu, File, Edit, Help
  427. X*menuBar*fontList:    -b&h-lucida-medium-i-normal-sans-12-120-*
  428. X
  429. X*fileMenu.wcConstructor:    XmCreatePulldownMenu
  430. X*fileMenu.wcChildren:        Quit
  431. X*fileMenu.wcManaged:        false
  432. X
  433. X*Quit.wcConstructor:    XmCreateCascadeButton
  434. X*Quit.activateCallback:    WcExitCB
  435. X
  436. X*File.wcConstructor:    XmCreateCascadeButton
  437. X*File.subMenuId:    *fileMenu
  438. X
  439. X*Edit.wcConstructor:    XmCreateCascadeButton
  440. X
  441. X*Help.wcConstructor:    XmCreateCascadeButton
  442. X*Help.wcCallback:    WcSetValueCB( ^.menuHelpWidget: this )
  443. X
  444. X##################################################################
  445. X# Table Widget for Periodic Table
  446. X##################################################################
  447. X
  448. X*table.wcClassName:    Table
  449. X*table.wcCallback:    WcSetValueCB(*main.workWindow: this)
  450. X*table.wcChildren:    title, \
  451. X            02, 03, 04, 05, 06, 62, \
  452. X            17, 27, 47, 57, \
  453. X            Ia, 1, 2, 3, 4, 5, \
  454. X            IIa, 6, 7, 8, 9, \
  455. X            IIIb, 10, \
  456. X            IVa, 11, 12, 16, \
  457. X            Va, 13, 14, 15, dialogs, 19
  458. X#                name    c r cs rs opt    
  459. X*table.layout:            title    2 1  4  1    ;\
  460. X    Ia 1 1;\
  461. X02 0 2;    1  1 2;    IIa 2 2;                Va 5 2;    62 6 2;\
  462. X03 0 3;    2  1 3;    6   2 3; IIIb 3 3;    IVa 4 3;    13 5 3;\
  463. X04 0 4;    3  1 4;    7   2 4; 10 3 4 1 3;    11  4 4;    14 5 4;\
  464. X05 0 5;    4  1 5;    8   2 5;        12  4 5;    15 5 5;\
  465. X06 0 6;    5  1 6;    9   2 6;        16  4 6 2 1;\
  466. X    17 1 7;    27  2 7;        47  4 7;    57 5 7;\
  467. X    dialogs 1 8 5 1;\
  468. X    19 1 9;
  469. X
  470. X*title.wcConstructor:    XmCreateLabel
  471. X*title.labelString:    The Periodic Table Of Motif Widgets
  472. X*title.fontList:    -b&h-lucida-bold-i-normal-sans-34-240-*
  473. X
  474. X# The following are simply for spacing.  Composite is
  475. X# perhaps the simplest Motif widget which can be created.
  476. X*table.Composite.Width:        120
  477. X*table.Composite.Height:    120
  478. X*table.Composite.borderWidth:    0
  479. X*table.02.wcClassName:    Composite
  480. X*table.02.width:        20
  481. X*table.03.wcClassName:    Composite
  482. X*table.03.width:        20
  483. X*table.04.wcClassName:    Composite
  484. X*table.04.width:        20
  485. X*table.05.wcClassName:    Composite
  486. X*table.05.width:        20
  487. X*table.06.wcClassName:    Composite
  488. X*table.06.width:        20
  489. X*table.62.wcClassName:    Composite
  490. X*table.62.width:        20
  491. X*table.17.wcClassName:    Composite
  492. X*table.17.height:        20
  493. X*table.27.wcClassName:    Composite
  494. X*table.27.height:        20
  495. X*table.47.wcClassName:    Composite
  496. X*table.47.height:        20
  497. X*table.57.wcClassName:    Composite
  498. X*table.57.height:        20
  499. X*table.19.wcClassName:    Composite
  500. X*table.19.height:        20
  501. X
  502. X# Labels above the columns:  I use the same "display box"
  503. X# as for widget types, but I just null out the label strings
  504. X# and change the type fo the bottom widget to label.  
  505. X
  506. X*filler.wcClassName:    XmLabel
  507. X*filler.labelString:
  508. X
  509. X*table.Ia.wcClassName:        Table
  510. X*table.Ia.wcChildren:        filler, Ia
  511. X*table.Ia.layout:         filler 0 0; Ia 0 1 hH;
  512. X*table.Ia.borderWidth:        0
  513. X*table.Ia.Ia.wcClassName:    XmLabel
  514. X
  515. X*table.IIa.wcClassName:        Table
  516. X*table.IIa.wcChildren:        filler, IIa
  517. X*table.IIa.layout:         filler 0 0; IIa 0 1 hH;
  518. X*table.IIa.borderWidth:        0
  519. X*table.IIa.IIa.wcClassName:    XmLabel
  520. X
  521. X*table.IIIb.wcClassName:    Table
  522. X*table.IIIb.wcChildren:        filler, IIIb
  523. X*table.IIIb.layout:         filler 0 0; IIIb 0 1 hH;
  524. X*table.IIIb.borderWidth:    0
  525. X*table.IIIb.IIIb.wcClassName:    XmLabel
  526. X
  527. X*table.IVa.wcClassName:        Table
  528. X*table.IVa.wcChildren:        filler, IVa
  529. X*table.IVa.layout:         filler 0 0; IVa 0 1 hH;
  530. X*table.IVa.borderWidth:        0
  531. X*table.IVa.IVa.wcClassName:    XmLabel
  532. X
  533. X*table.Va.wcClassName:        Table
  534. X*table.Va.wcChildren:        filler, Va
  535. X*table.Va.layout:         filler 0 0; Va 0 1 hH;
  536. X*table.Va.borderWidth:        0
  537. X*table.Va.Va.wcClassName:    XmLabel
  538. X
  539. X# These are the widget display boxes:
  540. X
  541. X*table*Table.wcChildren:    an, w, n
  542. X*table*Table.Layout:        an 1 0 1 1 hH; w 0 1 2 1 ; n 0 2 2 1 hH;
  543. X*table*Table.rowSpacing:    10
  544. X*table*Table.borderWidth:    1
  545. X*table.Table.an.wcClassName:    XmLabel
  546. X*table.Table.an.alignment:    ALIGNMENT_END
  547. X*table*Table.n.wcClassName:    XmPushButton
  548. X
  549. X*1.wcClassName:        Table
  550. X*1.wcChildren:        an, w, n
  551. X*1.an.labelString:    1
  552. X*1.w.wcClassName:    XmSeparator
  553. X*1.n.labelString:    XmSeparator
  554. X
  555. X*2.wcClassName:        Table
  556. X*2.wcChildren:        an, w, n
  557. X*2.an.labelString:    2
  558. X*2.w.wcClassName:    XmArrowButton
  559. X*2.n.labelString:    XmArrowButton
  560. X
  561. X*3.wcClassName:        Table
  562. X*3.wcChildren:        an, w, n
  563. X*3.an.labelString:    3
  564. X*3.w.wcClassName:    XmPushButton
  565. X*3.w.labelString:    Format Disk
  566. X*3.n.labelString:    XmPushButton
  567. X
  568. X*4.wcClassName:        Table
  569. X*4.wcChildren:        an, w, n
  570. X*4.an.labelString:    4
  571. X*4.w.wcClassName:    XmToggleButton
  572. X*4.w.labelString:    Lights
  573. X*4.n.labelString:    XmToggleButton
  574. X
  575. X*5.wcClassName:        Table
  576. X*5.wcChildren:        an, w, n
  577. X*5.an.labelString:    5
  578. X*5.w.wcClassName:    XmLabel
  579. X*5.w.labelString:    Don't Panic
  580. X*5.n.labelString:    XmLabel
  581. X
  582. X*6.wcClassName:        Table
  583. X*6.wcChildren:        an, colorOptions, w, n
  584. X*6.an.labelString:    6
  585. X*6.colorOptions.wcConstructor:    XmCreatePulldownMenu
  586. X*6.colorOptions.wcManaged:    False
  587. X*6.colorOptions.wcChildren:    red, orange, yellow, green, blue, purple
  588. X*6*colorOptions.red.wcClassName:    XmPushButton
  589. X*6*colorOptions.orange.wcClassName:    XmPushButton
  590. X*6*colorOptions.yellow.wcClassName:    XmPushButton
  591. X*6*colorOptions.green.wcClassName:    XmPushButton
  592. X*6*colorOptions.blue.wcClassName:    XmPushButton
  593. X*6*colorOptions.purple.wcClassName:    XmPushButton
  594. X# ^    Note the asterisk needed here!!  colorOptions is actually
  595. X#    a child of a menu shell created by XmCreatePulldownMenu.
  596. X*6.w.wcConstructor:    XmCreateOptionMenu
  597. X*6.w.labelString:    color
  598. X*6.w.subMenuId:        *6*colorOptions
  599. X*6.n.labelString:    XmOptionMenu
  600. X
  601. X*7.wcClassName:        Table
  602. X*7.wcChildren:        an, w, n
  603. X*7.an.labelString:    7
  604. X*7.w.wcClassName:        XmScale
  605. X*7.w.wcChildren:        min, |, max
  606. X*7.w.decimalPoints:        1
  607. X*7.w.maximum:            50
  608. X*7.w.orientation:        HORIZONTAL
  609. X*7.w.processingDirection:    MAX_ON_RIGHT
  610. X*7.w.showValue:            True
  611. X*7.w.titleString:        Warp Factor
  612. X*7.w.min.wcClassName:        XmLabel
  613. X*7.w.min.labelString:        0
  614. X*7.w.|.wcClassName:        XmLabel
  615. X*7.w.max.wcClassName:        XmLabel
  616. X*7.w.max.labelString:        5
  617. X*7.n.labelString:    XmScale
  618. X
  619. X*8.wcClassName:        Table
  620. X*8.wcChildren:        an, w, n
  621. X*8.an.labelString:    8
  622. X*8.w.wcConstructor:    XmCreateRadioBox
  623. X*8.w.wcChildren:    WFNX, WCRB, WHKY
  624. X*8.w.WFNX.wcClassName:    XmToggleButtonGadget
  625. X*8.w.WCRB.wcClassName:    XmToggleButtonGadget
  626. X*8.w.WHKY.wcClassName:    XmToggleButtonGadget
  627. X*8.n.labelString:    XmRadioBox
  628. X
  629. X*9.wcClassName:        Table
  630. X*9.wcChildren:        an, w, n
  631. X*9.an.labelString:    9
  632. X*9.w.wcClassName:    XmText
  633. X*9.w.value:        Hello World
  634. X*9.n.labelString:    XmText
  635. X
  636. X*10.wcClassName:    Table
  637. X*10.wcChildren:        an, w, n
  638. X*10.an.labelString:    10
  639. X*10.w.wcClassName:    XmFileSelectionBox
  640. X*10.w.dirMask:        *.c
  641. X*10.n.labelString:    XmFileSelectionBox
  642. X
  643. X*11.wcClassName:    Table
  644. X*11.wcChildren:        an, w, n
  645. X*table.11.rowSpacing:    30
  646. X*11.an.labelString:    11
  647. X*11.w.wcClassName:    XmScrollBar
  648. X*11.w.orientation:    HORIZONTAL
  649. X*11.w.height:        20
  650. X*11.n.labelString:    XmScrollBar
  651. X
  652. X# Remember that XmCreateScrolledList creates an intermediate
  653. X# parent named wSW, and that is the widget the table lays out.
  654. X#
  655. X*12.wcClassName:    Table
  656. X*12.wcChildren:        an, w, n
  657. X*table.12.layout:    an 1 0 1 1 hH; wSW 0 1 2 1 ; n 0 2 2 1 hH;
  658. X*12.an.labelString:    12
  659. X*12.w.wcConstructor:    XmCreateScrolledList
  660. X*12*w.items:        Foobar, Mumble, Glorp, Reggae, Rock, and, Roll
  661. X*12*w.itemCount:    7
  662. X*12*w.visibleItemCount:    3
  663. X*12*w.listMarginWidth:    3
  664. X*12.n.labelString:    XmScrolledList
  665. X
  666. X# Note that the XmCascadeButton which pops-up the demoMenu
  667. X# MUST be a child of an XmRowColumn.  I used XmCreateMenuBar
  668. X# to create the row column, because that it usually what
  669. X# you will use when you've got pull-down menus.  If the
  670. X# cascade button is not a child of an XmRowColumn, you
  671. X# will get a core dump in Motif.  Sorry, I can't fix that here.
  672. X#
  673. X*13.wcClassName:    Table
  674. X*13.wcChildren:        an, w, n
  675. X*13.an.labelString:    13
  676. X*13.n.labelString:    XmPulldownMenu
  677. X*13.w.wcConstructor:    XmCreateMenuBar
  678. X*13.w.wcChildren:    demoMenu, menuButton
  679. X*13.w.menuButton.wcClassName:    XmCascadeButton
  680. X*13.w.menuButton.labelString:    Press For Menu
  681. X*13.w.menuButton.subMenuId:    *13.w*demoMenu
  682. X*13.w.demoMenu.wcConstructor:    XmCreatePulldownMenu
  683. X*13.w.demoMenu.wcManaged:    False
  684. X*13.w.demoMenu.wcChildren:    title, Black, Blue, Coral, LimeGreen, \
  685. X                Cyan, Goldenrod, Magenta, Pink
  686. X*13.w*demoMenu.title.wcConstructor:    XmCreateLabel
  687. X*13.w*demoMenu.title.labelString:    Choose Color of XmDrawingArea:
  688. X*13.w*demoMenu.title.fontList:    -b&h-lucida-bold-i-normal-sans-12-120-*
  689. X*13.w*demoMenu*FontList:    -b&h-lucida-medium-r-normal-sans-12-120-*
  690. X#    ^    Note the asterisk needed here!!  demoMenu is actually
  691. X#    a child of a menu shell created by XmCreatePulldownMenu.
  692. X
  693. X
  694. X*13*Black.wcClassName:        XmCascadeButton
  695. X*13*Blue.wcClassName:        XmCascadeButton
  696. X*13*Coral.wcClassName:        XmCascadeButton
  697. X*13*LimeGreen.wcClassName:    XmCascadeButton
  698. X*13*Cyan.wcClassName:        XmCascadeButton
  699. X*13*Goldenrod.wcClassName:    XmCascadeButton
  700. X*13*Magenta.wcClassName:    XmCascadeButton
  701. X*13*Pink.wcClassName:        XmCascadeButton
  702. X
  703. X*13*Black.activateCallback:    WcSetValueCB(*14.w.background: Black)
  704. X*13*Blue.activateCallback:    WcSetValueCB(*14.w.background: Blue)
  705. X*13*Coral.activateCallback:    WcSetValueCB(*14.w.background: Coral)
  706. X*13*LimeGreen.activateCallback:    WcSetValueCB(*14.w.background: LimeGreen)
  707. X*13*Cyan.activateCallback:    WcSetValueCB(*14.w.background: Cyan)
  708. X*13*Goldenrod.activateCallback:    WcSetValueCB(*14.w.background: Goldenrod)
  709. X*13*Magenta.activateCallback:    WcSetValueCB(*14.w.background: Magenta)
  710. X*13*Pink.activateCallback:    WcSetValueCB(*14.w.background: Pink)
  711. X
  712. X*14.wcClassName:    Table
  713. X*14.wcChildren:        an, w, n
  714. X*14.an.labelString:    14
  715. X*14.w.wcClassName:    XmDrawingArea
  716. X*14.w.background:    RoyalBlue
  717. X*14.n.labelString:    XmDrawingArea
  718. X
  719. X*15.wcClassName:    Table
  720. X*15.wcChildren:        an, w, n
  721. X*15.an.labelString:    15
  722. X*15.w.wcClassName:    XmDrawnButton
  723. X*15.n.labelString:    XmDrawnButton
  724. X
  725. X*16.wcClassName:    Table
  726. X*16.wcChildren:        an, w, n
  727. X*16.an.labelString:    16
  728. X*16.w.wcClassName:    XmPanedWindow
  729. X*16.w.wcChildren:    text1, text2
  730. X*16.w.text1.wcClassName:    XmText
  731. X*16.w.text1.value:        Motif Resource Interpreter
  732. X*16.w.text2.wcClassName:    XmText
  733. X*16.w.text2.value:        Version 1.04
  734. X*16.n.labelString:    XmPanedWindow
  735. X
  736. X*dialogs.wcClassName:    Table
  737. X*dialogs.wcChildren:    error, info, question, warn, work
  738. X*table.dialogs.borderWidth: 0
  739. X*table.dialogs.layout:    error 0 0; info 1 0; question 2 0; warn 3 0; work 4 0;
  740. X*table.dialogs.columnSpacing:    10
  741. X
  742. X*dialogs.XmMessageBox.borderWidth: 1
  743. X
  744. X*error.wcClassName:    XmMessageBox
  745. X*error.dialogType:    DIALOG_ERROR
  746. X*error.messageString:    Error Dialog
  747. X
  748. X*info.wcClassName:    XmMessageBox
  749. X*info.dialogType:    DIALOG_INFORMATION
  750. X*info.messageString:    Information Dialog
  751. X
  752. X*message.wcClassName:        XmMessageBox
  753. X*message.dialogType:        DIALOG_MESSAGE
  754. X*message.messageString:        Message Dialog
  755. X
  756. X*question.wcClassName:        XmMessageBox
  757. X*question.dialogType:        DIALOG_QUESTION
  758. X*question.messageString:    Question Dialog
  759. X
  760. X*warn.wcClassName:        XmMessageBox
  761. X*warn.dialogType:        DIALOG_WARNING
  762. X*warn.messageString:        Warning Dialog
  763. X
  764. X*work.wcClassName:        XmMessageBox
  765. X*work.dialogType:        DIALOG_WORKING
  766. X*work.messageString:        Working Dialog
  767. +FUNKY+STUFF+
  768. echo '-rw-rw-r--  1 david       11427 Oct 12 16:49 M7.Periodic    (as sent)'
  769. chmod u=rw,g=rw,o=r M7.Periodic
  770. ls -l M7.Periodic
  771. echo x - M8.Multi
  772. sed 's/^X//' > M8.Multi <<'+FUNKY+STUFF+'
  773. X  Multiple Resource Files
  774. X  -----------------------
  775. X
  776. X  This resource file explores the use multiple resource files which
  777. X  describe a single user interface.
  778. X
  779. X  Appearance Defaults
  780. X  -------------------
  781. X
  782. X  Below are application wide defaults for various widgets.  Note that
  783. X  we can set resource values for things which are not themselves described
  784. X  in this resource file.
  785. X
  786. X  N.B.:  If you change the colors from B&W, you should change the
  787. X  borderColor of the Table widget.  Someday, I will probably hack
  788. X  the Table widget to have Margin resources like XmRowColumn and
  789. X  then it won't be necessary
  790. X
  791. X  ----------------------------------------------------------------------
  792. X
  793. X*menuBar.shadowThickness:       3
  794. X*XmFrame.shadowThickness:       3
  795. X*XmText.shadowThickness:        3
  796. X*XmDrawingArea.shadowThickness: 3
  797. X*XmScrollBar.shadowThickness:   3
  798. X*XmFrame.shadowType:            SHADOW_OUT
  799. X*Table.borderWidth:             0
  800. X
  801. X*background:        Wheat
  802. X*Table.borderColor:    Wheat
  803. X
  804. X  ----------------------------------------------------------------------
  805. X
  806. X  Main Window
  807. X  -----------
  808. X
  809. X  Motif's MainWindow widget type supports one of the classic "looks"
  810. X  of a window application, and of the Motif Style Guide in particular.
  811. X
  812. X  ----------------------------------------------------------------------
  813. X
  814. XMri.wcChildren:        main, loadSelect, saveSelect
  815. XMri.title:        Mri using M8.Multi
  816. X
  817. X*main.wcConstructor:    XmCreateMainWindow
  818. X*main.wcChildren:    menuBar, commandWindow, msgWindow, vscroll
  819. X
  820. X  ----------------------------------------------------------------------
  821. X
  822. X  It is probably good practice to put all the resource file
  823. X  specifications in the top level (initial) resource file.  This makes it
  824. X  easier to find which resource files are used, and makes it easier to
  825. X  change them when required.  For example, I've got an application which
  826. X  requires adaptation for different spacecraft missions.  Some of the
  827. X  interface components stay the same, some change.  I can re-write the
  828. X  top level resource file, and just name different sub-resource files.
  829. X  None of the sub-resource files need to be changed.
  830. X
  831. X  ----------------------------------------------------------------------
  832. X
  833. XMri.loadSelect.wcResFile:    M8_Dialogs
  834. XMri.saveSelect.wcResFile:    M8_Dialogs
  835. X
  836. X*main.menuBar.wcResFile:    M8_MenuBar
  837. X*main.commandWindow.wcResFile:    M8_Comm
  838. X*main.msgWindow.wcResFile:    M8_Text
  839. X*main.vscroll.wcResFile:    M8_Text
  840. +FUNKY+STUFF+
  841. echo '-rw-r--r--  1 david        2378 Aug  6 09:36 M8.Multi    (as sent)'
  842. chmod u=rw,g=r,o=r M8.Multi
  843. ls -l M8.Multi
  844. echo x - M8_Comm
  845. sed 's/^X//' > M8_Comm <<'+FUNKY+STUFF+'
  846. X  ----------------------------------------------------------------------
  847. X
  848. X  The commandWindow is a Table widget with three stacked children.  The
  849. X  top child contains a description of the query to be performed.  The
  850. X  second child contains the submit controls including the time range to
  851. X  be queried.  The third child is used to actually specify the data
  852. X  types, data transformations, and the data sinks using a graphic
  853. X  representing the flow of data.
  854. X
  855. X  ----------------------------------------------------------------------
  856. X
  857. X#commandWindow*wcTrace:        True
  858. X
  859. X*commandWindow.wcClass:        tableWidgetClass
  860. X*commandWindow.wcCallback:    WcSetValueCB( *main.commandWindow: this )
  861. X*commandWindow.wcChildren:    descr, submitCtrl, panel
  862. X#                                   c r cs rs opts
  863. X*commandWindow.layout:    descr        0 0  1  1   hH ;\
  864. X            submitCtrl  0 1  1  1   hH ;\
  865. X            panel       0 2  1  1 
  866. X
  867. X*commandWindow.columnSpacing:    10
  868. X*commandWindow.rowSpacing:    10
  869. X*commandWindow.borderWidth:    10
  870. X
  871. X#
  872. X# Description
  873. X#
  874. X
  875. X*descr.wcConstructor:        XmCreateForm
  876. X*descr.wcChildren:        label, text
  877. X
  878. X*descr.label.wcConstructor:    XmCreateLabel
  879. X*descr.label.labelString:    Query Description
  880. X*descr.label.leftAttachment:    ATTACH_FORM
  881. X*descr.label.topAttachment:    ATTACH_FORM
  882. X
  883. X*descr.text.wcConstructor:    XmCreateText
  884. X*descr.text.topWidget:        *descr.label
  885. X*descr.text.topAttachment:    ATTACH_WIDGET
  886. X*descr.text.leftAttachment:    ATTACH_FORM
  887. X*descr.text.rightAttachment:    ATTACH_FORM
  888. X
  889. X  ----------------------------------------------------------------------
  890. X
  891. X  We describe the Submit Control and panel portions of the commandWindow 
  892. X  in separate files.
  893. X
  894. X  ----------------------------------------------------------------------
  895. X
  896. X*submitCtrl.wcResFile:    M8_Submit
  897. X*panel.wcResFile:    M8_Direct
  898. +FUNKY+STUFF+
  899. echo '-rw-r--r--  1 david        1742 Aug  6 09:36 M8_Comm    (as sent)'
  900. chmod u=rw,g=r,o=r M8_Comm
  901. ls -l M8_Comm
  902. echo x - M8_Dialogs
  903. sed 's/^X//' > M8_Dialogs <<'+FUNKY+STUFF+'
  904. X  ----------------------------------------------------------------------
  905. X
  906. X  Note that this file describes two separate widgets.  The loading
  907. X  function of Wc is smart enough to know that the file gets loaded
  908. X  exactly once.
  909. X
  910. X  ----------------------------------------------------------------------
  911. X
  912. X*loadSelect.wcTrace:    True
  913. X*saveSelect.wcTrace:    True
  914. X
  915. X*loadSelect.wcConstructor:    XmCreateFileSelectionDialog
  916. X*loadSelect.wcManaged:        False
  917. X*loadSelect.cancelCallback:    WcUnmanageCB(this)
  918. X*loadSelect.okCallback:        WcUnmanageCB(this)
  919. X*saveSelect.wcConstructor:    XmCreateFileSelectionDialog
  920. X*saveSelect.wcManaged:        False
  921. X*saveSelect.cancelCallback:    WcUnmanageCB(this)
  922. X*saveSelect.okCallback:        WcUnmanageCB(this)
  923. +FUNKY+STUFF+
  924. echo '-rw-r--r--  1 david         707 Aug  6 09:36 M8_Dialogs    (as sent)'
  925. chmod u=rw,g=r,o=r M8_Dialogs
  926. ls -l M8_Dialogs
  927. echo x - M8_Direct
  928. sed 's/^X//' > M8_Direct <<'+FUNKY+STUFF+'
  929. X  ----------------------------------------------------------------------
  930. X
  931. X  This section provides the resource specifications for the direct
  932. X  manipulation panel which allows a user to specify a set of data
  933. X  types, data transforms, and data sinks, along with the data flows
  934. X  which connect each of the foregoing.
  935. X
  936. X  Along the left side are three row columns, left to right.  The leftmost
  937. X  row column contains buttons representing the different data types which
  938. X  can be queried.  This will certainly change per mission, and probably
  939. X  per user.  
  940. X
  941. X  The second row column contains buttons representing the different
  942. X  transformations which may be applied to the data.  Several are basically
  943. X  mission independent, such as WSE filtering and DMD.  Others may be
  944. X  added on a per mission basis, and some details may be frequently
  945. X  specified on a per user basis.
  946. X
  947. X  The third row column contains buttons representing the different
  948. X  data sinks which are available.  These are probably never changed.
  949. X
  950. X  ----------------------------------------------------------------------
  951. X
  952. X*panel.wcConstructor:        XmCreateForm
  953. X*panel.wcChildren:        controlFrame, displaySW
  954. X
  955. X*controlFrame.wcConstructor:    XmCreateFrame
  956. X*controlFrame.wcChildren:    controlRC
  957. X*controlFrame.topAttachment:    ATTACH_FORM
  958. X*controlFrame.leftAttachment:    ATTACH_FORM
  959. X#controlFrame.bottomAttachment:    ATTACH_FORM
  960. X
  961. X*controlRC.wcConstructor:    XmCreateRowColumn
  962. X*controlRC.orientation:        HORIZONTAL
  963. X#controlRC.packing:        PACK_COLUMN
  964. X*controlRC.wcChildren:        dataRC, transRC, sinkRC
  965. X
  966. X#
  967. X# Data Instantiation Buttons
  968. X#
  969. X
  970. X*dataRC.wcConstructor:        XmCreateRowColumn
  971. X*dataRC.wcChildren:        d1,d2,d3,d4,d5,d6,d7
  972. X
  973. X*dataRC.d1.wcConstructor:    XmCreatePushButtonGadget
  974. X*dataRC.d2.wcConstructor:    XmCreatePushButtonGadget
  975. X*dataRC.d3.wcConstructor:    XmCreatePushButtonGadget
  976. X*dataRC.d4.wcConstructor:    XmCreatePushButtonGadget
  977. X*dataRC.d5.wcConstructor:    XmCreatePushButtonGadget
  978. X*dataRC.d6.wcConstructor:    XmCreatePushButtonGadget
  979. X*dataRC.d7.wcConstructor:    XmCreatePushButtonGadget
  980. X
  981. X*dataRC.d1.labelString:        CR5A
  982. X*dataRC.d2.labelString:        CR7A
  983. X*dataRC.d3.labelString:        GS4B
  984. X*dataRC.d4.labelString:        GS08
  985. X*dataRC.d5.labelString:        GS10
  986. X*dataRC.d6.labelString:        GS10A
  987. X*dataRC.d7.labelString:        UV5A
  988. X
  989. X#
  990. X# Trans Instantiation Buttons
  991. X#
  992. X
  993. X*transRC.wcConstructor:        XmCreateRowColumn
  994. X*transRC.wcChildren:        t1,t2,t3,t4,t5,t6, t7
  995. X
  996. X*transRC.t1.wcConstructor:    XmCreatePushButtonGadget
  997. X*transRC.t2.wcConstructor:    XmCreatePushButtonGadget
  998. X*transRC.t3.wcConstructor:    XmCreatePushButtonGadget
  999. X*transRC.t4.wcConstructor:    XmCreatePushButtonGadget
  1000. X*transRC.t5.wcConstructor:    XmCreatePushButtonGadget
  1001. X*transRC.t6.wcConstructor:    XmCreatePushButtonGadget
  1002. X*transRC.t7.wcConstructor:    XmCreatePushButtonGadget
  1003. X
  1004. X*transRC.t1.labelString:    Channelize
  1005. X*transRC.t2.labelString:    Generate ECDRs
  1006. X*transRC.t3.labelString:    Filter SFDUs
  1007. X*transRC.t4.labelString:    Generate IDFs
  1008. X*transRC.t5.labelString:    Display on DMD
  1009. X*transRC.t6.labelString:    Template
  1010. X*transRC.t7.labelString:    SFDU Browser
  1011. X
  1012. X#
  1013. X# Sink Instantiation Buttons
  1014. X#
  1015. X
  1016. X*sinkRC.wcConstructor:        XmCreateRowColumn
  1017. X*sinkRC.wcChildren:        s1,s2,s3,s4,s5,s6,s7
  1018. X
  1019. X*sinkRC.s1.wcConstructor:    XmCreatePushButtonGadget
  1020. X*sinkRC.s2.wcConstructor:    XmCreatePushButtonGadget
  1021. X*sinkRC.s3.wcConstructor:    XmCreatePushButtonGadget
  1022. X*sinkRC.s4.wcConstructor:    XmCreatePushButtonGadget
  1023. X*sinkRC.s5.wcConstructor:    XmCreatePushButtonGadget
  1024. X*sinkRC.s6.wcConstructor:    XmCreatePushButtonGadget
  1025. X*sinkRC.s7.wcConstructor:    XmCreatePushButtonGadget
  1026. X
  1027. X*sinkRC.s1.labelString:        UNIX stdout
  1028. X*sinkRC.s2.labelString:        UNIX file
  1029. X*sinkRC.s3.labelString:        UNIX pipe
  1030. X*sinkRC.s4.labelString:        CDA spooler
  1031. X*sinkRC.s5.labelString:        DTS virtual circuit
  1032. X*sinkRC.s6.labelString:        DTS Broadcast
  1033. X*sinkRC.s7.labelString:        TCP/IP socket
  1034. X
  1035. X#
  1036. X# Scrolled Data Flow `Drawing' Area
  1037. X#
  1038. X
  1039. X*displaySW.wcConstructor:        XmCreateScrolledWindow
  1040. X*displaySW.scrollingPolicy:        AUTOMATIC
  1041. X*displaySW.scrollBarDisplayPolicy:    AS_NEEDED
  1042. X*displaySW.wcChildren:            drawing
  1043. X*displaySW.topAttachment:        ATTACH_FORM
  1044. X*displaySW.leftAttachment:        ATTACH_WIDGET
  1045. X*displaySW.leftWidget:            *controlFrame
  1046. X*displaySW.leftOffset:            10
  1047. X*displaySW.bottomAttachment:        ATTACH_FORM
  1048. X*displaySW.rightAttachment:        ATTACH_FORM
  1049. X
  1050. X*drawing.wcConstructor:        XmCreateDrawingArea
  1051. X*drawing.width:            700
  1052. X*drawing.height:        700
  1053. X*drawing.wcCallback:        WcSetValueCB(*displaySW.workWindow: this )
  1054. +FUNKY+STUFF+
  1055. echo '-rw-r--r--  1 david        4306 Aug  6 09:36 M8_Direct    (as sent)'
  1056. chmod u=rw,g=r,o=r M8_Direct
  1057. ls -l M8_Direct
  1058. echo x - M8_MenuBar
  1059. sed 's/^X//' > M8_MenuBar <<'+FUNKY+STUFF+'
  1060. X  Menu Bar
  1061. X  --------
  1062. X
  1063. X  Below are the resources for the menuBar and all its children.  This
  1064. X  menuBar is a child of a Motif MainWindow, and so must register itself
  1065. X  with the MainWindow (named *main).
  1066. X  
  1067. X  Referencing Widgets In Other Files
  1068. X  ----------------------------------
  1069. X
  1070. X  The buttons *load and *saveAs cause dialog widgets to be managed.
  1071. X  These dialog widgets are defined in a separate file.  Since the
  1072. X  callbacks will not be invoked until all the widgets are created,
  1073. X  including the dialog widgets, the widgets will exist then, even if they
  1074. X  are not yet created when the buttons are created.
  1075. X
  1076. X  ----------------------------------------------------------------------
  1077. X
  1078. X#menuBar*wcTrace:    True
  1079. X
  1080. X*menuBar.wcConstructor:    XmCreateMenuBar
  1081. X*menuBar.wcChildren:    file, fileMenu, viewMenu, view, helpMenu, help
  1082. X*menuBar.wcCallback:    WcSetValueCB( *main.menuBar: this )
  1083. X
  1084. X*file.wcConstructor:    XmCreateCascadeButton
  1085. X*file.labelString:    File
  1086. X*file.mnemonic:        F
  1087. X
  1088. X*fileMenu.wcConstructor: XmCreatePulldownMenu
  1089. X*fileMenu.wcManaged:     False
  1090. X*fileMenu.wcCallback:     WcSetValueCB(*file.subMenuId: this)
  1091. X*fileMenu.wcChildren:    load, sep, save, saveAs, sep, quit
  1092. X
  1093. X*sep.wcConstructor:    XmCreateSeparator
  1094. X
  1095. X*load.wcConstructor:    XmCreateCascadeButton
  1096. X*load.labelString:    Load ...
  1097. X*load.mnemonic:        L
  1098. X*load.activateCallback:    WcManageCB( *loadSelect.loadSelect )
  1099. X
  1100. X*save.wcConstructor:    XmCreateCascadeButton
  1101. X*save.labelString:    Save
  1102. X*save.mnemonic:        S
  1103. X
  1104. X*saveAs.wcConstructor:        XmCreateCascadeButton
  1105. X*saveAs.labelString:        Save As ...
  1106. X*saveAs.mnemonic:        A
  1107. X*saveAs.activateCallback:    WcManageCB(*saveSelect.saveSelect)
  1108. X
  1109. X*quit.wcConstructor:    XmCreateCascadeButton
  1110. X*quit.labelString:    Quit
  1111. X*quit.mnemonic:        Q
  1112. X*quit.activateCallback:    WcExitCB
  1113. X
  1114. X*viewMenu.wcConstructor: XmCreatePulldownMenu
  1115. X*viewMenu.wcManaged:     False
  1116. X*viewMenu.wcChildren:    reset, sep, msgGone, msgRestore
  1117. X
  1118. X*viewMenu.reset.wcConstructor:        XmCreateCascadeButton
  1119. X*viewMenu.reset.labelString:        Reset All Query Parameters
  1120. X
  1121. X*viewMenu.msgGone.wcConstructor:    XmCreateCascadeButton
  1122. X*viewMenu.msgGone.labelString:        Remove Message Window
  1123. X*viewMenu.msgGone.activateCallback:    WcUnmanageCB( *main.msgWindow ),\
  1124. X                    WcSetSensitiveCB( *msgRestore ), \
  1125. X                    WcSetInsensitiveCB ( this )
  1126. X
  1127. X*viewMenu.msgRestore.wcConstructor:    XmCreateCascadeButton
  1128. X*viewMenu.msgRestore.labelString:    Display Message Window
  1129. X*viewMenu.msgRestore.sensitive:        False
  1130. X*viewMenu.msgRestore.activateCallback:    WcManageCB( *main.msgWindow ),    \
  1131. X                    WcSetSensitiveCB( *msgGone ),    \
  1132. X                    WcSetInsensitiveCB( this )
  1133. X
  1134. X*view.wcConstructor:    XmCreateCascadeButton
  1135. X*view.subMenuId:    *viewMenu
  1136. X*view.labelString:    View
  1137. X*view.mnemonic:        V
  1138. X
  1139. X*helpMenu.wcConstructor: XmCreatePulldownMenu
  1140. X*helpMenu.wcManaged:     False
  1141. X*helpMenu.wcChildren:    mbHelp, cpHelp, daHelp, tHelp
  1142. X
  1143. X*helpMenu.mbHelp.wcConstructor:    XmCreateCascadeButton
  1144. X*helpMenu.mbHelp.labelString:    on Menu Bar
  1145. X*helpMenu.mbHelp.mnemonic:    M
  1146. X
  1147. X*helpMenu.cpHelp.wcConstructor:    XmCreateCascadeButton
  1148. X*helpMenu.cpHelp.labelString:    on Control Panel
  1149. X*helpMenu.cpHelp.mnemonic:    C
  1150. X
  1151. X*helpMenu.daHelp.wcConstructor:    XmCreateCascadeButton
  1152. X*helpMenu.daHelp.labelString:    on Drawing Area
  1153. X*helpMenu.daHelp.mnemonic:    D
  1154. X
  1155. X*helpMenu.tHelp.wcConstructor:    XmCreateCascadeButton
  1156. X*helpMenu.tHelp.labelString:    on Text Area
  1157. X*helpMenu.tHelp.mnemonic:    T
  1158. X
  1159. X*help.wcConstructor:    XmCreateCascadeButton
  1160. X*help.wcCallback:    WcSetValueCB(*menuBar.menuHelpWidget: this )
  1161. X*help.subMenuId:    *helpMenu
  1162. X*help.labelString:    Help
  1163. X*help.mnemonic:        H
  1164. +FUNKY+STUFF+
  1165. echo '-rw-r--r--  1 david        3438 Aug  6 09:36 M8_MenuBar    (as sent)'
  1166. chmod u=rw,g=r,o=r M8_MenuBar
  1167. ls -l M8_MenuBar
  1168. echo x - M8_Submit
  1169. sed 's/^X//' > M8_Submit <<'+FUNKY+STUFF+'
  1170. X
  1171. X  This section provides the resource specifications for the Submit
  1172. X  Control portion of the commandWindow.  A Table widget is used as the
  1173. X  manager widget because Row Column just can't do the job here, where we
  1174. X  mix types of widgets with differing heights in a row, AND types of
  1175. X  widgets with differing widths in a column.  XmRowColumn gets fascist in
  1176. X  such situations, and makes every cell the same width and height.  We
  1177. X  don't want that (wastes ALOT of real estate in this case).  So, we'll
  1178. X  try the Table Widget.
  1179. X
  1180. X  ----------------------------------------------------------------------
  1181. X
  1182. X#submitCtrl*wcTrace:        True
  1183. X
  1184. X*submitCtrl.wcConstructor:    XmCreateFrame
  1185. X*submitCtrl.wcChildren:        table
  1186. X*submitCtrl.marginWidth:    6
  1187. X*submitCtrl.marginHeight:    6
  1188. X
  1189. X*table.wcClassName:        Table
  1190. X*table.borderWidth:    0
  1191. X*table.wcChildren:    start, rtRadio, fromLabel, fromTime, fromType,   \
  1192. X            stop,           toLabel,   toTime,   toType
  1193. X#                  c r cs rs opts
  1194. X*table.layout:        start     0 0  1  1 wWhH ;\
  1195. X            stop      0 1  1  1   hH ;\
  1196. X            rtRadio   1 0  1  2 wW   ;\
  1197. X            fromLabel 2 0  1  1 wW   ;\
  1198. X            toLabel   2 1  1  1      ;\
  1199. X            fromTime  3 0  1  1      ;\
  1200. X            toTime    3 1  1  1      ;\
  1201. X            fromType  4 0  1  1 wW   ;\
  1202. X            toType    4 1  1  1
  1203. X
  1204. X*table.start.wcConstructor:    XmCreatePushButton
  1205. X*table.start.labelString:    Submit Query
  1206. X*table.start.activateCallback:    WcSetInsensitiveCB( this ), \
  1207. X                WcSetSensitiveCB  ( *table.stop )
  1208. X
  1209. X*table.stop.wcConstructor:    XmCreatePushButton
  1210. X*table.stop.labelString:    Stop Query
  1211. X*table.stop.sensitive:        False
  1212. X*table.stop.activateCallback:    WcSetInsensitiveCB( this ), \
  1213. X                                WcSetSensitiveCB  ( *table.start )
  1214. X
  1215. X*rtRadio.wcConstructor:        XmCreateRadioBox
  1216. X*rtRadio.wcChildren:        trToggle, rtToggle
  1217. X
  1218. X*trToggle.wcConstructor:    XmCreateToggleButtonGadget
  1219. X*trToggle.labelString:        Query Time Range
  1220. X*trToggle.set:            True
  1221. X*trToggle.armCallback:        WcSetSensitiveCB   ( *fromLabel, *fromTime, \
  1222. X                    *fromType, *toLabel, *toTime, *toType)
  1223. X
  1224. X*rtToggle.wcConstructor:    XmCreateToggleButtonGadget
  1225. X*rtToggle.labelString:        Real Time Stream
  1226. X*rtToggle.armCallback:        WcSetInsensitiveCB ( *fromLabel, *fromTime, \
  1227. X                    *fromType, *toLabel, *toTime, *toType)
  1228. X
  1229. X*fromLabel.wcConstructor:    XmCreateLabel
  1230. X*fromLabel.labelString:        Begin Time:
  1231. X*fromLabel.alignment:        ALIGNMENT_END
  1232. X
  1233. X*toLabel.wcConstructor:        XmCreateLabel
  1234. X*toLabel.labelString:        End Time:
  1235. X*toLabel.alignment:        ALIGNMENT_END
  1236. X
  1237. X*fromTime.wcConstructor:    XmCreateText
  1238. X*toTime.wcConstructor:        XmCreateText
  1239. X
  1240. X*fromType.wcConstructor:    XmCreateRadioBox
  1241. X*fromType.orientation:        HORIZONTAL
  1242. X*fromType.wcChildren:        sclk, scet, ert, mst, rct
  1243. X
  1244. X*toType.wcConstructor:        XmCreateRadioBox
  1245. X*toType.orientation:        HORIZONTAL
  1246. X*toType.wcChildren:        sclk, scet, ert, mst, rct
  1247. X
  1248. X*table*sclk.set:        True
  1249. X*table*sclk.wcConstructor:    XmCreateToggleButtonGadget
  1250. X*table*scet.wcConstructor:    XmCreateToggleButtonGadget
  1251. X*table*ert.wcConstructor:    XmCreateToggleButtonGadget
  1252. X*table*mst.wcConstructor:    XmCreateToggleButtonGadget
  1253. X*table*rct.wcConstructor:    XmCreateToggleButtonGadget
  1254. +FUNKY+STUFF+
  1255. echo '-rw-r--r--  1 david        3012 Aug  6 09:36 M8_Submit    (as sent)'
  1256. chmod u=rw,g=r,o=r M8_Submit
  1257. ls -l M8_Submit
  1258. echo x - M8_Text
  1259. sed 's/^X//' > M8_Text <<'+FUNKY+STUFF+'
  1260. X  This section provides the resource specifications for the msgWindow, a
  1261. X  scrolled text window for trace, heartbeat, warning, and error messages.
  1262. X
  1263. X  ----------------------------------------------------------------------
  1264. X
  1265. X*main.msgWindow.wcConstructor:    XmCreateText
  1266. X*main.msgWindow.wcCallback:    WcSetValueCB(*main.workWindow: this)
  1267. X
  1268. X*main.vscroll.wcConstructor:    XmCreateScrollBar
  1269. X*main.vscroll.wcCallback:       WcSetValueCB( *main.verticalScrollBar: this )
  1270. +FUNKY+STUFF+
  1271. echo '-rw-r--r--  1 david         460 Aug  6 09:36 M8_Text    (as sent)'
  1272. chmod u=rw,g=r,o=r M8_Text
  1273. ls -l M8_Text
  1274. echo x - M9.Colors
  1275. sed 's/^X//' > M9.Colors <<'+FUNKY+STUFF+'
  1276. X
  1277. X#*wcTrace: True
  1278. X
  1279. XMri.wcChildren:    main
  1280. XMri.title:    Mri using M9.Colors
  1281. X
  1282. X*background:    Turquoise
  1283. X*fontList:    -adobe-new century schoolbook-medium-r-normal--10-100-*
  1284. X
  1285. X*main.wcConstructor:    XmCreateMainWindow
  1286. X*main.wcChildren:    menuBar, wa
  1287. X
  1288. X##################################################################
  1289. X# Minimal menu bar
  1290. X##################################################################
  1291. X
  1292. X*menuBar.wcConstructor:    XmCreateMenuBar
  1293. X*menuBar.wcChildren:    fileMenu, File, Edit, Help
  1294. X*menuBar*fontList:    -b&h-lucida-medium-i-normal-sans-12-120-*
  1295. X
  1296. X*fileMenu.wcConstructor:    XmCreatePulldownMenu
  1297. X*fileMenu.wcChildren:        Quit
  1298. X*fileMenu.wcManaged:        false
  1299. X
  1300. X*Quit.wcConstructor:    XmCreateCascadeButton
  1301. X*Quit.activateCallback:    WcExitCB
  1302. X
  1303. X*File.wcConstructor:    XmCreateCascadeButton
  1304. X*File.subMenuId:    *fileMenu
  1305. X
  1306. X*Edit.wcConstructor:    XmCreateCascadeButton
  1307. X
  1308. X*Help.wcConstructor:    XmCreateCascadeButton
  1309. X*Help.wcCallback:    WcSetValueCB( ^.menuHelpWidget: this )
  1310. X
  1311. X##################################################################
  1312. X# Work area consists of a table widget managing three identical
  1313. X# table widget children, layout left to right.
  1314. X##################################################################
  1315. X*wa.wcClassName:    Table
  1316. X*wa.wcCallback:        WcSetValueCB(*main.workWindow: this)
  1317. X*wa.wcChildren:        left, middle, right
  1318. X*wa.layout:        left 0 0 ; middle 1 0 ; right 2 0
  1319. X
  1320. X##################################################################
  1321. X# Table Widget : Three identical ones, which contain color buttons
  1322. X# and a drawing area.
  1323. X##################################################################
  1324. X
  1325. X*left.wcClassName:    Table
  1326. X*left.wcChildren:    RC, drawing
  1327. X*middle.wcClassName:    Table
  1328. X*middle.wcChildren:    RC, drawing
  1329. X*right.wcClassName:    Table
  1330. X*right.wcChildren:    RC, drawing
  1331. X*wa.Table.layout:    RC 0 0 1 1 hH; drawing 0 1
  1332. X
  1333. X*drawing.wcClassName:    XmDrawingArea
  1334. X*drawing.background:    RoyalBlue
  1335. X
  1336. X*RC.wcConstructor:    XmCreateRadioBox
  1337. X*RC.wcChildren:        Aquamarine, Black, Blue, BlueViolet,   \
  1338. X    Brown, CadetBlue, Coral, CornflowerBlue, Cyan, DarkGreen,           \
  1339. X    DarkOliveGreen, DarkOrchid, DarkSlateBlue, DarkSlateGray,           \
  1340. X    DarkTurquoise, DimGray, Firebrick, ForestGreen, Gold, Goldenrod,      \
  1341. X    Gray, Green, GreenYellow, IndianRed, Khaki, LightBlue, LightGray,     \
  1342. X    LightSteelBlue, LimeGreen, Magenta, Maroon, MediumAquamarine,          \
  1343. X    MediumBlue, MediumForestGreen, MediumGoldenrod, MediumOrchid,          \
  1344. X    MediumSeaGreen, MediumSlateBlue, MediumTurquoise, MediumVioletRed,    \
  1345. X    MidnightBlue, NavyBlue, Orange, OrangeRed, Orchid, PaleGreen,         \
  1346. X    Pink, Plum, Red, Salmon, SeaGreen, Sienna, SkyBlue, SlateBlue,        \
  1347. X    SpringGreen, SteelBlue, Tan, Thistle, Transparent, Turquoise, Violet, \
  1348. X    VioletRed, Wheat, White, Yellow, YellowGreen
  1349. X*RC.numColumns:        3
  1350. X*RC.packing:        PACK_COLUMN
  1351. X
  1352. X*Aquamarine.wcClassName:    XmToggleButtonGadget
  1353. X*Black.wcClassName:        XmToggleButtonGadget
  1354. X*Blue.wcClassName:        XmToggleButtonGadget
  1355. X*BlueViolet.wcClassName:    XmToggleButtonGadget
  1356. X*Brown.wcClassName:        XmToggleButtonGadget
  1357. X*CadetBlue.wcClassName:        XmToggleButtonGadget
  1358. X*Coral.wcClassName:        XmToggleButtonGadget
  1359. X*CornflowerBlue.wcClassName:    XmToggleButtonGadget
  1360. X*Cyan.wcClassName:        XmToggleButtonGadget
  1361. X*DarkGreen.wcClassName:        XmToggleButtonGadget
  1362. X*DarkOliveGreen.wcClassName:    XmToggleButtonGadget
  1363. X*DarkOrchid.wcClassName:    XmToggleButtonGadget
  1364. X*DarkSlateBlue.wcClassName:    XmToggleButtonGadget
  1365. X*DarkSlateGray.wcClassName:    XmToggleButtonGadget
  1366. X*DarkTurquoise.wcClassName:    XmToggleButtonGadget
  1367. X*DimGray.wcClassName:        XmToggleButtonGadget
  1368. X*Firebrick.wcClassName:        XmToggleButtonGadget
  1369. X*ForestGreen.wcClassName:    XmToggleButtonGadget
  1370. X*Gold.wcClassName:        XmToggleButtonGadget
  1371. X*Goldenrod.wcClassName:        XmToggleButtonGadget
  1372. X*Gray.wcClassName:        XmToggleButtonGadget
  1373. X*Green.wcClassName:        XmToggleButtonGadget
  1374. X*GreenYellow.wcClassName:    XmToggleButtonGadget
  1375. X*IndianRed.wcClassName:        XmToggleButtonGadget
  1376. X*Khaki.wcClassName:        XmToggleButtonGadget
  1377. X*LightBlue.wcClassName:        XmToggleButtonGadget
  1378. X*LightGray.wcClassName:        XmToggleButtonGadget
  1379. X*LightSteelBlue.wcClassName:    XmToggleButtonGadget
  1380. X*LimeGreen.wcClassName:        XmToggleButtonGadget
  1381. X*Magenta.wcClassName:        XmToggleButtonGadget
  1382. X*Maroon.wcClassName:        XmToggleButtonGadget
  1383. X*MediumAquamarine.wcClassName:    XmToggleButtonGadget
  1384. X*MediumBlue.wcClassName:    XmToggleButtonGadget
  1385. X*MediumForestGreen.wcClassName:    XmToggleButtonGadget
  1386. X*MediumGoldenrod.wcClassName:    XmToggleButtonGadget
  1387. X*MediumOrchid.wcClassName:    XmToggleButtonGadget
  1388. X*MediumSeaGreen.wcClassName:    XmToggleButtonGadget
  1389. X*MediumSlateBlue.wcClassName:    XmToggleButtonGadget
  1390. X*MediumTurquoise.wcClassName:    XmToggleButtonGadget
  1391. X*MediumVioletRed.wcClassName:    XmToggleButtonGadget
  1392. X*MidnightBlue.wcClassName:    XmToggleButtonGadget
  1393. X*NavyBlue.wcClassName:        XmToggleButtonGadget
  1394. X*Orange.wcClassName:        XmToggleButtonGadget
  1395. X*OrangeRed.wcClassName:        XmToggleButtonGadget
  1396. X*Orchid.wcClassName:        XmToggleButtonGadget
  1397. X*PaleGreen.wcClassName:        XmToggleButtonGadget
  1398. X*Pink.wcClassName:        XmToggleButtonGadget
  1399. X*Plum.wcClassName:        XmToggleButtonGadget
  1400. X*Red.wcClassName:        XmToggleButtonGadget
  1401. X*Salmon.wcClassName:        XmToggleButtonGadget
  1402. X*SeaGreen.wcClassName:        XmToggleButtonGadget
  1403. X*Sienna.wcClassName:        XmToggleButtonGadget
  1404. X*SkyBlue.wcClassName:        XmToggleButtonGadget
  1405. X*SlateBlue.wcClassName:        XmToggleButtonGadget
  1406. X*SpringGreen.wcClassName:    XmToggleButtonGadget
  1407. X*SteelBlue.wcClassName:        XmToggleButtonGadget
  1408. X*Tan.wcClassName:        XmToggleButtonGadget
  1409. X*Thistle.wcClassName:        XmToggleButtonGadget
  1410. X*Transparent.wcClassName:    XmToggleButtonGadget
  1411. X*Turquoise.wcClassName:        XmToggleButtonGadget
  1412. X*Violet.wcClassName:        XmToggleButtonGadget
  1413. X*VioletRed.wcClassName:        XmToggleButtonGadget
  1414. X*Wheat.wcClassName:        XmToggleButtonGadget
  1415. X*White.wcClassName:        XmToggleButtonGadget
  1416. X*Yellow.wcClassName:        XmToggleButtonGadget
  1417. X*YellowGreen.wcClassName:    XmToggleButtonGadget
  1418. X
  1419. X*Aquamarine.armCallback:    WcSetValueCB( ^^drawing.background: Aquamarine )
  1420. X*Black.armCallback:        WcSetValueCB( ^^drawing.background: Black )
  1421. X*Blue.armCallback:        WcSetValueCB( ^^drawing.background: Blue )
  1422. X*BlueViolet.armCallback:    WcSetValueCB( ^^drawing.background: BlueViolet )
  1423. X*Brown.armCallback:        WcSetValueCB( ^^drawing.background: Brown )
  1424. X*CadetBlue.armCallback:        WcSetValueCB( ^^drawing.background: CadetBlue )
  1425. X*Coral.armCallback:        WcSetValueCB( ^^drawing.background: Coral )
  1426. X*CornflowerBlue.armCallback:    WcSetValueCB( ^^drawing.background: CornflowerBlue )
  1427. X*Cyan.armCallback:        WcSetValueCB( ^^drawing.background: Cyan )
  1428. X*DarkGreen.armCallback:        WcSetValueCB( ^^drawing.background: DarkGreen )
  1429. X*DarkOliveGreen.armCallback:    WcSetValueCB( ^^drawing.background: DarkOliveGreen )
  1430. X*DarkOrchid.armCallback:    WcSetValueCB( ^^drawing.background: DarkOrchid )
  1431. X*DarkSlateBlue.armCallback:    WcSetValueCB( ^^drawing.background: DarkSlateBlue )
  1432. X*DarkSlateGray.armCallback:    WcSetValueCB( ^^drawing.background: DarkSlateGray )
  1433. X*DarkTurquoise.armCallback:    WcSetValueCB( ^^drawing.background: DarkTurquoise )
  1434. X*DimGray.armCallback:        WcSetValueCB( ^^drawing.background: DimGray )
  1435. X*Firebrick.armCallback:        WcSetValueCB( ^^drawing.background: Firebrick )
  1436. X*ForestGreen.armCallback:    WcSetValueCB( ^^drawing.background: ForestGreen )
  1437. X*Gold.armCallback:        WcSetValueCB( ^^drawing.background: Gold )
  1438. X*Goldenrod.armCallback:        WcSetValueCB( ^^drawing.background: Goldenrod )
  1439. X*Gray.armCallback:        WcSetValueCB( ^^drawing.background: Gray )
  1440. X*Green.armCallback:        WcSetValueCB( ^^drawing.background: Green )
  1441. X*GreenYellow.armCallback:    WcSetValueCB( ^^drawing.background: GreenYellow )
  1442. X*IndianRed.armCallback:        WcSetValueCB( ^^drawing.background: IndianRed )
  1443. X*Khaki.armCallback:        WcSetValueCB( ^^drawing.background: Khaki )
  1444. X*LightBlue.armCallback:        WcSetValueCB( ^^drawing.background: LightBlue )
  1445. X*LightGray.armCallback:        WcSetValueCB( ^^drawing.background: LightGray )
  1446. X*LightSteelBlue.armCallback:    WcSetValueCB( ^^drawing.background: LightSteelBlue )
  1447. X*LimeGreen.armCallback:        WcSetValueCB( ^^drawing.background: LimeGreen )
  1448. X*Magenta.armCallback:        WcSetValueCB( ^^drawing.background: Magenta )
  1449. X*Maroon.armCallback:        WcSetValueCB( ^^drawing.background: Maroon )
  1450. X*MediumAquamarine.armCallback:    WcSetValueCB( ^^drawing.background: MediumAquamarine )
  1451. X*MediumBlue.armCallback:    WcSetValueCB( ^^drawing.background: MediumBlue )
  1452. X*MediumForestGreen.armCallback:    WcSetValueCB( ^^drawing.background: MediumForestGreen )
  1453. X*MediumGoldenrod.armCallback:    WcSetValueCB( ^^drawing.background: MediumGoldenrod )
  1454. X*MediumOrchid.armCallback:    WcSetValueCB( ^^drawing.background: MediumOrchid )
  1455. X*MediumSeaGreen.armCallback:    WcSetValueCB( ^^drawing.background: MediumSeaGreen )
  1456. X*MediumSlateBlue.armCallback:    WcSetValueCB( ^^drawing.background: MediumSlateBlue )
  1457. X*MediumTurquoise.armCallback:    WcSetValueCB( ^^drawing.background: MediumTurquoise )
  1458. X*MediumVioletRed.armCallback:    WcSetValueCB( ^^drawing.background: MediumVioletRed )
  1459. X*MidnightBlue.armCallback:    WcSetValueCB( ^^drawing.background: MidnightBlue )
  1460. X*NavyBlue.armCallback:        WcSetValueCB( ^^drawing.background: NavyBlue )
  1461. X*Orange.armCallback:        WcSetValueCB( ^^drawing.background: Orange )
  1462. X*OrangeRed.armCallback:        WcSetValueCB( ^^drawing.background: OrangeRed )
  1463. X*Orchid.armCallback:        WcSetValueCB( ^^drawing.background: Orchid )
  1464. X*PaleGreen.armCallback:        WcSetValueCB( ^^drawing.background: PaleGreen )
  1465. X*Pink.armCallback:        WcSetValueCB( ^^drawing.background: Pink )
  1466. X*Plum.armCallback:        WcSetValueCB( ^^drawing.background: Plum )
  1467. X*Red.armCallback:        WcSetValueCB( ^^drawing.background: Red )
  1468. X*Salmon.armCallback:        WcSetValueCB( ^^drawing.background: Salmon )
  1469. X*SeaGreen.armCallback:        WcSetValueCB( ^^drawing.background: SeaGreen )
  1470. X*Sienna.armCallback:        WcSetValueCB( ^^drawing.background: Sienna )
  1471. X*SkyBlue.armCallback:        WcSetValueCB( ^^drawing.background: SkyBlue )
  1472. X*SlateBlue.armCallback:        WcSetValueCB( ^^drawing.background: SlateBlue )
  1473. X*SpringGreen.armCallback:    WcSetValueCB( ^^drawing.background: SpringGreen )
  1474. X*SteelBlue.armCallback:        WcSetValueCB( ^^drawing.background: SteelBlue )
  1475. X*Tan.armCallback:        WcSetValueCB( ^^drawing.background: Tan )
  1476. X*Thistle.armCallback:        WcSetValueCB( ^^drawing.background: Thistle )
  1477. X*Transparent.armCallback:    WcSetValueCB( ^^drawing.background: Transparent )
  1478. X*Turquoise.armCallback:        WcSetValueCB( ^^drawing.background: Turquoise )
  1479. X*Violet.armCallback:        WcSetValueCB( ^^drawing.background: Violet )
  1480. X*VioletRed.armCallback:        WcSetValueCB( ^^drawing.background: VioletRed )
  1481. X*Wheat.armCallback:        WcSetValueCB( ^^drawing.background: Wheat)
  1482. X*White.armCallback:        WcSetValueCB( ^^drawing.background: White)
  1483. X*Yellow.armCallback:        WcSetValueCB( ^^drawing.background: Yellow)
  1484. X*YellowGreen.armCallback:    WcSetValueCB( ^^drawing.background: YellowGreen)
  1485. +FUNKY+STUFF+
  1486. echo '-rw-rw-r--  1 david       10524 Aug  6 09:36 M9.Colors    (as sent)'
  1487. chmod u=rw,g=rw,o=r M9.Colors
  1488. ls -l M9.Colors
  1489. echo x - MD
  1490. sed 's/^X//' > MD <<'+FUNKY+STUFF+'
  1491. X#
  1492. X# Motif Widgets for Multi-Display Demo
  1493. X#
  1494. X
  1495. XMDmotif.wcChildren:        rc
  1496. X
  1497. X*rc.wcClassName:        XmRowColumn
  1498. X*rc.wcChildren:            exit, close, bugs, snap, crackle, pop
  1499. X
  1500. X*exit.wcConstructor:        XmCreatePushButton
  1501. X*exit.activateCallback:        WcExitCB
  1502. X
  1503. X*close.wcConstructor:        XmCreatePushButton
  1504. X*close.activateCallback:    KillWidgetTreeOnDisplay
  1505. X
  1506. X*bugs.wcConstructor:        XmCreatePushButton
  1507. X*bugs.activateCallback:        NewWidgetTreeOnDisplay( bugs:0.0 )
  1508. X
  1509. X*snap.wcConstructor:        XmCreatePushButton
  1510. X*snap.activateCallback:        NewWidgetTreeOnDisplay( snap:0.0 )
  1511. X
  1512. X*crackle.wcConstructor:        XmCreatePushButton
  1513. X*crackle.activateCallback:    NewWidgetTreeOnDisplay( crackle:0.0 )
  1514. X
  1515. X*pop.wcConstructor:        XmCreatePushButton
  1516. X*pop.activateCallback:        NewWidgetTreeOnDisplay( pop:0.0 )
  1517. X
  1518. X#
  1519. X# Athena Widgets for Multi-Display Demo
  1520. X#
  1521. X
  1522. XMDathena.wcChildren:        table
  1523. X
  1524. X*table.wcClassName:        Table
  1525. X*table.wcChildren:        aexit, aclose, abugs, asnap, acrackle, apop
  1526. X#        child       c r cs rs opts
  1527. X*table.layout:    aexit        0 0  1  1    ;\
  1528. X        aclose        0 1  1  1    ;\
  1529. X        abugs        0 2  1  1    ;\
  1530. X        asnap        0 3  1  1    ;\
  1531. X        acrackle    0 4  1  1    ;\
  1532. X        apop        0 5  1  1
  1533. X
  1534. X*aexit.wcClass:        commandWidgetClass
  1535. X*aexit.label:        exit
  1536. X*aexit.callback:    WcExitCB
  1537. X
  1538. X*aclose.wcClass:    commandWidgetClass
  1539. X*aclose.label:        close
  1540. X*aclose.callback:    KillWidgetTreeOnDisplay
  1541. X
  1542. X*abugs.wcClass:        commandWidgetClass
  1543. X*abugs.label:        bugs
  1544. X*abugs.callback:    NewWidgetTreeOnDisplay( bugs:0.0 )
  1545. X
  1546. X*asnap.wcClass:        commandWidgetClass
  1547. X*asnap.label:        snap
  1548. X*asnap.callback:    NewWidgetTreeOnDisplay( snap:0.0 )
  1549. X
  1550. X*acrackle.wcClass:    commandWidgetClass
  1551. X*acrackle.label:    crackle
  1552. X*acrackle.callback:    NewWidgetTreeOnDisplay( crackle:0.0 )
  1553. X
  1554. X*apop.wcClass:        commandWidgetClass
  1555. X*apop.label:        pop
  1556. X*apop.callback:        NewWidgetTreeOnDisplay( pop:0.0 )
  1557. X
  1558. +FUNKY+STUFF+
  1559. echo '-rw-rw-r--  1 david        1703 Aug  6 09:36 MD    (as sent)'
  1560. chmod u=rw,g=rw,o=r MD
  1561. ls -l MD
  1562. exit 0
  1563.  
  1564. dan
  1565. ----------------------------------------------------
  1566. O'Reilly && Associates   argv@sun.com / argv@ora.com
  1567. Opinions expressed reflect those of the author only.
  1568. --
  1569. dan
  1570. ----------------------------------------------------
  1571. O'Reilly && Associates   argv@sun.com / argv@ora.com
  1572. Opinions expressed reflect those of the author only.
  1573.