[comp.sources.x] v11i016: wcl - Widget Creation Library, Part04/35

david@devvax.Jpl.Nasa.Gov (David E. Smyth) (02/01/91)

Submitted-by: david@devvax.Jpl.Nasa.Gov (David E. Smyth)
Posting-number: Volume 11, Issue 16
Archive-name: wcl/part04

#! /bin/sh

# Make a new directory for the wc sources, cd to it, and run kits 1
# thru 35 through sh.  When all 35 kits have been run, read README.

echo "This is wc 1.05 kit 4 (of 35).  If kit 4 is complete, the line"
echo '"'"End of kit 4 (of 35)"'" will echo at the end.'
echo ""
export PATH || (echo "You didn't use sh, you clunch." ; kill $$)
mkdir Doc 2>/dev/null
echo Extracting Doc/Wcl.PS:AB
sed >Doc/Wcl.PS:AB <<'!STUFFY!FUNK!' -e 's/X//'
X(invoking the callback.  The names of the children widgets must be single ) 143. 270. T
X(widget names, not pathnames.  For example: ) 143. 256. T
X71. 72. 539. 720. C
XU
X1 F
X0 X
X( ) 360.64 256. T
X(In this case, pressing a danger button creates a new tree of widgets providing ) 143. 171. T
X(emergency controls.  The root of the new tree is a pop-up child of the existing ) 143. 157. T
X(Panel widget.  Therefore, the root must be a shell widget.) 143. 143. T
X71. 622. 539. 680. C
X71. 622. 539. 680. R
X7 X
XV
X247. 623. 427. 664. R
X3 X
XV
X0 H
X0 X
XN
X239. 631. 419. 672. R
X7 X
XV
X0 X
XN
X4 F
X(*foobar ) 257. 660. T
X(*Table*XmRowColumn*foobar ) 257. 644. T
XU
X71. 439. 539. 494. C
X71. 439. 539. 494. R
X7 X
XV
X193. 442. 494. 475. R
X3 X
XV
X0 H
X0 X
XN
X185. 450. 486. 483. R
X7 X
XV
X0 X
XN
X4 F
X(*danger.callback:  WcCreateChildrenCB\050 *Panel,\134 ) 194. 469. T
X(EmergencyControls\051 ) 338. 457. T
XU
X71. 198. 539. 253. C
X71. 198. 539. 253. R
X7 X
XV
X193. 201. 494. 234. R
X3 X
XV
X0 H
X0 X
XN
X185. 209. 486. 242. R
X7 X
XV
X0 X
XN
X4 F
X(*danger.callback:  WcCreatePopupsCB\050 *Panel,\134 ) 194. 228. T
X(EmergencyControls\051 ) 338. 216. T
XU
XFMENDPAGE
X%%Page: "13" 13
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 13) 527.5 749. T
X1 F
X(widget) 180. 711. T
X(name of widget, full path or with wildcards. ) 252. 711. T
X(parent) 180. 695. T
X(name of widget, full path or with wildcards. ) 252. 695. T
X(child) 180. 679. T
X(name of child starting from the parent widget. ) 252. 679. T
X(resLHS) 180. 663. T
X(<widget path name> ) 252. 663. T
X(resRHS) 180. 647. T
X(<any legal resource value>) 252. 647. T
X(resType) 180. 631. T
X(<any legal resource type, such as Font or Pixel>  ) 252. 631. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(In all cases, equivalent action procedures also exist.  The names of the action ) 144. 364. T
X(procedures are identical, except that the final characters in the names are ) 144. 350. T
X(always ACT instead of CB.  The resource file specifications are otherwise ) 144. 336. T
X(identical.) 144. 322. T
X5 F
X(Widget Naming in Callback and Action Arguments) 72. 282. T
X1 F
X(All of these callback and action procedures invoke WcFullNameToWidget to ) 144. 252. T
X(convert a string to a widget.  WcFullNameToWidget allows relative widget ) 144. 238. T
X(naming, relative to the widget which invoked the callback.  The special ) 144. 224. T
X(characters are presented in examples below: ) 144. 210. T
X(this) 180. 188. T
X(means: \324the widget which invoked this callback\325 ) 252. 188. T
X(^foobar) 180. 172. T
X(means: \324a sibling widget named foobar\325 ) 252. 172. T
X(~foobar) 180. 156. T
X6.34 (means: \324a child of the shell ancestor named) 252. 156. P
X(foobar\325 ) 252. 142. T
X(~^foobar) 180. 126. T
X5.1 (means: \324a sibling of the shell ancestor named) 252. 126. P
X(foobar\325 ) 252. 112. T
X(The relative naming characters \324^\325 and \324~\325 are parsed left to right. ) 144. 88. T
X72. 385. 540. 628. C
X72. 385. 540. 628. R
X7 X
XV
X180. 389. 504. 611. R
X3 X
XV
X0 H
X0 X
XN
X172. 397. 496. 619. R
X7 X
XV
X0 X
XN
X4 F
X(WcCreateChildrenCB) 181. 607. T
X(\050 parent, child [, child] ... \051) 307. 607. T
X(WcCreatePopupsCB) 181. 595. T
X(\050 parent, child [, child] ... \051 ) 307. 595. T
X(WcManageChildrenCB) 181. 583. T
X(\050 parent, child [, child] ... \051 ) 307. 583. T
X(WcUnmanageChildrenCB) 181. 571. T
X(\050 parent, child [, child] ... \051 ) 307. 571. T
X(WcManageCB) 181. 559. T
X(\050 widget [, widget] ... \051 ) 307. 559. T
X(WcUnmanageCB) 181. 547. T
X(\050 widget [, widget] ... \051 ) 307. 547. T
X(WcDestroyCB) 181. 535. T
X(\050 widget [, widget] ... \051 ) 307. 535. T
X(WcSetSensitiveCB) 181. 523. T
X(\050 widget [, widget] ... \051 ) 307. 523. T
X(WcSetInsensitiveCB) 181. 511. T
X(\050 widget [, widget] ... \051 ) 307. 511. T
X(WcPopupCB) 181. 499. T
X(\050 widget \051 ) 307. 499. T
X(WcPopupGrabCB) 181. 487. T
X(\050 widget \051 ) 307. 487. T
X(WcPopdownCB) 181. 475. T
X(\050 widget \051 ) 307. 475. T
X(WcSetValueCB) 181. 463. T
X(\050 resLHS: resRHS \051) 307. 463. T
X(WcSetTypeValueCB) 181. 451. T
X(\050 resLHS: resType, resRHS \051 ) 307. 451. T
X(WcLoadResourceFileCB) 181. 439. T
X(\050 filename \051 ) 307. 439. T
X(WcSystemCB) 181. 427. T
X(\050 shell command line \051 ) 307. 427. T
X(WcTraceCB) 181. 415. T
X(\050 annotation \051 ) 307. 415. T
X(WcExitCB) 181. 403. T
X(\050 exitValue \051 ) 307. 403. T
XU
XFMENDPAGE
X%%Page: "12" 12
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 12) 527.5 749. T
X5 F
X(WcPopups and WcChildren Resources) 72. 709. T
X1 F
X(After a widget is created, but before it is managed, all of its children are ) 144. 679. T
X(created: first the pop-up children, and then the normal children.  Only ) 144. 665. T
X(composite widgets can have normal children, but any widget can have pop-up ) 144. 651. T
X(children.  The names of children widgets are specified by the WcPopups and ) 144. 637. T
X(WcChildren resources.  The order of the names in the resource value indicate ) 144. 623. T
X(the left-to-right order of widget creation.  The names of the widgets in the ) 144. 609. T
X(example below imply the order of creation:) 144. 595. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 351.96 595. T
X(Each widget creation is recursive, so the widgets are created depth first.  I.e., ) 144. 510. T
X(the widget \324) 144. 496. T
X4 F
X(ONE) 201.32 496. T
X1 F
X(\325 and all of ) 219.32 496. T
X4 F
X(ONE) 274.64 496. T
X1 F
X(\325s children will be created before widget \324) 292.64 496. T
X4 F
X(TWO) 493.58 496. T
X1 F
X(\325 ) 511.58 496. T
X(will be created. ) 144. 482. T
X5 F
X(WcManaged Resource ) 72. 442. T
X1 F
X(This resource only applies to widgets specified in WcChildren resource ) 144. 412. T
X(specifications.   WcManaged allows you to specify that a child of a composite ) 144. 398. T
X(widget should not be managed following its creation.  By default, widgets ) 144. 384. T
X(specified with WcChildren are managed together with their siblings after all ) 144. 370. T
X(siblings are created.  Wc uses a single call to XtManageChildren when ) 144. 356. T
X(possible. ) 144. 342. T
X3 F
X(Widget Creation Library Standard Callbacks and Actions) 72. 307. T
X1 F
X(Wcl provides 20 callbacks and 20 equivalent actions.  These actions and ) 144. 276. T
X(callbacks are intended to map closely to existing Xt functions.  They simply ) 144. 262. T
X(provide XtCallbackProc or XtActionProc wrappers to many commonly used Xt ) 144. 248. T
X(functions.  These wrapper procs perform argument parsing, such as converting ) 144. 234. T
X(strings to widgets using WcFullNameToWidget. ) 144. 220. T
X(Below is a complete list of callbacks which are registered by Wc whenever ) 144. 190. T
X(you call WcWidgetCreation.  The "arguments" below are prototypes of what ) 144. 176. T
X(one puts in a resource file.  The terms mean: ) 144. 162. T
X72. 537. 540. 592. C
X72. 537. 540. 592. R
X7 X
XV
X215. 541. 469. 573. R
X3 X
XV
X0 H
X0 X
XN
X209. 547. 463. 579. R
X7 X
XV
X0 X
XN
X4 F
X(*foo.wcPopups:) 218. 568. T
X(ONE, TWO) 345. 568. T
X(*foo.wcChildren:) 218. 552. T
X(THREE, FOUR, FIVE ) 345. 552. T
XU
XFMENDPAGE
X%%Page: "11" 11
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 11) 527.5 749. T
X5 F
X(WcClass, WcClassName, and WcConstructor Resources ) 72. 709. T
X1 F
X(These resources allow you to specify the type of the widget.  Only one of ) 144. 679. T
X(these resources should be specified for each widget.  If multiple specifications ) 144. 665. T
X(are made, a warning will be given via XtWarning \050the message prints on ) 144. 651. T
X(stderr\051. ) 144. 637. T
X5 F
X(WcTrace Resource ) 72. 597. T
X1 F
X(This resource is useful for debugging your user interface.  When \324True\325 the full ) 144. 567. T
X(name and class name of the widget is printed to stderr right after the widget is ) 144. 553. T
X(created. ) 144. 539. T
X5 F
X(WcCallback Resource ) 72. 499. T
X1 F
X(This resource allows you to specify a list of callback functions which are ) 144. 469. T
X(invoked immediately after the widget is created.  The callback functions ) 144. 455. T
X(receive the newly created widget as their widget argument, and whatever is ) 144. 441. T
X(within the parenthesis following the callback function name as a string ) 144. 427. T
X(argument as client data.  For example:) 144. 413. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 327.64 413. T
X(This specification will cause the function \324FooSpecialCB\325 to be called.  The ) 144. 337. T
X(widget argument will be the newly created widget foo, and the client_data ) 144. 323. T
X(argument will be the null terminated character array "Hi there".  Note that ) 144. 309. T
X(leading and trailing whitespace is stripped, but interspersed whitespace ) 144. 295. T
X(\050including tabs and newlines\051 are still embedded.  The call_data is always ) 144. 281. T
X(NULL. ) 144. 267. T
X(This is generally how the interface can create related objects within the ) 144. 237. T
X(application.  For example, when a widget is created which represents, say, a ) 144. 223. T
X(Tranaction object, then the following WcCallback resource specification could ) 144. 209. T
X(tell the application to create a new Transaction instance:) 144. 195. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(This Transaction_CreateCB method \050an XtCallbackProc which has been ) 144. 122. T
X(registered via WcRegisterCallback\051 gets the newly created widget as its first ) 144. 108. T
X(argument, and it should remember it.  The XContext manager can be used to ) 144. 94. T
X(map widgets to application object instances.) 144. 80. T
X72. 364. 540. 410. C
X72. 364. 540. 410. R
X7 X
XV
X186. 368. 498. 391. R
X3 X
XV
X0 H
X0 X
XN
X178. 376. 490. 399. R
X7 X
XV
X0 X
XN
X4 F
X(*foo.wcCallback:) 187. 385. T
X(FooSpecialCB\050 Hi there \051 ) 331. 385. T
XU
X72. 149. 540. 192. C
X72. 149. 540. 192. R
X7 X
XV
X173. 154. 476. 177. R
X3 X
XV
X0 H
X0 X
XN
X168. 159. 471. 182. R
X7 X
XV
X0 X
XN
X4 F
X( *trans.wcCallback:) 177. 168. T
X(Transaction_CreateCB\050\051 ) 330. 168. T
XU
XFMENDPAGE
X%%Page: "10" 10
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 10) 527.5 749. T
X3 F
X(Widget Set Independent Applications) 72. 706. T
X1 F
X(Since the application starts out being completely described by resource files, ) 144. 675. T
X(and evolves as a collection of callback and action procedures, the applications ) 144. 661. T
X(tend to require very little knowledge of the type of widget actually being used ) 144. 647. T
X(in the interface.  In most cases, the application\325s objects are oblivious to the ) 144. 633. T
X(type of widget used to represent the object.) 144. 619. T
X(When action routines and callback functions are used to send pre-determined ) 144. 589. T
X(data to the application, the application can continue to be widget set ) 144. 575. T
X(independent.  Also, basic behaviors such as scrolling, pop-up, and creations ) 144. 561. T
X(can be performed via the standard Wc callbacks, and so the application need ) 144. 547. T
X(not even be aware of such activity.) 144. 533. T
X(Applications will remain sensitive to widget type in the methods which need ) 144. 503. T
X(to extract values from the widgets or set values in widgets.   Fortunately, ) 144. 489. T
X(such methods tend to be cohesive, and so the changes required to make such ) 144. 475. T
X(methods know about other types of widgets tend to be localized and easy to ) 144. 461. T
X(identify. ) 144. 447. T
X3 F
X(Widget Creation Resources in Detail) 72. 412. T
X1 F
X(This section presents the complete set of resources interpreted by Wcl.  ) 144. 381. T
X(These resources are introduced in the order of evaluation during widget ) 144. 367. T
X(creation.   In all cases, the Widget Creation resource names can be specified ) 144. 353. T
X(as Wc<name> or wc<name>, with the capitalized form having looser binding ) 144. 339. T
X(\050representing the resource class\051. ) 144. 325. T
X5 F
X(WcResFile Resource ) 72. 285. T
X1 F
X(This resource allows you to put additional resource specifications related to a ) 144. 255. T
X(widget or its children in a separate file.  Like all widget creation resources, the ) 144. 241. T
X(WcResFile resource value is retrieved from the Xrm database at widget ) 144. 227. T
X(creation time. ) 144. 213. T
X(Before the widget is created, the specified resource file is loaded into the Xrm ) 144. 183. T
X(database, and then another query of the Xrm database is made to obtain the ) 144. 169. T
X(other Wc resources.  Other than the WcResFile resource, all wc resources ) 144. 155. T
X(and other widget resources may be specified in the new resource file. ) 144. 141. T
XFMENDPAGE
X%%Page: "9" 9
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 9) 532.5 749. T
X1 F
X(\324one,\325 then \324two,\325 then \324three\325 and \324four.\325  The order of the resource ) 144. 711. T
X(specifications themselves are irrelevant to the order of creation: ) 144. 697. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 452.26 697. T
X(Widgets can also be created after the initial widget tree.  For example, help ) 144. 524. T
X(dialogs may be dynamically created only when necessary, so an experienced ) 144. 510. T
X(user does not need to suffer the additional start-up time of creating a large ) 144. 496. T
X(number of widgets which are not needed, nor is memory or swap space ) 144. 482. T
X(consumed by the unnecessary widgets. ) 144. 468. T
X(Here are resources which demonstrate how a help dialog could be created due ) 144. 438. T
X(to a button press.  In this case, the newly created widget will become a child of ) 144. 424. T
X(the application shell \050Mri if the resource file is being interpreted by Mri\051.  The ) 144. 410. T
X(resources for the help dialog are segregated into another set of resource files ) 144. 396. T
X(which are named \324HelpDialogResources.\325  The standard Xt resource file ) 144. 382. T
X(search path is used, so /usr/lib/X11/app-defaults/HelpDialogResources, ..., ) 144. 368. T
X(~/apps-defaults/HelpDialogResources, may be loaded into the Xrm database ) 144. 354. T
X(due to this one WcResFile specification:  ) 144. 340. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(In the above example, notice that the resources specified in the ) 144. 173. T
X(HelpDialogResources file are unknown to the Xrm database until an attempt ) 144. 159. T
X(is made to create the helpDialog widget. ) 144. 145. T
X72. 551. 540. 694. C
X72. 551. 540. 694. R
X7 X
XV
X188. 555. 499. 674. R
X3 X
XV
X0 H
X0 X
XN
X180. 563. 491. 682. R
X7 X
XV
X0 X
XN
X4 F
X(Mri.wcPopups:) 189. 670. T
X(one) 352. 670. T
X(Mri.wcChildren:) 189. 654. T
X(two ) 352. 654. T
X(Mri.one.wcConstructor:) 189. 638. T
X(XmCreateWorkingDialog ) 352. 638. T
X(Mri.two.wcClassName:) 189. 622. T
X(XmRowColumn ) 352. 622. T
X(Mri.two.wcChildren:) 189. 606. T
X(three, four ) 352. 606. T
X(Mri.two.three.wcClassName:) 189. 590. T
X(XmLabel ) 352. 590. T
X(Mri.two.four.wcClassName:) 189. 574. T
X(XmPushButton ) 352. 574. T
XU
X72. 200. 540. 337. C
X72. 200. 540. 337. R
X7 X
XV
X237. 204. 535. 270. R
X3 X
XV
X0 H
X0 X
XN
X81. 266. 493. 322. R
X3 X
XV
X0 X
XN
X73. 274. 485. 330. R
X7 X
XV
X0 X
XN
X4 F
X(! Initial resource file: ) 80. 315. T
X(*helpButton.activateCallback:) 80. 299. T
X(WcCreatePopupsCB\050 Mri, helpDialog \051 ) 260. 299. T
X(*helpDialog.wcResFile:) 80. 283. T
X(HelpDialogResources ) 260. 283. T
X229. 212. 527. 278. R
X7 X
XV
X0 X
XN
X(! HelpDialogResources resource file: ) 237. 265. T
X(*helpDialog.wcConstructor:) 237. 249. T
X(XmCreateMessageDialog ) 395. 249. T
X(*helpDialog.messageLabel:) 237. 233. T
X(Some help message... ) 395. 233. T
X(*helpDialog.okCallback:) 237. 217. T
X(WcDestroyCB\050 this \051 ) 395. 217. T
XU
XFMENDPAGE
X%%Page: "8" 8
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 8) 532.5 749. T
X1 F
X(then the resource file named FooResources will be merged into the resource ) 144. 713. T
X(database before the widget Foo is created.  In fact, several files named ) 144. 699. T
X(FooResources may be loaded, as the standard Xt resource file search and load ) 144. 685. T
X(is performed.\240) 144. 671. T
X72. 74. 540. 722. C
XU
X1 F
X0 X
X(   ) 213.98 671. T
X5 F
X(When Resources are Retrieved from the Xrm Database) 72. 631. T
X1 F
X(Resources are retrieved from the Xrm resource database when widgets are ) 144. 601. T
X(created.  If the resource database changes after widget \324burfl\325 is created, ) 144. 587. T
X(subsequent changes to the database will have absolutely no effect upon ) 144. 573. T
X(widget \324burfl.\325 ) 144. 559. T
X5 F
X(How Widgets Are Created from the Xrm Database ) 72. 519. T
X1 F
X(The Widget Creation Library starts creating widgets when the ) 144. 489. T
X(WcWidgetCreation\050\051 function is called.  Below is the recursive scenario.  The ) 144. 475. T
X(initial widget is usually the application shell:) 144. 461. T
X72. 74. 540. 722. C
XU
X1 F
X0 X
X( ) 359.34 461. T
X(The resource files themselves have no explicit flow of control mechanisms.  ) 144. 238. T
X(However, the order of events during widget creation causes the resources to ) 144. 224. T
X(be evaluated in a deterministic and sometimes repetitive pattern. ) 144. 210. T
X(The most significant control over resource evaluation is the order that widgets ) 144. 180. T
X(are created.  Widget creation follows the left-to-right order of widget names in ) 144. 166. T
X(WcPopups and then WcChildren resource lists.  In the example below, the ) 144. 152. T
X(widgets are named to reflect the order these widgets will be created: first ) 144. 138. T
X72. 74. 540. 722. C
X72. 74. 531. 110. C
X72. 74. 531. 110. R
X7 X
XV
X0 F
X0 X
X(\240) 90. 94. T
X4.03 (See section 2.2 and 11.11 of the ) 117. 94. P
X6 F
X4.03 (X11R4 Xt Intrinsics - C Language) 275.46 94. P
X(Interface) 117. 82. T
X0 F
X( manual for more information.) 153.1 82. T
X81. 107. 198. 107. 2 L
X2 H
XN
X72. 74. 540. 722. C
X72. 265. 540. 458. C
X426. 268. 536. 314. R
X3 X
XV
X0 H
X0 X
XN
X2 H
X0. 90. -87.5 126. 523. 426. A
X435. 426. -157. 0. W
X420. 274. 530. 320. R
X7 X
XV
X0 H
X0 X
XN
X413. 337. 496. 374. R
X3 X
XV
X0 X
XN
X2 H
X436. 351. 20. -31. W
X408. 342. 491. 379. R
X7 X
XV
X0 H
X0 X
XN
X309. 303. 396. 340. R
X3 X
XV
X0 X
XN
X2 H
X354. 323. 52. 29. W
X304. 308. 391. 345. R
X7 X
XV
X0 H
X0 X
XN
X303. 365. 388. 413. R
X3 X
XV
X0 X
XN
X2 H
X338. 385. 5. -37. W
X298. 370. 383. 418. R
X7 X
XV
X0 H
X0 X
XN
X224. 329. 285. 384. R
X3 X
XV
X0 X
XN
X2 H
X264. 363. 33. 32. W
X219. 334. 280. 389. R
X7 X
XV
X0 H
X0 X
XN
X211. 407. 274. 436. R
X3 X
XV
X0 X
XN
X2 H
X233. 420. 8. -30. W
X206. 412. 269. 441. R
X7 X
XV
X0 H
X0 X
XN
X94. 412. 176. 446. R
X3 X
XV
X0 X
XN
X2 H
X163. 432. 39. -8. W
X89. 417. 171. 451. R
X7 X
XV
X0 H
X0 X
XN
X7 F
X(Fetch WcChildren ) 95. 441. T
X(of widget.  For ) 101.66 431. T
X(each child ...) 104.99 421. T
X(Fetch all Wc ) 213.66 429. T
X(Resources) 216.55 419. T
X(If WcResFile ) 224.72 379. T
X(is set, load ) 227.82 369. T
X(the file and ) 227.38 359. T
X(re-fetch Wc ) 226.72 349. T
X(Resources) 228.05 339. T
X(Use WcClass, ) 314.77 407. T
X(WcClassName, or ) 307.21 397. T
X(WcConstructor to ) 307.22 387. T
X(create child widget) 304.99 377. T
X(Widget gets its ) 320.55 334. T
X(own resources ) 320.77 324. T
X(from Xrm Database) 312.32 314. T
X(If WcCallback is ) 418.54 368. T
X(set, invoke each ) 418.1 358. T
X(callback in order) 417.21 348. T
X(for each child widget ) 436.21 308. T
X(named in the ) 451.33 298. T
X(WcChildren resource, ) 434.66 288. T
X(recursively ...) 450.43 278. T
X72. 74. 540. 722. C
XU
XFMENDPAGE
X%%Page: "7" 7
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 7) 532.5 749. T
X5 F
X(How the Application Interacts with the Widget Creation Library) 72. 709. T
X1 F
X(The typical Wc client application \050including Ari and Mri\051 performs the ) 144. 679. T
X(following sequence:) 144. 665. T
X(1.) 162. 643. T
X(Create an application shell widget and load the Xrm ) 198. 643. T
X(database by calling XtInitialize\050\051.) 198. 629. T
X(2.) 162. 613. T
X(Register widgets, callbacks, and actions with the Wc library.) 198. 613. T
X(3.) 162. 597. T
X(Pass the application shell to the WcWidgetCreation\050\051 ) 198. 597. T
X(function.  This function returns when the entire connected ) 198. 583. T
X(widget hierarchy specified in the Xrm database is created.) 198. 569. T
X(4.) 162. 553. T
X(The widget tree is realized.) 198. 553. T
X(5.) 162. 537. T
X(XtMainLoop is entered.) 198. 537. T
X(Mri is simply a minimal application of the Widget Creation Library which ) 144. 513. T
X(happens to register all the Motif widgets.  Here is the main\050\051 function for Mri: ) 144. 499. T
X72. 72. 540. 720. C
XU
X5 F
X0 X
X(When Resources are Loaded Into the Xrm Database) 72. 220. T
X1 F
X(XtInitialize loads an initial set of resource files into the resource database ) 144. 190. T
X(before any widgets are created.  This initial database may contain references ) 144. 176. T
X(to other resource files by way of WcResFile resource specifications.  If a ) 144. 162. T
X(widget \324Foo\325 has a resource specification like this:) 144. 148. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 386.29 148. T
X72. 257. 540. 496. C
X72. 257. 540. 496. R
X7 X
XV
X188. 261. 503. 479. R
X3 X
XV
X0 H
X0 X
XN
X180. 269. 495. 487. R
X7 X
XV
X0 X
XN
X4 F
X(#include <Xm/Xm.h>) 189. 475. T
X(#include <WcCreate.h>) 189. 463. T
X(main\050 argc, argv \051) 189. 439. T
X(int) 207. 427. T
X(argc;) 244. 427. T
X(char*) 207. 415. T
X(argv[];) 244. 415. T
X({) 189. 403. T
X(XtAppContext) 207. 391. T
X(app;) 288. 391. T
X(Widget appShell;) 207. 379. T
X(appShell = XtInitialize\050 ... \051;) 207. 363. T
X(app = XtWidgetToApplicationContext\050 appShell \051;) 207. 351. T
X(MriRegisterMotif \050 app \051;) 207. 335. T
X(WcWidgetCreation\050 appShell \051;) 207. 319. T
X(XtRealizeWidget\050 appShell \051;) 207. 303. T
X(XtMainLoop\050\051;) 207. 287. T
X(}) 189. 275. T
XU
X72. 102. 540. 145. C
X72. 102. 540. 145. R
X7 X
XV
X219. 106. 456. 129. R
X3 X
XV
X0 H
X0 X
XN
X214. 111. 450. 134. R
X7 X
XV
X0 X
XN
X4 F
X( *Foo.wcResFile:) 223. 120. T
X(FooResources) 367. 120. T
XU
XFMENDPAGE
X%%Page: "6" 6
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 6) 532.5 749. T
X162. 459. 486. 603. R
X7 X
XV
X1 H
X0 X
XN
X72. 72. 540. 720. R
X7 X
XV
X1 F
X0 X
X(Instead of invoking XtCreateWidget\050\051 for each widget, an application built ) 144. 711. T
X(using the Widget Creation Library simply invokes WcWidgetCreation\050\051, ) 144. 697. T
X(passing in the top level widget as the only argument.  The Widget Creation ) 144. 683. T
X(Library then queries the Xrm database for the Wc resources which specify the ) 144. 669. T
X(children of the top level widget.  For each child, the library queries the type ) 144. 655. T
X(\050class widget pointer, class name, or constructor function\051, creates the widget, ) 144. 641. T
X(and recursively, its child widgets.) 144. 627. T
X(Here is a simple resource file which implements a \324Hello World\325 application: a ) 144. 597. T
X(single button which, when pressed, causes the application to exit.  The name ) 144. 583. T
X(of the top level shell in this case is \324Mri.\325  The resultant interface is shown as ) 144. 569. T
X(well:) 144. 555. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(Note that the existence of the Wc resources in no way interferes with the ) 144. 432. T
X(widget\325s normal creation behavior.  The widgets get their resources from the ) 144. 418. T
X(Xrm database in exactly the same way the Widget Creation library makes its ) 144. 404. T
X(queries: resource values are queried by name.  Since the names of the Wc ) 144. 390. T
X(resources do not collide with widget resource names, the widgets do not see ) 144. 376. T
X(the existence of the Wc resources.) 144. 362. T
X5 F
X(Widget Creation Resources) 72. 322. T
X1 F
X(The following is the complete set of resources which are interpreted by the ) 144. 292. T
X(Widget Creation Library: ) 144. 278. T
X72. 72. 540. 720. C
XU
X72. 459. 540. 552. C
X72. 459. 540. 552. R
X7 X
XV
X233. 462. 530. 534. R
X3 X
XV
X0 H
X0 X
XN
X225. 470. 522. 542. R
X7 X
XV
X0 X
XN
X113 73 113. 73. 99. 466. 
X
X%%BeginBinary:  1930     
XBEGINBITMAP
X0
X04000400040004000400040004007F0
X222A222A222A222A222A222A222A4D0
X08000800080008000800080008007F0
X8292829282928292829282928292CD0
X08000800080008000800080008007Fy"
X224D0
X10011001100110011001100110017F0
X88A888A888A888A888A888A888A8FF#U$
X007FF8007E"9":"8$
X22BFEFF2127F0
X0875555535555555554D555540447E#u$
XA16AAAA100FF0
X0475555535555555554D555544087E#u$
X20EAAAA0A27F0
X0A75555535555555554D555542007E0
X80EA00002000000000080002A088FF$S%
X04757FFD44007E0
X226A6AAAAAAAAA9AAAAAAAA6A22A7F0
X0875555535555555554D555540007E0
X82EA6AAAAAAAA89AAAAAAAA6A292FF0
X0875555531455555554DFFD540007E0
X226A6AAAA88AAA9AAAAAAA26A2227F0
X107557FD301001557D4DD55540017E0
X88EA6EAAA808A89AE2AAAA26A0A8FF0
X0075555131515155554DD55540007E0
X22406C02A808A89AC2AAAA2402127F0
X087FD55531515155554DD557F0447E0
XA16A6AAAA080201AAAAAAA26A100FF0
X0475555535555555554D805544087E0
X20EA6AAAAAAAAA9AAAAAAAA6A0A27F0
X0A75555535555555554D555542007E0
X80EA40002000001000080006A088FF&8)
X0475000000000000000544007E$s%
X226A2AAAAEA22A7F$s%
X087515554D40007E$S%
X82EA2FCEA292FF$>%
X08751FCD40007E$>%
X226A2FCEA2227F$>%
X10751FCD40017E0
X88EA2DDFE79FFFDDFFF9FDCEA0A8FF'9'
X00751DDFF7DFFDFDCD40007E$>%
X226A2DCEA2127F0
X08751DD8F7DE3FDD8D3DE1CD40447F0
XA16A2C1777DDDFD574DDDDCEA10087%:(
X04401DD075FDDDCC04087F&<%
X20FFADD7F7CFF0A27F&8"9%
X0A751DD777C9CD42007F0
X80EA2DD8E38E3FDD8DF8E1CEA088A7$S%
X04751FCD44007F$>%
X226A2FCEA22A7F$>%
X08751FCD40007F$>%
X82EA2FCEA2929F$c%
X0875100D400028$>%
X226A200EA22207$S%
X10753FFD400105$>%
X88EA7FFEA0A8870
X0075555535555555554D5555400004#u$
X226AAAA212280
X0875555535555555554D555540447E#u$
XA16AAAA100920
X0475555535555555554D55554408280
X20E00000200000000008000000A27E#8":"8$
X0A4000000200660
X8088808880888088808880888088B90
X04000400040004000400040004007F0
X222A222A222A222A222A222A222A460
X08000800080008000800080008007F0
X8292829282928292829282928292FF0
X08000800080008000800080008007Fy"
X227F0
X1001100110011001100110011001060
X88A888A888A888A888A888A888A89Ci"
X7B
XENDBITMAP
X
X%%EndBinary
X4 F
X(Mri.wcChildren:) 234. 526. T
X(push) 378. 526. T
X(*push.wcClass:) 234. 510. T
X(xmPushButtonWidgetClass) 378. 510. T
X(*push.labelString:) 234. 494. T
X(Hello World) 378. 494. T
X(*push.activateCallback:) 234. 478. T
X(WcExitCB) 378. 478. T
XU
X72. 82. 540. 275. C
X72. 82. 540. 275. R
X7 X
XV
X162. 91. 495. 254. R
X3 X
XV
X0 H
X0 X
XN
X154. 99. 487. 262. R
X7 X
XV
X0 X
XN
X4 F
X(...widget.wcResFile:) 163. 248. T
X(resourceFileName ) 307. 248. T
X(...widget.wcClass:) 163. 232. T
X(classPointerName ) 307. 232. T
X(...widget.wcClassName:) 163. 216. T
X(className ) 307. 216. T
X(...widget.wcConstructor:) 163. 200. T
X(constructorFunctionName) 307. 200. T
X(...widget.wcCallback:) 163. 184. T
X(callback1\050args\051, \134 ) 307. 184. T
X(callback2\050args\051, ... ) 307. 172. T
X(...widget.wcPopups:) 163. 156. T
X(popupName1, popupName2, ... ) 307. 156. T
X(...widget.wcChildren:) 163. 140. T
X(childName1, childName2, ... ) 307. 140. T
X(...widget.wcTrace:) 163. 124. T
X(true/false \050default = false\051 ) 307. 124. T
X(...widget.wcManaged:) 163. 108. T
X(true/false \050default = true\051 ) 307. 108. T
XU
XFMENDPAGE
X%%Page: "5" 5
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 5) 532.5 749. T
X1 F
X(Table widget, and has much more behavior consists of only 265 lines of ) 144. 711. T
X(resources - no C code was required at all, as the resource file is interpreted by ) 144. 697. T
X(the Motif Resource Interpreter \050Mri\051.  A screendump of this demonstration ) 144. 683. T
X(appears below:) 144. 669. T
X72. 72. 540. 720. C
XU
X3 F
X0 X
X(Basically, How It Works) 72. 234. T
X1 F
X(The Widget Creation Library provides eight new resources and seven new ) 144. 203. T
X(string-to-resource type converts.  These resources and converters cooperate ) 144. 189. T
X(to allow the following to be specified in the Xrm resource database:) 144. 175. T
X(\245) 162. 153. T
X(the widget hierarchy, ) 198. 153. T
X(\245) 162. 135. T
X(widget types, and ) 198. 135. T
X(\245) 162. 117. T
X(bindings of widget callback lists and actions to application ) 198. 117. T
X(functions) 198. 103. T
X72. 72. 540. 720. C
X72. 266. 540. 666. C
X72. 266. 540. 666. R
X7 X
XV
X0 X
X1173 961 469.2 384.4 73. 270.6 
X
X%%BeginBinary:  56438    
XBEGINBITMAP
X5
XQ)A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A35
XQ)0408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408035
XQ)20A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A2275
XQ)0A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000F5
XQ)8088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088875
XQ)0400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400075
XQ)222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A275
XQ)08000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000F5
XQ)8292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292875
XQ)08000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000Fz"
XQ(22275
XQ)1001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001175
XQ)88A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A88Fj"
XQ(075
XQ)2212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212265
XQ)08440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440D5
XQ)A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A55
XQ)0408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408055
XQ)20A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A2255
XQ)0A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000D5
XQ)808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808885#Z$
X0401Q$840005#8"J"9$
X222BFEPKFE222A24&z(
X0801DDDDDCPKDDDCDDDDDC08000F'z(
X8293F77776F7PJ7776F77776029287&z(
X0801DDDDDCPKDDDCDDDDDC08000F'z(
X2223F77776F7PJ7776F77776222227&z(
X1001DDDDDCPKDDDCDDDDDC100117'j'
X88A9F4000080PK80003608A88F$Z%
X0001DDQ"DC000006'z*
X2213F57776F7PH77757776F77776221220&z(
X0845DDDDDCPKDDDCDDDD5C08440E'z2z*
XA101F57776F7O,776777777677777777070777777773776317O+77757776F777762100A7&z#r*z(
X0409DDDDDCO+DDC51DDD1C1045D01DDDDDDDD1O.DDDCDFFD5C040807'z"s*z*
X20A3F57776F7O*776277013267711777777773O,77757776FF777620A227&z5z)
X0A01DDDFFCO+DD4C04885DC440844511D891045D9984441C1801C0DO+DDDFDCDDD55C0A000E'z5z*
X8089F57766F7O*7746162677664667126770533077113317311331447O*77757776FF7776008887&z4z(
X0401DDDDCCO+DDC545C5DC441C51045D951045D81011D199119CO-DD5CDDD55C040006'z4z*
X222BF57006F7O*7765676776670673267715326771737373113314O+77757476FF7776222A27&z5z(
X0801DDDDDCO+DD4C545C5DC44CC51045D9D104519D111D199119CCDO,DDDCDDD55C08000F'z5z*
X8293F57776F7O*7744701017712100130771407073070604043000617O*77757776FF7776029287&z#z(
X0801DDDDDCO2DDDC5DO7DDDCD8055C08000D'z"z*
X2223F57776F7O17776O677757776F77776222227&z"z(
X1001DDDDDCO2DDD0O8DDDCDDDD5C100117'j*
X88A9F5000080PH01000080007608A88D$8"J"8'
X00010000PH00000040000006$z%
X2213FEQ"AAFF221223$z&
X0845DCQ!5554DC08440F%Z&
XA101F4BFQ FCF62100A3%J%
X0409DC7FQ!DC040806%J%
X20A3F4BFQ!F620A224%J%
X0A01DC7FQ!DC0A000F%J%
X8089F4BFQ!F6008883%J%
X0401DC7FQ!DC040006%J%
X222BF4BFQ!F6222A21%J%
X0801DC7FQ!DC08000B(9#J"8%
X8293F4BFFFFDDFFEEFPDDFF6029283'9$J":%
X0801DC7FFE0DE0FEEEPBDEDC08000F'9$J%
X2223F4BFFEFFEFFEFEPGF6222227(9$J)
X1001DC7FFEFBBCE1D87FPBF3BA7FFCDC100117%8#8$J)
X88A9F4BFBB7FDDDDFFPBEDB9BFFCF608A88F(8"J$8%
X0001DC7FFC3BB7C3PD80DDBBDC000007-J$8%
X2213F4BFFDFBB0FFFFDFBDDBPBBDC3B7F6221227(9#J)
X0845DC7FFDF777BBBBPCDF777FFCDC08440F%<"J%
XA101F4BFB3PHF62100A7%8"8$J)
X0409DC7F78C1CBB8PCE370FFFCDC040807(8$J$8%
X20A3F4BFFFFFFFFFFFFFPBFFFFEFF620A227%J%
X0A01DC7FQ!DC0A000F%J"8%
X8089F4BFPLFFF6008887%J%
X0401DC7FQ!DC040006%J%
X222BF4BFQ!F6222A25%J%
X0801DC7FQ!DC08000D%J%
X8293F4BFQ!F6029285%J%
X0801DC7FQ!DC08000D%J%
X2223F4BFQ!F6222225%j%
X1001DC40Q!DC100115%J%
X88A9F480Q!F608A88D$Z%
X0001DCQ"DC000004$J%
X2213F4Q"F6221227$J%
X0845DCQ"DC08440F$J%
XA101F4Q"F62100A7$J%
X0409DCQ"DC040807$J%
X20A3F4Q"F620A227$J%
X0A01DCQ"DC0A000F$J"C#:$@%?#?%;&J%
X8089F4K01F80FF01E03E07FFF80C07FF80FFF01FE03FFFE03:F6008886$J%=#H%A#8(<)J%
X0401DCGFC00000380018000007FFC01003FFF00FFC03FFC00FFF03F81FC1E>DC040000$J"9"=#;"<":">";%B#<#J%
X222BF4GF803007F1F070081F0007FFC1FF03E07=F6222A26$J"C"A">%8"8":"8";":"<"I%
X0801DCO$003EC0C0001FF8FE80E3E0F807E3DC08000F$J"?":"<">"9$;'8$8$8"9$?#I%
X8293F4J063FF03CFFFFFF0100000FF81F7F7F807FFE07F07D01F87CFE07F6029287$J%=#;#:$:$A(9"9':&<"J%
X0801DCGFFFC0FFE03E0FFFFE03FFFFF81FFFE01F00FF03FFF00FC07FFFFC0FFF07FFFFFFCFC4DC08000F$J%H"8"J%
X2223F4OFFC07F8073EFF>F6222226$J"8"J"=":&:">";"J%
X1001DCHF807;0103F80FFC07E07E80E0?DC100117$J'90<&8"9"8%:);0F%
X88A9F4LC3FFF03FFFFEE07FC0F8703FFC03FFF8007C0FFF81000F80F87FC01F8003FFFCF00FF000F03E000FFC0FFF000FFE001FFC0FF000FF007FF608A88E$J(848$8$8%9"9+:'8"8&H%
X0001DCI1FFC0781FFC00F07E07F801F80F0E03FF000FFE000780FFC007F03FFFC81E03E003FFFF000107C00FFC003E000E03C3C01E1F80FFCF8F003E000FCDC000007$J&9'8%9"<"9'8"="8#@"8"8"8#8$F%
X2213F4K0600FF0007C07E000F80E0C0007FC0F8F8C01E03FC001F3F780001C1F8F0C001F000FFF6221227$J$;#8#8"8"9$:&8"9"?#9"<$8"8%8"I%
X0845DCK0C00FE80FC81C08080E000FFF0001F8180F8E040FE013801C3F0E0003F8001DC08440F$J":#9%8-8"8#8&<#8/80G%
XA101F4HF0FC0E0001F81C81E07F01C03F03C0781FC038FEE078001E07F038C07F303040FC0700F80FE07F01FFFFF883F81FE0780FC0F03F0381F80FE03FF62100A5$J%8&8-;&8#8#;"8%>$8(J%
X0409DCK0800F81EFC0003F03C01E07E03E03E07C0F81F80FEC0F81F0210E078C07FF8C0F80F80308187C0F81F81F03E076DC040807$J'92;#8#8#<"9%8%9'8)H%
X20A3F4JF80180F83C0F07F0781F011FC07E07E03C0FC0F01F81FF81F0301CF03FFF2181F81F1FC07F03108107F01F8103E03E0F03F81FF0F620A227$J(9*9"8":":#8$9#=%?"9"8&8"G%
X0A01DCI3FF81381F0381F3FE0703F023FC07C0F8001070070C0E07FF80FF03F80F00FF0C03C0E07F01FDC0A000D$J"8#8(:$8"<'8#;":"9"9":#9)8#G%
X8089F4K03003F0FFFE0007F007F781F000303E03F00F03C00FF8003817E018003E01E07C07C000FF807F6008886$J"8&:(9"8":"9$8$:#=";"<&8%8#G%
X0401DCHE00701E0007FC000FF00FFC0F81E3EFCC03F010F8001F01FE0FE1FF03F03C08078001FFC03DC040003$J"8%9$:%>(8"<"8$9$8"9"9"8$8&G%
X222BF4K0F03FFFFF807FF01C0701E01FE03803E03E07C0F81F0780701F03F07033E3C0700FFF03FFF01F6222A27$J'8"8&9%?"9&8$<"8"8">"8(9"G%
X0801DCJF01F03E07FF71FFFEE03FF80F01C81E090780F81FFDF3FE03F030380E0903C0620781FFD81DC08000B$J":#;#;$:"9"8/;"8$?"9$8&H%
X8293F4I7F3FE77FCE80F018FD0F003E07C0F80F80FF9FFFE03FC07F0F3E03E03F103C040FF9E03FBFF6029286$J"8#;#:&8#;&9#8%=':":-G%
X0801DCK3E1F073E0E0701F0010101F100207E07817C1F0F00FF011C07E01F80FC0700203C0040F807C1E01F8F01DC08000C$J";#;+8$8"9.<"8&=&8(H%
X2223F4HC0000F001E07FF81F80003F0037E0003F8607E0003F81F80003FFFF000011F000FE003817FE07E0060C0F80003E00300F6222227$J"9"8";)>%8"9&8*8"9";&9$G%
X1001DCMF0F0E0FC000FF00703E07FE07C0007C0F80007FF03E0F83F03F0003FE0070F0FE07C01C0FC070003DC100113$B#J'8&8+;$8+;*=-8"G%
X88A9F4FE3F<E03E07F8001F3FFFF0003C01FE001FF80F03C07F80FF01C00FF01FE0007FFFFC000FFFFE07F8007FF00701FFC07F01E07E0380FE0007F007F608A88E$B#J"9$:$9&9#9$9"8(>&A-G%
X0001DCFF7F;FFFE01FFFC03FCFF80FFFC1EE01F1FFF873FF807FFFFFF807FFE03FFF80F83C07F0780FF807FF80FE01FDC000001$JR8Z8W9$9U"9U"RG%
X2213F4H3FFFFFEF881F6221223$C"J$J%
X0845DC73P'FBFF018DC08440B$C"J"C"@#J%
XA101F46DO<071FF87E9F62100A7$C"J#J%
X0409DC71P(00038DC040807$C"J$J%
X20A3F46DP'FC00078F620A227$B#J"C"C"J%
X0A01DCFE20O;FCF01F8DC0A000F$B#J"J%
X8089F4FFFFP)7F8F6008887$J#B#@$J%
X0401DCOIFFFFFFFFFFFFFF8DC040007$J%
X222BF4Q"F6222A27$J%
X0801DCQ"DC08000F$8"j"J%
X8293F4F050FP7F6029287$8"Z"J%
X0801DCF75EFP7DC08000F$J%
X2223F4Q"F6222227$J%
X1001DCQ"DC100117$J%
X88A9F4Q"F608A88E$J"J%
X0001DC7FDP8DC000005$J"J%
X2213F47F9P8F6221225$J"J%
X0845DC7FDP8DC08440D$J%
XA101F4Q"F62100A5$J%
X0409DCQ"DC040805$J%
X20A3F4Q"F620A225$J%
X0A01DCQ"DC0A000D$J"J%
X8089F47F8P8F6008884$J"J%
X0401DC7FFP8DC040007$J%
X222BF4Q"F6222A27$J%
X0801DCQ"DC08000F$J%
X8293F4Q"F6029287$J%
X0801DCQ"DC08000F$J%
X2223F4Q"F6222227$J%
X1001DCQ"DC100116$J%
X88A9F4Q"F608A888$J%
X0001DCQ"DC000006$J%
X2213F4Q"F6221227$J%
X0845DCQ"DC08440F$J%
XA101F4Q"F62100A7$J%
X0409DCQ"DC040806$J%
X20A3F4Q"F620A227$J%
X0A01DCQ"DC0A000E$J%
X8089F4Q"F6008887$J%
X0401DCQ"DC040007$J%
X222BF4Q"F6222A27$J%
X0801DCQ"DC08000D$J%
X8293F4Q"F6029287$J%
X0801DCQ"DC08000F$J%
X2223F4Q"F6222225$J%
X1001DCQ"DC100116$J%
X88A9F4Q"F608A88B$J%
X0001DCQ"DC000007$J%
X2213F4Q"F6221223$J%
X0845DCQ"DC08440E$J%
XA101F4Q"F62100A4$J%
X0409DCQ"DC040807$J%
X20A3F4Q"F620A223$J%
X0A01DCQ"DC0A000E$J%
X8089F4Q"F6008881$J%
X0401DCQ"DC040003$J%
X222BF4Q"F6222A23$J%
X0801DCQ"DC08000F$J%
X8293F4Q"F6029287$J%
X0801DCQ"DC08000F$J%
X2223F4Q"F6222227$J%
X1001DCQ"DC100117$J%
X88A9F4Q"F608A88F$J%
X0001DCQ"DC000007$J%
X2213F4Q"F6221227$8"j"J%
X0845DCF050FP7DC08440F$8"z"J%
XA101F4F25AAAFP7F62100A7$8"Z"J%
X0409DCF75EFP7DC040807$J%
X20A3F4Q"F620A227$J%
X0A01DCQ"DC0A000E$J%
X8089F4Q"F6008885$J%
X0401DCQ"DC040005$J%
X222BF4Q"F6222A25$J%
X0801DCQ"DC08000D$J%
X8293F4Q"F6029285$J%
X0801DCQ"DC08000D$J%
X2223F4Q"F6222225$J%
X1001DCQ"DC100114$J%
X88A9F4Q"F608A88F$J%
X0001DCQ"DC000007$J'J%
X2213F4=555555555557P-F6221227$J(J%
X0845DC<FEAAAAAAAAAAA7P-DC08440F$J(J%
XA101F4<FF7FFFFFFFFFE7P-F62100A7$J#J%
X0409DC<FEFFP2DC040807$J#J%
X20A3F4<FF7FP2F620A226$J#J%
X0A01DC<FEFFP2DC0A0008$J#J%
X8089F4<FF7FP2F6008886$J#J%
X0401DC<FEFFP2DC040007$J%J%
X222BF4<FF7FFF9FP0F6222A27$J%J%
X0801DC<FEFFFFDFP0DC08000F$J#J%
X8293F4<FF7FP2F6029286$J%J%
X0801DC<FEF9671FP0DC08000F$J%J%
X2223F4<FF7CDADFP0F6222226$J$J%
X1001DC<FEFDC2P1DC100117$J$J%
X88A9F4<FF7DDEP1F608A88F$J%J%
X0001DC<FEF8E30FP0DC000007$J%J%
X2213F4<FF7FFFFFP0F6221225$J#J%
X0845DC<FEFFP2DC08440F$J#J%
XA101F4<FF7FP2F62100A7$J#J%
X0409DC<FEFFP2DC040805$J#J%
X20A3F4<FF7FP2F620A226$J#J%
X0A01DC<FEFFP2DC0A000B$J#J%
X8089F4<FF7FP2F6008887$J#J%
X0401DC<FEFFP2DC040003$J#J%
X222BF4<FF7FP2F6222A26$J#J%
X0801DC<FEFFP2DC08000C$J#J%
X8293F4<FF7FP2F6029287$9z"9#J%
X0801DC5556FFEFFP2DC08000B$8"z:#J%
X2223F4F65AAFF7FP2F6222226$8#Z":#J%
X1001DCF77F3FEFEFFP2DC100111$8#J#J%
X88A9F4F6FF8FF7FP2F608A88B$8#J'J%
X0001DCF77F8FEFCCB3A7867P.DC000003$8#J'J%
X2213F4F6FF8FF7B66DDB6DBP.F6221227$8#;%E'J%
X0845DCF77FF33FFC3FFEFB6F1DB6C3P.DC08440F$8#;%8"B'J%
XA101F4F6FFFB7FFBBFFDFF7B6EDDB9DFP.F62100A7$8#>"E'J%
X0409DCF77FFFFEFCC6089863P.DC040807$8#;*@'J%
X20A3F4F6FFFCE938F29CE598CCBFFF7FFFFFF77FP.F620A227$8#<)@#8#J%
X0A01DCF77FF6DF2D6B736DB67FFEFFF8FFP.DC0A000F$8#;*@#8":"J"D%
X8089F4F6FFFB76DFA16C778DB6FFFF7FFF88OI88F6008887$8#=&B#="J"D%
X0401DCF77FDBAF6B776DFEFFDDOIDDDC040007$8#;*@#J%
X222BF4F6FFF32248711823064C7FFF7FP2F6222A27$8#;*@#>"J"C%
X0801DCF77FFFFFFFFF7FFFFFFFFFFEFFCFOICFDC08000F$8#>#D#>"J#C%
X8293F4F6FFFE3FFF7FB7OHEBB7F6029287$8#>#D#>"J"C%
X0801DCF77FFFFFFEFFC7OIC7DC08000F$8#J#>"J#C%
X2223F4F6FF8FF7FB7OHF7B7F6222226$8"j:#=#J"C%
X1001DCF75FEFF8883OI83DC100115$8"J#=#J#C%
X88A9F4F69FF7FFFFFOHFFFFF608A88D$8"Z"9#J%
X0001DCF75EFFEFFP2DC000005$J%J%
X2213F4<FF7FFF33P0F6221225$8"j"9%J%
X0845DCF050FFEFFFFBBP0DC08440D$J':"j"J"j"8%
XA101F4800000000017FE0007O0F860FF62100A5$8"Z,Z"J"Z"8%
X0409DCF75E7FFFFFFFEF113BB9367E70F7O0FB6EFDC040805$J'J%
X20A3F4<FF7BADBB6AAFP.F620A224$J$J%
X0A01DC<FEFD61P1DC0A000F$J'J%
X8089F4<FF7D6FBB6DDFP.F6008887$J":&G#J"9%
X0401DC7F9FEFEF1119DFC77OFB9DC040007$J":'F"J"9%
X222BF47F6FF7EFFFFFFFFFBOG36F6222A27$J#J"J"9%
X0801DC<FEF95F7OFBEDC08000F$J":#J"J"9%
X8293F47FEFF7F4F8OGB9F6029287$J":#J#J"9%
X0801DC7FDFEFF4FB77OFBEDC08000E$J":#J"9%
X2223F47FBFF7FP.B6F6222220$J":#J%
X1001DC7F7FEFFP2DC100116$J":#J#J"9%
X88A9F47F0FF7F4FCF7OF19F608A88F$J":#J"J"9%
X0001DC7FFFEFF4FFOGFFDC000007$J#J%
X2213F4<FF7FP2F6221227$J#J%
X0845DC<FEFFP2DC08440E$J#J%
XA101F4<FF7FP2F62100A7$J#J%
X0409DC<FEFFP2DC040806$J#J%
X20A3F4<FF7FP2F620A227$J#J%
X0A01DC<FEFFP2DC0A000F$J#J%
X8089F4<FF7FP2F6008887$J&J%
X0401DC<FEFC259CD3P/DC040005$J&J%
X222BF4<FF7B736B6DP/F6222A27$J%J%
X0801DC<FEFB7708P0DC08000F$J&J%
X8293F4<FF7CF77BEDP/F6029285$J&J%
X0801DC<FEFC238C44P/DC08000E$J&J%
X2223F4<FF7BBFFFFFP/F6222223$J$J"z"8%
X1001DC<FEFC7FOEFA6AAAFDC100117$J$J"z"8%
X88A9F4<FF7FFFOEF96554FF608A88B$8"j"9#J"Z"8%
X0001DCF6567FEFFOFFA68FDC000006$J"9#J"J%
X2213F48E7FF7FOFF99F6221224$9"Z"9#J"J%
X0845DC7F467FEFFOFFA9DC08440F$C"?#9*J"J%
XA101F4EFFEE7FF555555555542AABFO?F99F62100A3$C"?#9*J"J%
X0409DCF7FF67FEAAAAAAAAAA85555FO?FA9DC040806$C"?#9*J"J%
X20A3F4E3FEE7FF5FFFFFFFFF87FF9FO?F99F620A221$C"?#9#J"J%
X0A01DCD3FF67FEBFOFFA9DC0A000B$C"?#9#J"J%
X8089F4A1FEE7FF5FOFF99F6008883$C"?#9#J"J%
X0401DCC1FF67FEBFOFFA9DC040007$C"?)9#J"J%
X222BF480FEE7FFF3FFFF53CF82ABO@F99F6222A27$C"?)9#J"J%
X0801DC40FF67FFFBFFFEBBEF8553O@FA9DC08000F$B$>#9#:#J"J%
X8293F4FE807FFEE7FF5B87F3O@F99F6029287$B#?+J"J%
X0801DCFF00FF67E33B997EB8EDB9F3OCFA9DC08000F$B$>+J"J%
X2223F4FE003FFEE7DADB6CFF5B6DB6C3OCF99F6222227$B"@.J"J%
X1001DCFDFF67DEDB6DFEBB6DB307FF8003O@FA9DC100117$B$>$8%J"J%
X88A9F4FA001FFEE7DAFF5B6DBCODF99F608A88F$B"@.J"J%
X0001DCFCFF67E73198FEB8C6700FFF87FFO@FA9DC000007$B$>*J"J%
X2213F4F8000FFEE7FFFFFFFF5FFFC0ODF99F6221227$B"@#9&J"J%
X0845DCF4FF67FEBFFFFC1FOCFA9DC08440F$B$>#9%J"J%
XA101F4E80007FEE7FF5FFFF8ODF99F62100A7$B"@#9&J"J%
X0409DCF0FF67FEBFFFF13FOCFA9DC040806$B$>#9*J"J%
X20A3F4E00003FEE7FF400023200000001FO?F99F620A225$B"@#9&J"J%
X0A01DCD0FF67FE80004540OCFA9DC0A000D$B$>#9*J$9%F%
X8089F4A00001FEE7FF7FFF8F7FFFE7FFFFO?F9FFE003FFE7CFF6008885$B"@#9&J%8%F%
X0401DCC0FF67FEFFFF1FFFOCFAFFF77FBBFFF39FDC040005$B$>#9%J";"I%
X222BF4800000FEE7FF7FFFBFODF9ABF6222A25$B"@#9%J"8*D%
X0801DC40FF67FEFFFFFFODFA4B38C78F32F55CD3B7DC08000D$A#8"=#9#J,E%
X8293F4FE807FFEE7FF7FOFF9FFF0E6D7BFAED9F55B6DF6029285$A#@#9#J+F%
X0801DCFF00FF67FEFFOFFAFFF7EE19CFBEDBF558DC08000C$A"9"=#9#8"J"9#8$E%
X2223F4FE3FFEE7FF7FCFOCF9FEF7F6DBEDF6222227$A"A#9#8"J-D%
X1001DCFDFF67FEFFEFOCFAFFE3C7118F1F31E28C44CBDC100117$A"9"=#9#J"VD%
X88A9F4FA1FFEE7FF7FOFF9F608A88F$A"A#9'J"J%
X0001DCFCFF67FEF4DB24EE7FOBFA9DC000007$A"9"=#9'J"J%
X2213F4F80FFEE7FF7B5B9B6DBFOBF99F6221227$A"A#9'J"J%
X0845DCF4FF67FEFB5BBB6C3FOBFA9DC08440F$A"9"=#9#8#J"J%
XA101F4E807FEE7FF7B6DFFOBF99F62100A6$A"A#9'J"J%
X0409DCF0FF67FEF8E518C63FOBFA9DC040800$A"9"=#9'J"J%
X20A3F4E003FEE7FF7BFFFBFFFFOBF99F620A226$A"A#9%J"J%
X0A01DCD0FF67FEF1FFF1ODFA9DC0A000F$A"9"=#9%J"J%
X8089F4A001FEE7FF7FFFFFODF99F6008887$A"A#9#J"J%
X0401DCC0FF67FEFFOFFA9DC040007$A"9"=#9#J"J%
X222BF48000FEE7FF7FOFF99F6222A26$A"A#9#J"J%
X0801DC40FF67FEFFOFFA9DC08000F$@#:"<#9"`"J"J%
X8293F4FE807FFEE7FF07OAF99F6029286$@#A#9"J"J%
X0801DCFF00FF67FEOGFA9DC08000F$@";"<#9RJ"J%
X2223F4FE3FFEE7OAF99F6222227$@"B#J"J%
X1001DCFDFF67OKFA9DC100117$@";"<#J"J%
X88A9F4FA1FFEE7OKF99F608A88D$@"B#J"J%
X0001DCFCFF67OKFA9DC000007$@";"<#J"J%
X2213F4F80FFEE7OKF99F6221227$@"B#J"J%
X0845DCF0FF67OKFA9DC08440D$@R<#J"J%
XA101F4FEE7OKF99F62100A6$9z"J"J%
X0409DC55567OKFA9DC040803$9z"J"J%
X20A3F45AAE7OKF99F620A227$8"ZJ"j"8%
X0A01DCF75OLFA60FDC0A000B$J"J%
X8089F4P6F89F6008886$J"Z"8%
X0401DCP6FB6EFDC040004$J%
X222BF4Q"F6222A27$J%
X0801DCQ"DC08000B$J%
X8293F4Q"F6029286$J%
X0801DCQ"DC080009$J%
X2223F4Q"F6222223$J%
X1001DCQ"DC100113$J%
X88A9F4Q"F608A88F$J%
X0001DCQ"DC000007$J%
X2213F4Q"F6221227$J%
X0845DCQ"DC08440F$J%
XA101F4Q"F62100A7$9z"z"Jz9%
X0409DC55567:5577O16AADC040807$8"z"z"Jz"8%
X20A3F4F65AA66:AAB7O16556FF620A227$8#Z$Z"J"Z"9%
X0A01DCF77F3FE677F937O1BF4FEDC0A000F$8#J#J"J%
X8089F4F6FF466FFOK7F8F6008887$8#J#J"J%
X0401DCF77F4677FOKBF8DC040007$8#J#J"J%
X222BF4F6FF466FFOK7F8F6222A27$8#:%8#>#=$9#J":'8#@%
X0801DCF77FF33FFF7FF07F677FCCFFF8E7CFO<BFCCFFE0FF33CFCF9FDC08000F$8#:#:$=#=)J":'8#@%
X8293F4F6FFFB7FFBBFB766FFEDFFF77F77FFF39FO<7FEDFFF77FBBEFE73FF6029286$8#<#B#?$J"J%
X0801DCF77FFEBF677FEFBF7FO?BF8DC08000D$8#:+<#=+J":->%
X2223F4F6FFFCE93EB94B26C86D033466FFF3A4EF922734F55CD3B7O:7FF3A4F75BBB8E4D89EAB9A76FF6222225$8#;+;#>)J";+?%
X1001DCF77FF6DDDCE6D55BADB6DB7F677FDB6FAD76DB755B6DO;BFDB70DBBB6DAAB6EAB6DBDC100115$8#:&A#="<"J#J#A":$<"@%
X88A9F4F6FFFB76DC1DEE66FFED58>1107=E2237FEDDB77B0F608A88D$8#<&?#?#8$J#J#A"@%@%
X0001DCF77FDDDDEEDBBB677F776D76DBED=BBB7=F777BFB776EDB7DC000005$8#:,;#=+J":->%
X2213F4F6FFF3224888C73BB072C9313F66FFCC8938E38331228C44CBO:7FCC8923E51186776245188997F6221225$8#:V;#=%QJ"J"@":W>%
X0845DCF77F677FFFFFFFEF=B1?3FBFDC08440D$8#J#@"J"J#@"J%
XA101F4F6FF466FFC7CB6>AEDF7F8F62100A4$8#J#@"J#@"J%
X0409DCF77F4677FFFO4AF1FBF8DC040807$8#J#J#@"J%
X20A3F4F6FF466FFO?DEDF7F8F620A227$8"j"jJ#J$@"j9%
X0A01DCF7567:41111=E3DE0F805DC0A000F$8"J"J#J$@"J%
X8089F4F6566O FFFF=FFFFFF008F6008887$8"Z"Z"JZ"8%
X0401DCF75E7:F7O16EFDC040007$J%
X222BF4Q"F6222A27$8"j"J"j"8%
X0801DCF0O"07O0F860FDC08000E$JjJ%
X8293F4O%O29F6029280$8"Z"Z"Z"Z"Z"8%
X0801DCF75E7:F3HE75F36EFDC08000E$J%
X2223F4Q"F6222227$J%
X1001DCQ"DC100117$J%
X88A9F4Q"F608A88F$J"J#J"J"J"9%
X0001DC7F9:F873GB95DE6BEDC000006$J"J"J"J"J"9%
X2213F47F6:FBH3659C63CF6221227$J"J#J"J"J"9%
X0845DC7FE:FEF3GB65DE6BADC08440E$J"J%
XA101F47F9P8F62100A7$J"J"9%
X0409DC7FEP4B6DC040807$J"J"J"9%
!STUFFY!FUNK!
echo " "
echo "End of kit 4 (of 35)"
cat /dev/null >kit4isdone
run=''
config=''
for iskit in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35; do
    if test -f kit${iskit}isdone; then
	run="$run $iskit"
    else
	todo="$todo $iskit"
    fi
done
case $todo in
    '')
	echo "You have run all your kits.  Please read README."
	for combo in `find . -name '*:AA' -print`; do
	    if test -f "$combo"; then
		realfile=`echo $combo | sed 's/:AA$//'`
		cat $realfile:[A-Z][A-Z] >$realfile
		rm -rf $realfile:[A-Z][A-Z]
	    fi
	done
	rm -rf kit*isdone
	chmod ugo+x test*
	;;
    *)  echo "You have run$run."
	echo "You still need to run$todo."
	;;
esac
: Someone might mail this, so...
exit

--
dan
----------------------------------------------------
O'Reilly && Associates   argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.