[comp.sources.x] v11i030: wcl - Widget Creation Library, Part18/35

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

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

#! /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 18 (of 35).  If kit 18 is complete, the line"
echo '"'"End of kit 18 (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:AA
sed >Doc/Wcl.PS:AA <<'!STUFFY!FUNK!' -e 's/X//'
X%!
X%%Pages: (atend)
X%%DocumentFonts: (atend)
X%%EndComments
X%
X% Frame Maker PostScript Prolog 1.3, for use with Maker 1.3
X% Copyright (c) 1986-1988 by Frame Technology, Inc.  All rights reserved.
X%
X% Known Problems:
X%	Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
X/FMversion (1.2) def 
X/FrameDict 123 dict def 
X% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
XFrameDict /tmprangecheck errordict /rangecheck get put 
Xerrordict /rangecheck {FrameDict /bug true put} put 
XFrameDict /bug false put 
Xmark 
X% Some PS machines read past the CR, so keep the following 3 lines together!
Xcurrentfile 5 string readline
X00
X0000000000
Xcleartomark 
Xerrordict /rangecheck FrameDict /tmprangecheck get put 
XFrameDict /bug get { 
X	/readline {
X		/gstring exch def
X		/gfile exch def
X		/gindex 0 def
X		{
X			gfile read pop 
X			dup 10 eq {exit} if 
X			dup 13 eq {exit} if 
X			gstring exch gindex exch put 
X			/gindex gindex 1 add def 
X		} loop
X		pop 
X		gstring 0 gindex getinterval true 
X		} def
X	} if
X/FMVERSION {
X	FMversion ne {
X		/Times-Roman findfont 18 scalefont setfont
X		100 100 moveto
X		(Maker version does not match postscript_prolog!)
X		dup =
X		show showpage
X		} if
X	} def 
X/FMLOCAL {
X	FrameDict begin
X	0 def 
X	end 
X	} def 
X	/gstring FMLOCAL
X	/gfile FMLOCAL
X	/gindex FMLOCAL
X	/landscape FMLOCAL
X	/docheight FMLOCAL
X	/docwidth FMLOCAL
X	/yscale FMLOCAL
X	/xscale FMLOCAL
X	/orgxfer FMLOCAL
X	/orgproc FMLOCAL
X	/organgle FMLOCAL
X	/orgfreq FMLOCAL
X/FMDOCUMENT {
X	array /FMfonts exch def
X	/#copies exch def
X	FrameDict begin
X	0 ne /landscape exch def 
X	/docheight exch def
X	/docwidth exch def
X	/yscale exch def
X	/xscale exch def
X	currenttransfer cvlit /orgxfer exch def
X	currentscreen cvlit /orgproc exch def
X		/organgle exch def /orgfreq exch def
X	end 
X	} def 
X	/pagesave FMLOCAL
X	/orgmatrix FMLOCAL
X/FMBEGINPAGE {
X	FrameDict begin 
X	/pagesave save def
X	
X	2 setlinecap
X	xscale yscale scale
X	landscape {
X		90 rotate
X		0 docheight neg translate
X		/fillprocs /fillprocs90 load store
X		}
X		{/fillprocs /fillprocs0 load store}
X		ifelse
X	/orgmatrix matrix def
X	gsave 
X	} def 
X/FMENDPAGE {
X	grestore 
X	pagesave restore
X	end 
X	showpage
X	} def 
X	/fontname FMLOCAL
X	/fontscale FMLOCAL
X	/fontnum FMLOCAL
X	/fontdict FMLOCAL
X/FMDEFINEFONT {
X	FrameDict begin
X	/fontname exch def
X	/fontscale exch def
X	/fontnum exch def
X	/fontdict fontname findfont fontscale scalefont def
X	fontdict /Encoding get StandardEncoding eq
X	{
X		fontdict DiacriticEncode 
X		/fontdict exch def
X	} {
X		fontdict NonDiacriticEncode
X		/fontdict exch def
X	} ifelse
X	FMfonts fontnum
X		fontnum fontdict definefont
X	put
X	end 
X	} def 
X/FMLINEWIDTHS { 
X	FrameDict begin
X	dup array /FMlinewidths exch def 
X	1 sub -1 0 {exch FMlinewidths 3 1 roll lnormalize put} for
X	end 
X	} def 
X/FMNORMALIZEGRAPHICS { 
X	newpath
X	0.0 0.0 moveto
X	1 setlinewidth
X	0 setlinecap
X	0 setgray
X	} bind def
X/FMBEGINEPSF {
X	end 
X	/FMEPSF save def
X	/showpage {} def 
X	FMNORMALIZEGRAPHICS
X	[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall 
X	fx fy translate 
X	fw urx llx sub div fh ury lly sub div scale 
X	llx neg lly neg translate 
X	} bind def
X 
X/FMENDEPSF {
X	FMEPSF restore
X	FrameDict begin 
X	} bind def
X 
XFrameDict begin 
X/savematrix {
X	orgmatrix currentmatrix pop
X	} bind def
X/restorematrix {
X	orgmatrix setmatrix
X	} bind def
X/dmatrix matrix def
X/dpi	72 0 dmatrix defaultmatrix dtransform
X	dup mul exch   dup mul add   sqrt
Xdef
X/max	{2 copy lt {exch} if pop} bind def
X/min	{2 copy gt {exch} if pop} bind def
X/DiacriticEncoding [
X/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
X/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
X/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
X/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
X/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
X/numbersign /dollar /percent /ampersand /quotesingle /parenleft
X/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
X/two /three /four /five /six /seven /eight /nine /colon /semicolon
X/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
X/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
X/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
X/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
X/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
X/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
X/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
X/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
X/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
X/udieresis /dagger /.notdef /cent /sterling /section /bullet
X/paragraph /germandbls /registered /copyright /trademark /acute
X/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
X/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
X/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
X/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
X/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
X/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
X/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
X/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
X/periodcentered /quotesinglbase /quotedblbase /perthousand
X/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
X/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
X/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
X/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
X] def
X	/basefontdict FMLOCAL
X	/newfontdict FMLOCAL
X/DiacriticEncode {
X	/basefontdict exch def
X	/newfontdict basefontdict maxlength dict def
X	basefontdict
X	{exch dup /FID ne
X		{dup /Encoding eq
X			{exch pop DiacriticEncoding}
X			{exch}
X			ifelse
X			newfontdict 3 1 roll put
X			}
X		{pop pop}
X		ifelse
X		} forall
X	newfontdict
X	} bind def
X/NonDiacriticEncode {
X	/basefontdict exch def
X	/newfontdict basefontdict maxlength dict def
X	basefontdict
X	{exch dup /FID ne
X		{exch newfontdict 3 1 roll put}
X		{pop pop}
X		ifelse
X		} forall
X	newfontdict
X	} bind def
X	/freq FMLOCAL
X	/bwidth FMLOCAL
X	/bpside FMLOCAL
X	/bstring FMLOCAL
X	/onbits FMLOCAL
X	/offbits FMLOCAL
X	/xindex FMLOCAL
X	/yindex FMLOCAL
X	/x FMLOCAL
X	/y FMLOCAL
X/setpattern {
X	 /freq    exch def
X	 /bwidth  exch def
X	 /bpside  exch def
X	 /bstring exch def
X	 /onbits 0 def  /offbits 0 def
X	 freq 0 {/y exch def
X		 /x exch def
X		 /xindex x 1 add 2 div bpside mul cvi def
X		 /yindex y 1 add 2 div bpside mul cvi def
X		 bstring yindex bwidth mul xindex 8 idiv add get
X		 1 7 xindex 8 mod sub bitshift and 0 ne
X		 {/onbits  onbits  1 add def 1}
X		 {/offbits offbits 1 add def 0}
X		 ifelse
X		}
X		setscreen
X	 {} settransfer
X	 offbits offbits onbits add div setgray
X	} bind def
X/grayness {
X	setgray
X	orgxfer cvx settransfer
X	orgfreq organgle orgproc cvx setscreen
X	} bind def
X/normalize {
X	transform cvi exch cvi exch itransform
X	} bind def
X/dnormalize {
X	dtransform cvi exch cvi exch idtransform
X	} bind def
X/lnormalize { 
X	0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
X	} bind def
X/fillprocs0
X	[{0.00 grayness}
X	 {0.10 grayness}
X	 {0.30 grayness}
X	 {0.50 grayness} 
X	 {0.70 grayness}
X	 {0.90 grayness}
X	 {0.97 grayness} 
X	 {1.00 grayness} 
X	 {<0F1E3C78F0E1C387> 8 1 dpi 16 div setpattern} 
X	 {<0F87C3E1F0783C1E> 8 1 dpi 16 div setpattern} 
X	 {<CCCCCCCCCCCCCCCC> 8 1 dpi 16 div setpattern} 
X	 {<FFFF0000FFFF0000> 8 1 dpi 16 div setpattern} 
X	 {<8142241818244281> 8 1 dpi 16 div setpattern} 
X	 {<03060C183060C081> 8 1 dpi 16 div setpattern} 
X	 {<8040201008040201> 8 1 dpi 16 div setpattern} 
X	 {}
X	 {1.00 grayness}
X	 {0.90 grayness}
X	 {0.70 grayness}
X	 {0.50 grayness} 
X	 {0.30 grayness}
X	 {0.10 grayness}
X	 {0.03 grayness} 
X	 {0.00 grayness} 
X	 {<F0E1C3870F1E3C78> 8 1 dpi 16 div setpattern} 
X	 {<F0783C1E0F87C3E1> 8 1 dpi 16 div setpattern} 
X	 {<3333333333333333> 8 1 dpi 16 div setpattern} 
X	 {<0000FFFF0000FFFF> 8 1 dpi 16 div setpattern} 
X	 {<7EBDDBE7E7DBBD7E> 8 1 dpi 16 div setpattern} 
X	 {<FCF9F3E7CF9F3F7E> 8 1 dpi 16 div setpattern} 
X	 {<7FBFDFEFF7FBFDFE> 8 1 dpi 16 div setpattern} 
X	 {}
X	] def
X/fillprocs90
X	 [{0.00 grayness}
X	 {0.10 grayness}
X	 {0.30 grayness}
X	 {0.50 grayness}
X	 {0.70 grayness}
X	 {0.90 grayness}
X	 {0.97 grayness}
X	 {1.00 grayness}
X	 {<87c3e1f0783c1e0f> 8 1 dpi 16 div setpattern}
X	 {<f0e1c3870f1e3c78> 8 1 dpi 16 div setpattern}
X	 {<0000ffff0000ffff> 8 1 dpi 16 div setpattern}
X	 {<cccccccccccccccc> 8 1 dpi 16 div setpattern}
X	 {<8142241818244281> 8 1 dpi 16 div setpattern}
X	 {<81c06030180c0603> 8 1 dpi 16 div setpattern}
X	 {<0102040810204080> 8 1 dpi 16 div setpattern}
X	 {}
X	 {1.00 grayness}
X	 {0.90 grayness}
X	 {0.70 grayness}
X	 {0.50 grayness}
X	 {0.30 grayness}
X	 {0.10 grayness}
X	 {0.03 grayness}
X	 {0.00 grayness}
X	 {<783c1e0f87c3e1f0> 8 1 dpi 16 div setpattern}
X	 {<0f1e3c78f0e1c387> 8 1 dpi 16 div setpattern}
X	 {<ffff0000ffff0000> 8 1 dpi 16 div setpattern}
X	 {<3333333333333333> 8 1 dpi 16 div setpattern}
X	 {<7ebddbe7e7dbbd7e> 8 1 dpi 16 div setpattern}
X	 {<7e3f9fcfe7f3f9fc> 8 1 dpi 16 div setpattern}
X	 {<fefdfbf7efdfbf7f> 8 1 dpi 16 div setpattern}
X	 {}
X	] def
X/fillprocs /fillprocs0 load def
X/H { 
X	FMlinewidths exch get setlinewidth
X	} bind def
X/X { 
X	fillprocs exch get exec
X	} bind def
X/V { 
X	gsave eofill grestore
X	} bind def
X/N { 
X	gsave stroke grestore 
X	} bind def
X/M {newpath moveto} bind def
X/E {lineto} bind def
X/D {curveto} bind def
X/O {closepath} bind def
X	/n FMLOCAL
X/L { 
X 	/n exch def
X	newpath
X	normalize
X	moveto 
X	2 1 n {pop normalize lineto} for
X	} bind def
X/Y { 
X	L 
X	closepath
X	} bind def
X/K { 
X 	/n exch def
X	newpath
X	moveto 
X	3 1 n {pop curveto} for
X	} bind def
X/J { 
X 	/n exch def
X	newpath
X	moveto 
X	1 1 n {pop curveto} for
X	} bind def
X	/x1 FMLOCAL
X	/x2 FMLOCAL
X	/y1 FMLOCAL
X	/y2 FMLOCAL
X/R { 
X	/y2 exch def
X	/x2 exch def
X	/y1 exch def
X	/x1 exch def
X	x1 y1
X	x2 y1
X	x2 y2
X	x1 y2
X	4 Y 
X	} bind def
X/C { 
X	grestore
X	gsave
X	R 
X	clip
X	} bind def
X/U { 
X	grestore
X	gsave
X	} bind def
X/F { 
X	FMfonts exch get
X	setfont
X	} bind def
X/T { 
X	moveto show
X	} bind def
X/P { 
X	moveto
X	0 32 3 2 roll widthshow
X	} bind def
X/S { 
X	moveto
X	0 exch ashow
X	} bind def
X/B { 
X	moveto
X	0 32 4 2 roll 0 exch awidthshow
X	} bind def
X/Q { 
X	moveto
X	gsave show grestore
X	} bind def
X	/x FMLOCAL
X	/y FMLOCAL
X	/dx FMLOCAL
X	/dy FMLOCAL
X	/dl FMLOCAL
X	/t FMLOCAL
X	/t2 FMLOCAL
X	/Cos FMLOCAL
X	/Sin FMLOCAL
X	/r FMLOCAL
X/W { 
X	dnormalize
X	/dy exch def
X	/dx exch def
X	normalize
X	/y  exch def
X	/x  exch def
X	/dl dx dx mul dy dy mul add sqrt def
X	dl 0.0 gt {
X		/t currentlinewidth def
X		savematrix
X		/Cos dx dl div def
X		/Sin dy dl div def
X		/r [Cos Sin Sin neg Cos 0.0 0.0] def
X		/t2 t 2.5 mul 3.5 max def
X		newpath
X		x y translate
X		r concat
X		0.0 0.0 moveto
X		dl t 2.7 mul sub 0.0 rlineto
X		stroke
X		restorematrix
X		x dx add y dy add translate
X		r concat
X		t 0.67 mul setlinewidth
X		t 1.61 mul neg  0.0 translate
X		0.0 0.0 moveto
X		t2 1.7 mul neg  t2 2.0 div     moveto
X		0.0 0.0 lineto
X		t2 1.7 mul neg  t2 2.0 div neg lineto
X		stroke
X		t setlinewidth
X		restorematrix
X		} if
X	} bind def
X/G { 
X	gsave
X	newpath
X	normalize translate 0.0 0.0 moveto 
X	dnormalize scale 
X	0.0 0.0 1.0 5 3 roll arc 
X	closepath eofill
X	grestore
X	} bind def
X	/x FMLOCAL
X	/y FMLOCAL
X	/w FMLOCAL
X	/h FMLOCAL
X	/xx FMLOCAL
X	/yy FMLOCAL
X	/ww FMLOCAL
X	/hh FMLOCAL
X/A { 
X	/y exch def
X	/x exch def
X	/h exch def
X	/w exch def
X	x y normalize /yy exch def /xx exch def
X	w h dnormalize /hh exch def /ww exch def
X	ww abs hh abs xx ww add yy hh sub
X	gsave
X	savematrix
X	newpath
X	translate
X	scale
X	0.0 0.0 1.0 5 3 roll arc
X	0 setlinecap
X	restorematrix
X	stroke
X	grestore
X	} bind def
X	/FMsaveobject FMLOCAL
X	/FMoptop FMLOCAL
X	/FMdicttop FMLOCAL
X/BEGINPRINTCODE {
X	/FMdicttop countdictstack 1 add def 
X	/FMoptop count 6 sub def 
X	/FMsaveobject save def
X	userdict begin 
X	/showpage {} def 
X	translate
X	FMNORMALIZEGRAPHICS
X	} bind def
X/ENDPRINTCODE {
X	count -1 FMoptop {pop pop} for 
X	countdictstack -1 FMdicttop {pop end} for 
X	FMsaveobject restore 
X	} bind def
X/gn { 
X	0 
X	{	46 mul 
X		cf read pop 
X		32 sub 
X		dup 46 lt {exit} if 
X		46 sub add 
X		} loop
X	add 
X	} bind def
X	/str FMLOCAL
X/cfs { 
X	/str sl string def 
X	0 1 sl 1 sub {str exch val put} for 
X	str def 
X	} bind def
X/ic [ 
X	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
X	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
X	0
X	{0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
X	{10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
X	{19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
X	{13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
X	{4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
X	{13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
X	{7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
X	{0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
X	{10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
X	] def
X	/sl FMLOCAL
X	/val FMLOCAL
X	/ws FMLOCAL
X	/im FMLOCAL
X	/bs FMLOCAL
X	/cs FMLOCAL
X	/len FMLOCAL
X	/pos FMLOCAL
X/ms { 
X	/sl exch def 
X	/val 255 def 
X	/ws cfs 
X	/im cfs 
X	/val 0 def 
X	/bs cfs 
X	/cs cfs 
X	} bind def
X400 ms 
X/ip { 
X	is 
X	0 
X	cf cs readline pop 
X	{	ic exch get exec 
X		add 
X		} forall 
X	pop 
X	
X	} bind def
X/wh { 
X	/len exch def 
X	/pos exch def 
X	ws 0 len getinterval im pos len getinterval copy pop
X	pos len 
X	} bind def
X/bl { 
X	/len exch def 
X	/pos exch def 
X	bs 0 len getinterval im pos len getinterval copy pop
X	pos len 
X	} bind def
X/s1 1 string def
X/fl { 
X	/len exch def 
X	/pos exch def 
X	/val cf s1 readhexstring pop 0 get def
X	pos 1 pos len add 1 sub {im exch val put} for
X	pos len 
X	} bind def
X/hx { 
X	3 copy getinterval 
X	cf exch readhexstring pop pop 
X	} bind def
X	/h FMLOCAL
X	/w FMLOCAL
X	/lb FMLOCAL
X	/bitmapsave FMLOCAL
X	/is FMLOCAL
X	/cf FMLOCAL
X/BEGINBITMAP { 
X	gsave
X	translate scale /h exch def /w exch def
X	/lb w 7 add 8 idiv def 
X	sl lb lt {lb ms} if 
X	/bitmapsave save def 
X	/is im 0 lb getinterval def 
X	ws 0 lb getinterval is copy pop 
X	/cf currentfile def 
X	w h 1 [w 0 0 h neg 0 h] 
X	{ip} image 
X	bitmapsave restore 
X	grestore
X	} bind def
X/ENDBITMAP {
X	} bind def
Xend 
X%%EndProlog
X%%BeginSetup
X(1.2) FMVERSION
X1. 1. 612. 792. 0 1 13 FMDOCUMENT
X0 10. /Times-Roman  FMDEFINEFONT
X1 12. /Times-Roman  FMDEFINEFONT
X2 12. /Times-Italic  FMDEFINEFONT
X3 18. /Times-Bold  FMDEFINEFONT
X4 10. /Courier  FMDEFINEFONT
X5 14. /Times-Bold  FMDEFINEFONT
X6 10. /Times-Italic  FMDEFINEFONT
X7 8. /Helvetica-Bold  FMDEFINEFONT
X8 24. /Helvetica-BoldOblique  FMDEFINEFONT
X9 24. /Helvetica-Bold  FMDEFINEFONT
X10 18. /Helvetica-Bold  FMDEFINEFONT
X11 14. /Helvetica-Bold  FMDEFINEFONT
X12 12. /Helvetica-Bold  FMDEFINEFONT
X0.5 1. 3. 4. 4 FMLINEWIDTHS
X%%EndSetup
X%%Page: "27" 27
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 27) 527.5 749. T
X1 F
X(OSF. ) 144. 711. T
X2 F
X(OSF/Motif Programmer\325s Reference Manual Revision 1.0) 172.01 711. T
X1 F
X(, OSF, 1989.) 450.64 711. T
X(David E. Smyth.  ) 144. 689. T
X2 F
X(Space Flight Operations Center Sequence Subsystem ) 230. 689. T
X(Software Specification Document) 144. 675. T
X1 F
X(.  SSEQ0007-00-02, JPL, 1988.) 304.66 675. T
X(David E. Smyth. ) 144. 653. T
X2 F
X(Widget Creation Library, Motif Resource Interpreter, Athena ) 227. 653. T
X(Resource Interpreter: An Easier Way to Develop Applications using Motif and ) 144. 639. T
X(Athena Widgets) 144. 625. T
X1 F
X(, in JPL SFOC FIST Quarterly Report, August 1990.) 219.66 625. T
X(David E. Smyth. ) 144. 603. T
X2 F
X(Wcl-Widget Creation Library, Mri-Motif Resource ) 227. 603. T
X(Interpreter, Ari-Athena Resource Interpreter: An Easier Way to Develop ) 144. 589. T
X(Applications using Motif and Athena Widgets) 144. 575. T
X1 F
X(, The European X Window ) 362.34 575. T
X(System User Group Autumn Conference 1990 Proceedings.) 144. 561. T
X(A. Snyder. ) 144. 539. T
X2 F
X(Delegation is Inheritance) 198.66 539. T
X1 F
X(, in OOPSLA \32587 Proceedings, pages 138-) 321.31 539. T
X(146, October 1987) 144. 525. T
X0 F
X(.) 233.65 525. T
X1 F
X(Steve Wright, David Smyth, Rashmi Dalany, Kathy Surdevant.  ) 144. 503. T
X2 F
X(Space Flight ) 453.65 503. T
X(Operations Center Telemetry Delivery System Software Specification ) 144. 489. T
X(Document) 144. 475. T
X1 F
X(.  STDS0007-00-01, JPL, 1990.) 193.32 475. T
XFMENDPAGE
X%%Page: "26" 26
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 26) 527.5 749. T
X1 F
X(Very frequently, one gets a name from an argument list using ) 144. 711. T
X(WcCleanName\050\051 and then passes that name on to WcFullNameToWidget in ) 144. 697. T
X(order to manipulate that widget.  For example:  ) 144. 683. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 373.31 683. T
X3 F
X(Trademarks) 72. 452. T
X1 F
X(OSF and Motif are trademarks of the Open Software Foundation.  UNIX is a ) 144. 421. T
X(trademark of AT&T.  DEC is a trademark of Digital Equipment Corporation.  ) 144. 407. T
X(The X Window System is a trademark of MIT.) 144. 393. T
X3 F
X(Bibliography) 72. 358. T
X1 F
X(Aksit and Tripathi. ) 144. 335. T
X2 F
X(Data Abstraction Mechanisms in Sina/st) 238. 335. T
X1 F
X(, in OOPSLA \32588 ) 432. 335. T
X(Proceedings, pages 267-275, ACM, September 1988. ) 144. 321. T
X(Grady Booch, et al.  ) 144. 299. T
X2 F
X(Specification and Design Methodologies in Support of ) 243.65 299. T
X(Object-Oriented Programming.) 144. 285. T
X1 F
X(  Tutorial 5A at OOPSLA \32588, ACM, September ) 295.98 285. T
X(1988.) 144. 271. T
X(Peter Coad.  ) 144. 249. T
X2 F
X(OOA - Object-Oriented Analysis) 205.99 249. T
X1 F
X(.  Tutorial 9 at OOPSLA \32589, ) 362.96 249. T
X(ACM, October 1989.) 144. 235. T
X(Brad J. Cox.  ) 144. 213. T
X2 F
X(Object Oriented Programming - An Evolutionary Approach.) 210. 213. T
X1 F
X(  ) 500.3 213. T
X(Addison-Wesley, 1986.) 144. 199. T
X(Tim Graham.  ) 144. 177. T
X2 F
X(Space Flight Operations Center Data Transport System ) 214.66 177. T
X(Communication Services Software Specification Document) 144. 163. T
X1 F
X(.  JPL D-4229, ) 427.31 163. T
X(August 1989.) 144. 149. T
X(McCormack, Asente, and Swick.  ) 144. 127. T
X2 F
X(X Toolkit Intriniscs - C Language Interface) 308.64 127. T
X1 F
X(.  ) 516.64 127. T
X(MIT X Window System Version 11, Release 4, December 1989.) 144. 113. T
X(O\325Reilly and Associates, Inc.  ) 144. 91. T
X2 F
X(X Window System Volume 1 and 2) 290.98 91. T
X1 F
X(, 1988.) 455.63 91. T
X72. 484. 540. 680. C
X72. 484. 540. 680. R
X7 X
XV
X190. 488. 499. 658. R
X3 X
XV
X0 H
X0 X
XN
X182. 496. 491. 666. R
X7 X
XV
X0 X
XN
X4 F
X(void MyPopupCB\050 w, name, unused \051 ) 191. 651. T
X(Widget  w; ) 215. 639. T
X(char*   name; ) 215. 627. T
X(caddr_t unused; ) 215. 615. T
X({ ) 191. 603. T
X(Widget widget; ) 215. 591. T
X(char   clean[MAX_XRMNAME]; ) 215. 579. T
X(\050void\051WcCleanName \050 name, cleanName \051; ) 215. 563. T
X(widget = WcFullNameToWidget \050 w, cleanName \051; ) 215. 547. T
X(if \050XtIsShell\050widget\051\051 ) 215. 531. T
X(XtPopup \050 widget, XtGrabNonexclusive \051; ) 232. 519. T
X(} ) 191. 507. T
XU
XFMENDPAGE
X%%Page: "25" 25
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 25) 527.5 749. T
X1 F
X(Unlike earlier versions of Wcl, the latest release now eliminated leading and ) 144. 711. T
X(trailing whitespace before the callback gets it.  The resource specification:  ) 144. 697. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(passes the string "echo Howdy \134t\134t\134t\134tand hello thar" \050where \324\134t\325 means the tab ) 144. 608. T
X(character\051 to the callback.  Since the callbacks usually need to parse these ) 144. 594. T
X(argument strings, several Widget Creation Library functions are provided in ) 144. 580. T
X(the hope of making life easier for the callback writer: ) 144. 566. T
X5 F
X(char* WcCleanName\050 char* src, char* clean \051 ) 72. 526. T
X1 F
X(This takes two pointers to char as arguments.  The leading whitespace ) 144. 496. T
X(characters from \324src\325 are skipped, and then all characters up to but not ) 144. 482. T
X(including a whitespace are copied into the buffer pointed to by \324clean\325.  Note ) 144. 468. T
X(the caller must provide storage for \324clean.\325  The function returns a pointer to ) 144. 454. T
X(the first whitespace following what got copied to \324clean,\325 so this function may ) 144. 440. T
X(be used in a loop. ) 144. 426. T
X5 F
X(Widget WcFullNameToWidget \050 Widget ref, char* name \051) 72. 386. T
X1 F
X(This function uses the reference widget for relative naming, and to determine ) 144. 356. T
X(the widget tree for converting full pathnames to a widget. For example, one ) 144. 342. T
X(may need to get the actual widget which is named by "*Foo*bar.glorp"  The ) 144. 328. T
X(ref widget is used to find the root of the widget tree, and the name search ) 144. 314. T
X(starts from there. ) 144. 300. T
X(The last component MUST be a widget instance name, it cannot be a widget ) 144. 270. T
X(class name. ) 144. 256. T
X(Ambiguous names are resolved as done by XtNameToWidget\050\051 upon which ) 144. 226. T
X(WcFullNameToWidget\050\051 is derived. ) 144. 212. T
X72. 635. 540. 694. C
X72. 635. 540. 694. R
X7 X
XV
X193. 638. 491. 672. R
X3 X
XV
X0 H
X0 X
XN
X187. 644. 485. 678. R
X7 X
XV
X0 X
XN
X4 F
X(*foo.activateCallback: WcSystemCB\050 echo Howdy \134) 197. 664. T
X(and hello thar\051 ) 387. 652. T
XU
XFMENDPAGE
X%%Page: "24" 24
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 24) 527.5 749. T
X5 F
X(WcRegisterCallback\050 XtAppContext, String name, XtCallbackProc, ) 72. 709. T
X(caddr_t defaultClientData \051) 216. 693. T
X1 F
X(Callback functions must be registered with the Widget Creation Library before ) 144. 663. T
X(any widgets are created which might want to bind to it.  In general, callbacks ) 144. 649. T
X(should be registered after calling XtInitialize\050\051 and before calling ) 144. 635. T
X(WcWidgetCreation\050\051.  Here is an example of how to register a callback:  ) 144. 621. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(The default client data is only passed to the callback function if there is no ) 144. 545. T
X(client data specified in the resource specification.  For example:  ) 144. 531. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(would actually pass 7 to the callback.  However, if empty parens follow the ) 144. 455. T
X(callback name, then a null string is passed, not the default client data.) 144. 441. T
X5 F
X(WcRegisterAction\050 XtAppContext, String name, XtActionProc \051) 72. 401. T
X1 F
X(This function is provided only as a convenience.  You should really use ) 144. 371. T
X(XtAppAddActions as described in chapter 10 of the X11R4 Xt Intrinsics C ) 144. 357. T
X(Language Interface manual.) 144. 343. T
X5 F
X(Client Data in Callback and Action Procedures) 72. 303. T
X1 F
X(Most callbacks and actions really want to do something with the data they get ) 144. 273. T
X(as arguments.  The closure data, often called client data, can be specified as a ) 144. 259. T
X(string within the resource database. The string is passed to XtCallbackProcs ) 144. 245. T
X(as the second argument.  For example:  ) 144. 231. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 334.97 231. T
X72. 572. 540. 618. C
X72. 572. 540. 618. R
X7 X
XV
X175. 576. 511. 597. R
X3 X
XV
X0 H
X0 X
XN
X170. 581. 506. 602. R
X7 X
XV
X0 X
XN
X4 F
X(WcRegisterCallback\050 app, "MyExitCB", MyExitCB, 7 \051; ) 179. 588. T
XU
X72. 482. 540. 528. C
X72. 482. 540. 528. R
X7 X
XV
X227. 486. 454. 507. R
X3 X
XV
X0 H
X0 X
XN
X222. 491. 449. 512. R
X7 X
XV
X0 X
XN
X4 F
X(*foo.activateCallback:) 240. 498. T
X(MyExitCB ) 384. 498. T
XU
X72. 107. 540. 228. C
X72. 107. 540. 228. R
X7 X
XV
X201. 111. 485. 206. R
X3 X
XV
X0 H
X0 X
XN
X193. 119. 477. 214. R
X7 X
XV
X0 X
XN
X4 F
X(void WcSystemCB \050 w, shellCmdString, unused \051 ) 201. 199. T
X(Widget      w; ) 225. 187. T
X(char*       shellCmdString; ) 225. 175. T
X(caddr_t     unused; ) 225. 163. T
X({ ) 201. 151. T
X(system\050 shellCmdString \051; ) 225. 139. T
X(} ) 201. 127. T
XU
XFMENDPAGE
X%%Page: "23" 23
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 23) 527.5 749. T
X1 F
X(\050of course, languages other than C can be used, but C is probably the most ) 144. 711. T
X(straightforward\051. ) 144. 697. T
X(Application callbacks and actions must adhere to the standard XtCallbackProc ) 144. 667. T
X(and XtActionProc typedefs.  The application must register the callbacks with ) 144. 653. T
X(the Widget Creation Library\325s string-to-callback converter before creating any ) 144. 639. T
X(widgets with callbacks bound to the callback procedures.  Similarly, the ) 144. 625. T
X(application must register the actions with the Translation Manager before ) 144. 611. T
X(creating any widgets with translations bound to the actions.) 144. 597. T
X5 F
X(XtCallbackProc ) 72. 557. T
X1 F
X(As defined by the Xt Intrinsics, widget callback procedures must match this ) 144. 527. T
X(typedef:  ) 144. 513. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X(Here is an example callback proc which does nothing with its arguments:  ) 144. 403. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 501.61 403. T
X5 F
X(XtActionProc ) 72. 242. T
X1 F
X(As defined by the Xt Intrinsics, action procedures must match this typedef:  ) 144. 212. T
X72. 72. 540. 720. C
XU
X72. 430. 540. 510. C
X72. 430. 540. 510. R
X7 X
XV
X188. 433. 499. 494. R
X3 X
XV
X0 H
X0 X
XN
X180. 441. 491. 502. R
X7 X
XV
X0 X
XN
X4 F
X(typedef void \050*XtCallbackProc\051\050  ) 188. 487. T
X(Widget,) 212. 475. T
X(/* widget invoking callback) 293. 475. T
X(*/ ) 473. 475. T
X(XtPointer,) 212. 463. T
X(/* client data) 293. 463. T
X(*/ ) 473. 463. T
X(XtPointer \051;) 212. 451. T
X(/* widget provided data) 293. 451. T
X(*/) 473. 451. T
XU
X72. 279. 540. 400. C
X72. 279. 540. 400. R
X7 X
XV
X226. 283. 461. 378. R
X3 X
XV
X0 H
X0 X
XN
X218. 291. 453. 386. R
X7 X
XV
X0 X
XN
X4 F
X(void MyExitCB \050 w, ignored, unused \051 ) 226. 371. T
X(Widget) 250. 359. T
X(w; ) 301. 359. T
X(caddr_t) 250. 347. T
X(ignored; ) 301. 347. T
X(caddr_t) 250. 335. T
X(unused; ) 301. 335. T
X({ ) 226. 323. T
X(exit\050\051; ) 250. 311. T
X(} ) 226. 299. T
XU
X72. 107. 540. 209. C
X72. 107. 540. 209. R
X7 X
XV
X188. 123. 499. 193. R
X3 X
XV
X0 H
X0 X
XN
X180. 131. 491. 201. R
X7 X
XV
X0 X
XN
X4 F
X(typedef void \050*XtActionProc\051\050  ) 188. 186. T
X(Widget,) 212. 174. T
X(/* widget invoking action) 293. 174. T
X(*/) 473. 174. T
X(XEvent*,) 212. 162. T
X(/* event causing action) 293. 162. T
X(*/ ) 473. 162. T
X(char**,) 212. 150. T
X(/* list of arguments) 293. 150. T
X(*/ ) 473. 150. T
X(Cardinal* \051;) 212. 138. T
X(/* number of arguments) 293. 138. T
X(*/) 473. 138. T
XU
XFMENDPAGE
X%%Page: "22" 22
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 22) 527.5 749. T
X3 F
X(Widget Creation Functions) 72. 706. T
X1 F
X(These functions are invoked by the application to create new widgets out of ) 144. 675. T
X(the Xrm resource database.  The standard Wcl callbacks and actions ) 144. 661. T
X(WcCreateChildrenCB, WcCreateChildrenACT, WcCreatePopupsCB, and ) 144. 647. T
X(WcCreatePopupsACT invoke these functions.) 144. 633. T
X(All of these functions may be invoked any number of times during the life of an ) 144. 603. T
X(application process, thereby supporting dynamic widget creation.) 144. 589. T
X5 F
X(WcWidgetCreation\050 Widget \051 ) 72. 549. T
X1 F
X(This function takes a widget as its only argument.  A widget tree rooted at the ) 144. 519. T
X(widget is created from the Xrm database.  This function is often the only ) 144. 505. T
X(creation function called by an application.  It causes all standard Wcl ) 144. 491. T
X(converters, callbacks, and actions to be registered before the widget tree is ) 144. 477. T
X(created.) 144. 463. T
X(WcWidgetCreation makes sure that the Wcl is properly set up for the ) 144. 433. T
X(application context of the widget, obtains the WcPopups and WcChildren ) 144. 419. T
X(resource values for the widget, and then calls WcCreateNamedPopups\050\051 and ) 144. 405. T
X(then WcCreateNamedChildren\050\051. ) 144. 391. T
X5 F
X(WcCreateNamedPopups\050 Widget parent, char* comma_sep_names \051 ) 72. 351. T
X1 F
X(This function creates named pop-up children of a parent widget by invoking a ) 144. 321. T
X(recursive algorithm which enforced depth first, left-to-right ordering of ) 144. 307. T
X(creation. ) 144. 293. T
X5 F
X(WcCreateNamedChildren\050 Widget parent, char* comma_sep_names \051 ) 72. 253. T
X1 F
X(This function is virtually identical to WcCreateNamedPopups, except that the ) 144. 223. T
X(widgets are made normal children of the parent widget.  This requires the ) 144. 209. T
X(parent widget to be a composite widget.  The children are managed together ) 144. 195. T
X(after they are created unless their WcManaged resource is False. ) 144. 181. T
X3 F
X(Functions Useful to Callback and Action Procedures ) 72. 146. T
X1 F
X(An application built using the Widget Creation Library will consist of two fairly ) 144. 115. T
X(independent parts: the resource file which describes the look and probably all ) 144. 101. T
X(of the feel of the application, and the callbacks which are usually written in C ) 144. 87. T
XFMENDPAGE
X%%Page: "21" 21
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 21) 527.5 749. T
X1 F
X(WcRegisterCallback\050\051 ) 180. 711. T
X(WcRegisterClassPtr\050\051 ) 180. 695. T
X(WcRegisterClassName\050\051 ) 180. 679. T
X(WcRegisterConstructor\050\051 ) 180. 663. T
X(WcRegisterAction\050\051 ) 180. 647. T
X(By default, these registration routines ignore attempts to re-register a string-) 144. 623. T
X(to-whatever mapping.  This is generally useful, in that it helps to catch ) 144. 609. T
X(duplicate and therefore unneeded invocations of the registration routines. ) 144. 595. T
X(In some clients, there exists the need to override such registrations. For ) 144. 565. T
X(example, interface builders built using the Widget Creation Library and a C ) 144. 551. T
X(interpreter or a dynamic linking environment may allow a given callback name ) 144. 537. T
X(to refer to different functions as the application evolves.  The following ) 144. 523. T
X(functions are provided to support these cases: ) 144. 509. T
X(WcAllowDuplicateRegistration\050\051 ) 180. 487. T
X(WcAllowDuplicateCallbackReg\050\051 ) 180. 471. T
X(WcAllowDuplicateClassPtrReg\050\051 ) 180. 455. T
X(WcAllowDuplicateClassNameReg\050\051 ) 180. 439. T
X(WcAllowDuplicateConstructorReg\050\051 ) 180. 423. T
X(All the standard Wcl callback and action procedures are registered by Wcl ) 144. 399. T
X(before any widgets are created when the function WcWidgetCreation\050\051 is ) 144. 385. T
X(called. ) 144. 371. T
X5 F
X(WcRegisterCallback\050 XtAppContext, char* CBname, XtCallbackProc \051 ) 72. 339. T
X1 F
X(Probably all really useful applications will require application specific ) 144. 309. T
X(callbacks.  These callbacks are registered with the Widget Creation Library\325s ) 144. 295. T
X(string-to-callback converter using WcRegisterCallback\050\051. ) 144. 281. T
X(In fact, this function is used by Wc itself to register the standard Wc supplied ) 144. 251. T
X(callbacks, such as WcSetValueCB and WcExitCB. ) 144. 237. T
X5 F
X(WcRegisterAction\050 XtAppContext, char* name, XtActionProc \051 ) 72. 197. T
X1 F
X(This is a simple wrapper around XtAppAddActions\050\051.  If many actions are ) 144. 167. T
X(being registered, it is probably better to use XtAppAddAtions as documented ) 144. 153. T
X(in the X11R4 Xt manual rather than making many calls to this function.  This ) 144. 139. T
X(will help performance. ) 144. 125. T
XFMENDPAGE
X%%Page: "20" 20
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 20) 527.5 749. T
X5 F
X(WcRegisterConstructor\050 XtAppContext, char* name, Widget\050*constr\051\050\051 \051 ) 72. 709. T
X1 F
X(This function is used to tell the Widget Creation Library about a widget ) 144. 679. T
X(constructor.  The name of the constructor is passed in as a string \050for example, ) 144. 665. T
X("XmCreatePushButton"\051.  This string value can be provided as the ) 144. 651. T
X(WcConstructor resource value within a resource file. ) 144. 637. T
X5 F
X(AriRegisterAthena\050 XtAppContext \051 ) 72. 597. T
X1 F
X(Since this function is widget set specific, is is not a part of the actual Widget ) 144. 567. T
X(Creation Library.  However, it is provided with the Wcl distribution in a ) 144. 553. T
X(separate file.  AriRegAll.c contains the single function AriRegisterAthena\050\051 ) 144. 539. T
X(along with a constructor which is very useful for using Popup menus.  ) 144. 525. T
X(AriRegisterAthena\050\051 lets the Wc library know about all the Athena widget ) 144. 511. T
X(class names \050like Command\051, and class pointers \050like commandWidgetClass\051. ) 144. 497. T
X5 F
X(MriRegisterMotif\050 XtAppContext \051 ) 72. 457. T
X1 F
X(MriRegAll.c contains the single function MriRegisterMotif\050\051, along with Motif ) 144. 427. T
X(specific type converters.  This function lets the Wc library know about all the ) 144. 413. T
X(Motif widget class names \050like XmPushButtonGadget\051, class pointers \050like ) 144. 399. T
X(xmPushButtonGadgetClass\051, and convenience constructors \050like ) 144. 385. T
X(XmCreatePushButtonGadget\051. ) 144. 371. T
X5 F
X(OriRegisterOpenLook\050 XtAppContext \051 ) 72. 331. T
X1 F
X(This function does not yet exist as part of the standard distribution, but it will ) 144. 301. T
X(be provided in a release in the near future. ) 144. 287. T
X3 F
X(Widget, Callback, and Action Registration Functions ) 72. 252. T
X1 F
X(The Widget Creation Library converts strings in the database, such as ) 144. 221. T
X("XmCreateFileSelectionBox", into its needed types, such as constructors, ) 144. 207. T
X(using Xt converters.  These converters initially do not know about any ) 144. 193. T
X(widgets, callbacks, or actions.  They must be told what each string maps into.  ) 144. 179. T
X(The converters learn about the appropriate mappings via the registration ) 144. 165. T
X(functions: ) 144. 151. T
XFMENDPAGE
X%%Page: "19" 19
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 19) 527.5 749. T
X5 F
X(WcExitCB) 72. 709. T
X(\050 exitValue \051 ) 151. 709. T
X(WcExitACT) 72. 693. T
X(\050 exitValue \051) 151. 693. T
X1 F
X(These procedures convert the argument string into a base 10 integer, and then ) 144. 663. T
X(passe the result to exit\050\051, which of course terminates the application. ) 144. 649. T
X3 F
X(Widget Creation Library C Interface Functions ) 72. 614. T
X1 F
X(The Widget Creation Library provides several types of functions which are ) 144. 583. T
X(called by client applications: ) 144. 569. T
X(1.) 162. 547. T
X(Registration Functions ) 198. 547. T
X(2.) 162. 531. T
X(Creation Functions ) 198. 531. T
X(3.) 162. 515. T
X(Callback Argument Parsing Utilities ) 198. 515. T
X(Two include files are provided which declare the functions and supporting data ) 144. 491. T
X(types used by the Widget Creation Library.  Many applications should only ) 144. 477. T
X(need to include WcCreate.h which contains what can be considered "public" ) 144. 463. T
X(function declarations. ) 144. 449. T
X(If an application requires additional resource converters, or sophisticated ) 144. 419. T
X(callbacks, WcCreateP.h should be included.  This file contains what can be ) 144. 405. T
X(considered "private" function declarations as well as typedefs for several data ) 144. 391. T
X(types used by the Widget Creation Library. ) 144. 377. T
X3 F
X(Widget Set Registration Functions ) 72. 342. T
X5 F
X(WcRegisterClassPtr\050 XtAppContext, char* classPtrName, WidgetClass \051 ) 72. 301. T
X1 F
X(This function is used to tell the Widget Creation Library about a widget class ) 144. 271. T
X(pointer which can be used within XtCreateWidget\050\051.  The name of the widget ) 144. 257. T
X(class pointer is passed in as a string \050for example, ) 144. 243. T
X("xmPushButtonWidgetClass"\051.  This string value can be provided as the ) 144. 229. T
X(WcClass resource value within a resource file. ) 144. 215. T
X5 F
X(WcRegisterClassName\050 XtAppContext, char* className, WidgetClass \051 ) 72. 175. T
X1 F
X(This function is used to tell the Widget Creation Library about a widget class ) 144. 145. T
X(name.  The name is mapped to a widget class pointer which can be used within ) 144. 131. T
X(XtCreateWidget\050\051.  The name of the widget class  is passed in as a string \050for ) 144. 117. T
X(example, "XmPushButton"\051.  This name can then be provided as the ) 144. 103. T
X(WcClassName resource value within a resource file. ) 144. 89. T
XFMENDPAGE
X%%Page: "18" 18
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 18) 527.5 749. T
X1 F
X(specified, the result is undefined.  Usually, a core dump results.  Here is a real ) 144. 711. T
X(example:  ) 144. 697. T
X72. 72. 540. 720. C
XU
X5 F
X0 X
X(WcLoadResourceFileCB) 72. 572. T
X(\050 filename \051) 242. 572. T
X(WcLoadResourceFileACT) 72. 556. T
X(\050 filename \051) 242. 556. T
X1 F
X(These procedures load a specified resource file into the application\325s resource ) 144. 526. T
X(database. They allow resources to be loaded on as-needed basis, reducing the ) 144. 512. T
X(initial resource file loading overhead.  The directory search for the file is the ) 144. 498. T
X(same as for the application class resource file. ) 144. 484. T
X(To prevent repeated loads of the same file, the procedures keep track of each ) 144. 454. T
X(filename.  Note that I do not allow a file to be re-loaded even if it is changed, ) 144. 440. T
X(or if a new file of the same name appears on the search path.  This was done ) 144. 426. T
X(for two reasons:  first, it makes the code more portable, as I don\325t have to ) 144. 412. T
X(depend upon various system calls.  Second, resources can\325t be un-written, so ) 144. 398. T
X(a user might get the wrong impression that a resource specification can be ) 144. 384. T
X(deleted, and the resource file re-loaded, and something will happen.  It just ) 144. 370. T
X(isn\325t so. ) 144. 356. T
X5 F
X(WcSystemCB) 72. 316. T
X(\050 shell command line \051 ) 173. 316. T
X(WcSystemACT) 72. 300. T
X(\050 shell command line \051) 173. 300. T
X1 F
X(These procedures pass the entire string argument to your default shell using ) 144. 270. T
X(the system\050\051 C library function.  Append an \324&\325 to cause the shell to be ) 144. 256. T
X(forked.  Otherwise, your application will block until the command completes.) 144. 242. T
X5 F
X(WcTraceCB) 72. 202. T
X(\050 annotation \051 ) 167. 202. T
X(WcTraceACT) 72. 186. T
X(\050 annotation \051) 167. 186. T
X1 F
X(These procedures can be used to assist in interface debugging. The procedures ) 144. 156. T
X(print the invoking widget\325s full pathname and the specified annotation on ) 144. 142. T
X(stderr. ) 144. 128. T
X72. 609. 540. 694. C
X72. 609. 540. 694. R
X7 X
XV
X127. 613. 537. 677. R
X3 X
XV
X0 H
X0 X
XN
X119. 621. 529. 685. R
X7 X
XV
X0 X
XN
X4 F
X(*font1.activateCallback:) 126. 670. T
X(WcSetTypeValueCB\050) 287. 670. T
X(\134) 514. 670. T
X(*msgWindow.fontList:) 306. 656. T
X(\134) 514. 656. T
X(FontList,) 324. 642. T
X(\134) 514. 642. T
X(*courier-bold-o-*--10-* \051) 342. 628. T
XU
XFMENDPAGE
X%%Page: "17" 17
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 17) 527.5 749. T
X1 F
X(required converter has not been registered, a warning message is printed to ) 144. 711. T
X(stderr using XtWarning.) 144. 697. T
X(Also, if a widget does not have the indicated resource, then a warning is ) 144. 667. T
X(printed using XtWarning.) 144. 653. T
X(Note that this is much safer and using XtSetValue from C.  When using ) 144. 623. T
X(XtSetValues, if the programmer provides an inappropriately typed values, the ) 144. 609. T
X(results are undefined \050but often the result is a core dump\051.) 144. 595. T
X(These procedures invoke XtGetResourceList and ) 144. 565. T
X(XtGetConstraintResourceList to determine the resources and types which ) 144. 551. T
X(may be set on any given widget.  This means all normal and constraint ) 144. 537. T
X(resources may be set using registered string-to-whatever resource type ) 144. 523. T
X(converters.) 144. 509. T
X(Unfortunately, some widgets have subresources which are not named in the ) 144. 479. T
X(resource lists obtained via calls to XtGetResourceList and ) 144. 465. T
X(XtGetConstraintResourceList.  For example, the font of a text widget is a ) 144. 451. T
X(subresource, a resource of a non-widget part of a text widget.  Therefore, ) 144. 437. T
X(these procedures will complain that a text widget does not have a font ) 144. 423. T
X(resource, when of course it really does.  In such cases, WcSetTypeValue can ) 144. 409. T
X(be used.) 144. 395. T
X(An augmented resource file syntax is accepted so you can cut and paste the ) 144. 365. T
X(arguments and names.  The widget path name can include wildcards, and it can ) 144. 351. T
X(also be a relative path from the invoking widget.  Real examples:  ) 144. 337. T
X72. 72. 540. 720. C
XU
X5 F
X0 X
X(WcSetTypeValueCB) 72. 178. T
X(\050 ResLHS, ResType, ResRHS \051) 215. 178. T
X(WcSetTypeValueACT) 72. 162. T
X(\050 ResLHS, ResType, ResRHS \051) 215. 162. T
X1 F
X(These procedures are unsafe, exactly like XtSetValue.  In fact, ) 144. 132. T
X(WcSetTypeValue basically forces a string-to-whatever type conversion, and ) 144. 118. T
X(then calls XtSetValue with the result.  If the inappropriate resource type is ) 144. 104. T
X72. 215. 540. 334. C
X72. 215. 540. 334. R
X7 X
XV
X127. 219. 537. 320. R
X3 X
XV
X0 H
X0 X
XN
X119. 227. 529. 328. R
X7 X
XV
X0 X
XN
X4 F
X(*push.activateCallback: WcSetValueCB\050 \134) 126. 310. T
X(*push.activateCallback: WcExitCB\0501\051 \051,\134) 286. 298. T
X(WcSetValueCB\050 \134) 270. 286. T
X(*push.labelString: Good-bye! \051 ) 286. 274. T
X(*fileMenu.wcCallback:) 126. 258. T
X(WcSetValueCB\050*file.subMenuId: this\051 ) 270. 258. T
X(*Pink.armCallback:) 126. 242. T
X(WcSetValueCB\050 ^^drawing.background: Pink \051 ) 270. 242. T
XU
XFMENDPAGE
X%%Page: "16" 16
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 16) 527.5 749. T
X5 F
X(WcSetSensitiveCB) 72. 709. T
X(\050 widget [, widget] ... \051  ) 204. 709. T
X(WcSetSensitiveACT) 72. 693. T
X(\050 widget [, widget] ... \051) 204. 693. T
X1 F
X(These procedures invoke XtSetSensitive\050 TRUE \051 on each of the widgets ) 144. 663. T
X(named by the argument. ) 144. 649. T
X5 F
X(WcSetInsensitiveCB) 72. 609. T
X(\050 widget [, widget] ... \051) 217. 609. T
X(WcSetInsensitiveACT) 72. 593. T
X(\050 widget [, widget] ... \051  ) 217. 593. T
X1 F
X(These procedures are identical to WcSetSensitiveCB and ) 144. 563. T
X(WcSetSensitiveACT, but the widgets are made insensitive by calling ) 144. 549. T
X(XtSetSensitive\050FALSE\051. ) 144. 535. T
X5 F
X(WcPopupCB) 72. 495. T
X(\050 widget \051 ) 165. 495. T
X(WcPopupACT) 72. 479. T
X(\050 widget \051 ) 165. 479. T
X1 F
X(These procedures invoke XtPopup\050\051 with the XtGrabKind set to ) 144. 449. T
X(XtGrabNonexclusive.  The widget must be a pop-up shell widget. ) 144. 435. T
X5 F
X(WcPopupGrabCB) 72. 395. T
X(\050 widget \051) 196. 395. T
X(WcPopupGrabACT) 72. 379. T
X(\050 widget \051) 196. 379. T
X1 F
X(These procedures invoke XtPopup\050\051 with the XtGrabKind set to ) 144. 349. T
X(XtGrabExclusive.  The widget must be a pop-up shell widget. ) 144. 335. T
X5 F
X(WcPopdownCB) 72. 295. T
X(\050 widget \051 ) 182. 295. T
X(WcPopdownACT) 72. 279. T
X(\050 widget \051) 182. 279. T
X1 F
X(These procedures invoke XtPopdown\050\051.  The widget must be a pop-up shell ) 144. 249. T
X(widget. ) 144. 235. T
X5 F
X(WcSetValueCB) 72. 195. T
X(\050 resLHS: resRHS \051 ) 184. 195. T
X(WcSetValueACT) 72. 179. T
X(\050 resLHS: resRHS \051) 184. 179. T
X1 F
X(These procedures maps very closely to XtSetValues\050\051.  However, these ) 144. 149. T
X(procedures actually check the target widget\325s resources, and performs ) 144. 135. T
X(resource type conversion as required.) 144. 121. T
X(This implies that string-to-whatever resource type converters have been ) 144. 91. T
X(registered with the Xt Intrinsics to perform the required conversion.  If a ) 144. 77. T
XFMENDPAGE
X%%Page: "15" 15
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 15) 527.5 749. T
X5 F
X(WcManageChildrenCB) 72. 709. T
X(\050 parent, child [, child] ... \051) 231. 709. T
X(WcManageChildrenACT) 72. 693. T
X(\050 parent, child [, child] ... \051) 231. 693. T
X1 F
X(These procedures manage multiple children of a single parent.  They are ) 144. 663. T
X(wrappers around XtManageChildren.  As with WcCreateChildrenCB, the ) 144. 649. T
X(parent name can include wildcards, or can be a relative pathname from the ) 144. 635. T
X(widget invoking the procedure.  The names of the children widgets must be ) 144. 621. T
X(single widget names, not pathnames.  In this example, the existing widget ) 144. 607. T
X(\324*foo\325 has its children named \324one,\325 \324two,\325 and \324three\325 managed:) 144. 593. T
X72. 72. 540. 720. C
XU
X1 F
X0 X
X( ) 452.92 593. T
X5 F
X(WcUnmanageChildrenCB) 72. 498. T
X(\050 parent, child [, child] ... \051) 247. 498. T
X(WcUnmanageChildrenACT) 72. 482. T
X(\050 parent, child [, child] ... \051 ) 247. 482. T
X1 F
X(Identical to WcManageChildrenCB and WcManageChildrenACT, except that ) 144. 452. T
X(the child widgets are un-managed rather than managed via a call to ) 144. 438. T
X(XtUnmanageChildren. ) 144. 424. T
X5 F
X(WcManageCB) 72. 384. T
X(\050 widget [, widget] ... \051 ) 175. 384. T
X(WcManageACT) 72. 368. T
X(\050 widget [, widget] ... \051) 175. 368. T
X1 F
X(These procedures take a list of widget names, each of which can be wildcarded ) 144. 338. T
X(and/or relative widget pathname.  After the widget ID is resolved via the ) 144. 324. T
X(WcFullNameToWidget function, the widgets are managed using ) 144. 310. T
X(XtManageChild\050\051.  If you want to manage multiple children of the same ) 144. 296. T
X(widget, is is alot more efficient to use WcManageChildrenCB or ) 144. 282. T
X(WcManageChildrenACT rather than WcManageCB or WcManageACT.) 144. 268. T
X5 F
X(WcUnmanageCB) 72. 228. T
X(\050 widget [, widget] ... \051  ) 190. 228. T
X(WcUnmanageACT) 72. 212. T
X(\050 widget [, widget] ... \051) 190. 212. T
X1 F
X(These procedures are identical to WcManageCB and WcManageACT, except ) 144. 182. T
X(that the widgets are un-managed using XtUnmanageChild\050\051. ) 144. 168. T
X5 F
X(WcDestroyCB) 72. 128. T
X(\050 widget [, widget] ... \051  ) 176. 128. T
X(WcDestroyACT) 72. 112. T
X(\050 widget [, widget] ... \051) 176. 112. T
X1 F
X(These procedures allow widgets to be destroyed using XtDestroyWidget\050\051. ) 144. 82. T
X72. 535. 540. 590. C
X72. 535. 540. 590. R
X7 X
XV
X194. 538. 495. 571. R
X3 X
XV
X0 H
X0 X
XN
X186. 546. 487. 579. R
X7 X
XV
X0 X
XN
X4 F
X(*new.activateCallback:  WcManageChildrenCB\050 \134 ) 195. 565. T
X(*foo, one, two, three \051 ) 339. 553. T
XU
XFMENDPAGE
X%%Page: "14" 14
XFMBEGINPAGE
X0 F
X0 X
X(Widget Creation Library) 256.56 749. T
X(1 January 1991) 275.45 36. T
X( 14) 527.5 749. T
X1 F
X(In addition, resource name wildcards work as expected - as long as the final ) 143. 711. T
X(name component is a widget instance, and not a widget class name.  For ) 143. 697. T
X(example: ) 143. 683. T
X71. 72. 539. 720. C
XU
X1 F
X0 X
X( ) 189.99 683. T
X5 F
X(WcCreateChildrenCB) 71. 585. T
X(\050 parent, child [, child] ... \051) 225. 585. T
X(WcCreateChildrenACT) 71. 569. T
X(\050 parent, child [, child] ... \051) 225. 569. T
X1 F
X(These procedures cause new widgets to be created.  The name of the parent ) 143. 539. T
X(can include wildcards, or can be a relative pathname from the widget invoking ) 143. 525. T
X(the callback.  The names of the children widgets must be single widget names, ) 143. 511. T
X(not pathnames.  For example: ) 143. 497. T
X71. 72. 539. 720. C
XU
X1 F
X0 X
X( ) 288.32 497. T
X(In this case, pressing a danger button creates a new tree of widgets providing ) 143. 412. T
X(emergency controls.  The new tree is rooted at the existing Panel widget.  ) 143. 398. T
X(Therefore, the Panel widget must be a composite widget. ) 143. 384. T
X5 F
X(WcCreatePopupsCB) 71. 344. T
X(\050 parent, child [, child] ... \051) 212. 344. T
X(WcCreatePopupsACT) 71. 328. T
X(\050 parent, child [, child] ... \051) 212. 328. T
X1 F
X(These procedures cause new pop-up widgets to be created.  The name of the ) 143. 298. T
X(parent can include wildcards, or can be a relative pathname from the widget ) 143. 284. T
!STUFFY!FUNK!
echo " "
echo "End of kit 18 (of 35)"
cat /dev/null >kit18isdone
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.