1 | SccsID: @(#) README 1.12 92/11/02 08:43:42 |
---|
2 | |
---|
3 | Widget Creation Library Version 2.03 Distribution |
---|
4 | ------------------------------------------------ |
---|
5 | |
---|
6 | The distribution contains files which make up the Widget Creation |
---|
7 | Library (Wcl or libWc.a), and resource interpreters and utility |
---|
8 | libraries (which include Table widgets) for each of the following |
---|
9 | widget sets: Athena, Cornell, Motif, and OpenLook. |
---|
10 | |
---|
11 | Wcl is completely widget set independent. It provides mechanisms to |
---|
12 | allow an entire user interface to be specified in resource files. |
---|
13 | Basically, this amounts to providing new resources for specifying the |
---|
14 | types of the widgets and the widget heirarchy. In addition, Wcl |
---|
15 | provides several callbacks and action functions which many programs |
---|
16 | need. |
---|
17 | |
---|
18 | See README20 for general information about Wcl version 2, and README22 |
---|
19 | for additional features introduced in Wcl version 2.2 and version 2.1. |
---|
20 | |
---|
21 | New Features of Wcl 2.03 |
---|
22 | ------------------------ |
---|
23 | |
---|
24 | Resource File Loading - Resource files named on the command line and |
---|
25 | with wclResFiles resources are now loaded using |
---|
26 | a more useful file search algorithm. See below. |
---|
27 | Late Binding - All callbacks bound with Wcl are now late-bound. |
---|
28 | This means the application can change the string |
---|
29 | to callback mapping at any time, and from then |
---|
30 | on, the new callback procedure will be called. |
---|
31 | This also means that callbacks do NOT need to |
---|
32 | be registered before widgets which will invoke the |
---|
33 | callback are created. The callback should still |
---|
34 | be registered before being invoked, of course. |
---|
35 | WcAddLateBinderHook, |
---|
36 | WcRemoveLateBinderHook - **Experimental External Interfaces to WcLateBinder** |
---|
37 | is now provided, intended for use by people building |
---|
38 | interpretive environments which use Wcl for the UI, |
---|
39 | and some interpretor (like perl) for the callbacks. |
---|
40 | See WcCreateP.h and WcLateBind.c for information. |
---|
41 | WcInitialSizeIsMinimum - a creation time callback, very useful for shells. |
---|
42 | WcFullNameToWidget - Enhanced to find direct descendents of the reference |
---|
43 | widget, and optionally uses slower but tighter name |
---|
44 | scoping algorithm of Xaw string-to-widget converter. |
---|
45 | New relative naming operator `/' which means "the |
---|
46 | nearest shell ancestor which is known to the window |
---|
47 | manager." The operator `~' remains "the nearest |
---|
48 | shell ancestor." Therefore, it is now easy to find |
---|
49 | the top level shell from nested menus by using `/'. |
---|
50 | WcCvtStringToWidgetList - A useful converter. |
---|
51 | |
---|
52 | Bug Fixes |
---|
53 | --------- |
---|
54 | MapAg.c - Free method now set properly for dynamically created |
---|
55 | mapping agents. |
---|
56 | MapAg.h, WcCreate*h - now wrapped by #ifdef __cplusplus { } |
---|
57 | XtVa... - no longer used, so everything ports to X11R3 |
---|
58 | #ifdef sun - why don't they just use X from mit!?! |
---|
59 | WcHomeDirectory - Now can handle case where user has no home dir. |
---|
60 | WcGetResourceType - no longer dumps core if no parent widget. |
---|
61 | -rf on command line - There is now no problem with loading additional |
---|
62 | resource files when -rf was used to load the |
---|
63 | initial file. |
---|
64 | Wcl Lib Resources - These resources are now ALWAYS fetched after all |
---|
65 | resource files have been loaded. |
---|
66 | |
---|
67 | Seemingly Unfixable Bug |
---|
68 | ----------------------- |
---|
69 | |
---|
70 | realizeCallback, destroyCallback, popupCallback, and popdownCallback |
---|
71 | MUST NOT be specified using resource values for shell widgets derived |
---|
72 | from Motif Vendor Shell in most releases of Motif. Sorry, there is no |
---|
73 | way I can see for Wcl to work around this bug in the list of resources |
---|
74 | fetched by the Motif Vendor Shell Extension VendorExtInitialize() |
---|
75 | procedure. |
---|
76 | |
---|
77 | If you want to specify these resources, specifiy a wcCallback resource |
---|
78 | and add the callbacks using WcAddCallbacks(). |
---|
79 | |
---|
80 | Explanation for Xt and Motif gurus with source code: Xt has fetched |
---|
81 | these resources for the shell, and compiled the XtCallbackRec array |
---|
82 | generated by WcCvtStringToCallback into the |
---|
83 | InternalCallbackRec/XtCallbackRec "thang." This happens in |
---|
84 | Xt'Create.c'_XtCreate in R5. _XtCreate then allows the widget to |
---|
85 | initialize itself, calling CallInitialize(). This eventually invokes |
---|
86 | the Motif Vendor Shell initialization, which invokes the Motif Vendor |
---|
87 | Shell Extension initialization. Here, Motif incorrectly fetches again |
---|
88 | the above callback resources, applying the resources straight into the |
---|
89 | "new" widget with its already compiled callback lists. This causes the |
---|
90 | compiled callback list storage to be overwritten with the original, |
---|
91 | uncompiled form previously generated by WcCvtStringToCallback. The |
---|
92 | next XtAddCallback or XtCallAllCallbacks or XtSetValues on these |
---|
93 | resources will (or should!) fail due to mis-interpreting the callback |
---|
94 | list (the first element will again be an XtCallbackRec instead of an |
---|
95 | InternalCallbackRec). The fix is messy: somehow treat the callback |
---|
96 | resources as uniquely as Xt does everywhere else: fetch into a |
---|
97 | different (local) Widget instead of new, and then traverse the list of |
---|
98 | callbacks, invoking XtAddCallback( new, <callbackName>, cb->callback, |
---|
99 | cb->closure ), and then free up that locally allocated dummy widget. |
---|
100 | Yuck! |
---|
101 | |
---|
102 | New Resources Used by Wcl 2.03 |
---|
103 | ------------------------------ |
---|
104 | |
---|
105 | Wcl fetches three different groups of resources from the Xrm resource |
---|
106 | database: Library Wide resources, Pre-Creation widget instance |
---|
107 | resources, and Post-Creation widget instance resources. Each of these |
---|
108 | groups are discussed below. |
---|
109 | |
---|
110 | |
---|
111 | Library Wide Resources |
---|
112 | ---------------------- |
---|
113 | |
---|
114 | These resources are fetched once when the Wcl library is initialized |
---|
115 | (before any widgets are created by Wcl). They provide attributes for |
---|
116 | Wcl, and control some of the behavior of Wcl. |
---|
117 | |
---|
118 | wclInitResFile: This is a resource which is ONLY set |
---|
119 | by the command line switch "-rf". You |
---|
120 | should never need to use this resource |
---|
121 | in any direct fashion. It simply allows |
---|
122 | the "-rf" option to never collide with |
---|
123 | wcResFiles specifications in resource files. |
---|
124 | |
---|
125 | wclTraceResFiles: Traces to stderr the files loaded by Wcl. |
---|
126 | This does NOT trace files loaded by Xt or |
---|
127 | Xrm during XtInitialize. By default, this |
---|
128 | is False. Can be set True by the new command |
---|
129 | line flag `-trrf' |
---|
130 | |
---|
131 | |
---|
132 | wclSlowTightNames: Boolean, "True" or "False". |
---|
133 | Default is "False". |
---|
134 | |
---|
135 | |
---|
136 | Table Widget |
---|
137 | ------------ |
---|
138 | |
---|
139 | Major changes to the geometry management algorithm have been made to |
---|
140 | eliminate a "shudder" which one would see when children requested |
---|
141 | resizing, especially with nested XmpTables and XmScrolledWindows. |
---|
142 | Resizing is faster as well as being better. |
---|
143 | |
---|
144 | Build Instructions |
---|
145 | ------------------ |
---|
146 | |
---|
147 | See README_BUILD for detailed instructions on how to build the |
---|
148 | distribution. |
---|
149 | |
---|
150 | If you are using imake, you MUST look at Wc.tmpl and make the necessary |
---|
151 | edits. The distribution provides several versions of this file, |
---|
152 | probably NONE are exactly what you need: |
---|
153 | |
---|
154 | Wc.tmpl My machine, an IPX with X11R5 patch level 12, Motif 1.1.0 |
---|
155 | with HUNDREDS of fixes, OpenLook widgets, and debugged Xt |
---|
156 | library with memory tracing enabled and file tracing hacks. |
---|
157 | |
---|
158 | Wc.tmpl.irix Should work as-is on Irix (Silicon Graphics) machines with |
---|
159 | SGI X (R4) and Motif installations. |
---|
160 | |
---|
161 | |
---|
162 | If you are using make, you MUST look at WcMake1.tmpl and WcMake2.tmpl. |
---|
163 | Again, a couple of different versions of these files are provided, but |
---|
164 | you almost certainly must do something to make it build on your |
---|
165 | platform. |
---|
166 | |
---|
167 | WcMake1.tmpl These work on my machine |
---|
168 | WcMake2.tmpl |
---|
169 | |
---|
170 | WcMake1.svr4 These work on SVR4 machines with X11R4 and Motif 1.1. |
---|
171 | WcMake2.svr4 |
---|
172 | |
---|
173 | WcMake1.sco These work on SCO Open Desk Top machines. Whew! Also, |
---|
174 | WcMake2.sco installable man pages (*S.z, *C.z) are now provided. |
---|
175 | |
---|
176 | ------------------------------------------------------------ |
---|
177 | David E. Smyth David.Smyth@sniap.mchp.sni.de |
---|
178 | Object/X Researcher david@ap542.uucp |
---|
179 | Esprit Research david%ap542@ztivax.siemens.com |
---|
180 | Funding provided by: Siemens Nixdorf Informationssysteme AG |
---|
181 | AP 154, Carl-Wery-Str 22, Munich 83 Germany |
---|
182 | |
---|