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.