126 lines
5.3 KiB
Plaintext
126 lines
5.3 KiB
Plaintext
|
.\" $Xorg: appF,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
|
||
|
.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
|
||
|
.\" X Consortium
|
||
|
.\"
|
||
|
.\" Permission is hereby granted, free of charge, to any person obtaining
|
||
|
.\" a copy of this software and associated documentation files (the
|
||
|
.\" "Software"), to deal in the Software without restriction, including
|
||
|
.\" without limitation the rights to use, copy, modify, merge, publish,
|
||
|
.\" distribute, sublicense, and/or sell copies of the Software, and to
|
||
|
.\" permit persons to whom the Software is furnished to do so, subject to
|
||
|
.\" the following conditions:
|
||
|
.\"
|
||
|
.\" The above copyright notice and this permission notice shall be included
|
||
|
.\" in all copies or substantial portions of the Software.
|
||
|
.\"
|
||
|
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||
|
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||
|
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||
|
.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||
|
.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||
|
.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||
|
.\" OTHER DEALINGS IN THE SOFTWARE.
|
||
|
.\"
|
||
|
.\" Except as contained in this notice, the name of the X Consortium shall
|
||
|
.\" not be used in advertising or otherwise to promote the sale, use or
|
||
|
.\" other dealings in this Software without prior written authorization
|
||
|
.\" from the X Consortium.
|
||
|
.\"
|
||
|
.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
|
||
|
.\" Digital Equipment Corporation, Maynard, Massachusetts.
|
||
|
.\"
|
||
|
.\" Permission to use, copy, modify and distribute this documentation for any
|
||
|
.\" purpose and without fee is hereby granted, provided that the above copyright
|
||
|
.\" notice appears in all copies and that both that copyright notice and this
|
||
|
.\" permission notice appear in supporting documentation, and that the name of
|
||
|
.\" Digital not be used in in advertising or publicity pertaining
|
||
|
.\" to distribution of the software without specific, written prior permission.
|
||
|
.\" Digital makes no representations about the suitability of the
|
||
|
.\" software described herein for any purpose.
|
||
|
.\" It is provided ``as is'' without express or implied warranty.
|
||
|
.\"
|
||
|
.bp
|
||
|
\&
|
||
|
.sp 1
|
||
|
.ce 3
|
||
|
\s+1\fBAppendix F\fP\s-1
|
||
|
|
||
|
\s+1\fBResource Configuration Management\fP\s-1
|
||
|
.sp 2
|
||
|
.LP
|
||
|
.XS
|
||
|
\fBAppendix F \(em Resource Configuration Management\fP
|
||
|
.XE
|
||
|
Setting and changing resources in X applications can be difficult for
|
||
|
both the application programmer and the end user. \fBResource
|
||
|
Configuration Management (RCM)\fP addresses this problem by changing
|
||
|
the \fBX Intrinsics\fP to immediately modify a resource for a
|
||
|
specified widget and each child widget in the hierarchy.
|
||
|
In this context, immediate means: no sourcing of a resource
|
||
|
file is required; the application does not need to be restarted for the
|
||
|
new resource values to take effect; and the change
|
||
|
occurs immediately.
|
||
|
.LP
|
||
|
The main difference between \fBRCM\fP and the \fBEditres\fP
|
||
|
protocol is that the \fBRCM\fP
|
||
|
customizing hooks reside in the \fBIntrinsics\fP and thus are linked with
|
||
|
other toolkits such as Motif and the Athena widgets. However, the
|
||
|
\fBEditRes\fP protocol requires the application to link with the
|
||
|
\fBEditRes\fP
|
||
|
routines in the Xmu library and Xmu is not used by all applications that
|
||
|
use Motif. Also, the \fBEditRes\fP protocol uses ClientMessage,
|
||
|
whereas the
|
||
|
\fBRCM\fP \fBIntrinsics\fP hooks use \fBPropertyNotify\fP events.
|
||
|
.LP
|
||
|
X Properties and the \fBPropertyNotify\fP events are used
|
||
|
to implement \fBRCM\fP and
|
||
|
allow on-the-fly resource customization. When the X Toolkit is
|
||
|
initialized, two atoms are interned with the strings
|
||
|
\fICustom Init\fP and
|
||
|
\fICustom Data\fP. Both
|
||
|
.PN _XtCreatePopupShell
|
||
|
and
|
||
|
.PN _XtAppCreateShell
|
||
|
register a \fBPropertyNotify\fP event handler to handle these properties.
|
||
|
.LP
|
||
|
A customization tool uses the \fICustom Init\fP property to \fIping\fP an
|
||
|
application to get the application's toplevel window. When the
|
||
|
application's property notify event handler is invoked, the handler
|
||
|
deletes the property. No data is transferred in this property.
|
||
|
.LP
|
||
|
A customization tool uses the \fICustom Data\fP property to tell an
|
||
|
application that it should change a resource's value. The data in
|
||
|
the property contains the length of the resource name (the number
|
||
|
of bytes in the resource name), the resource name and the new
|
||
|
value for the resource. This property's type is \fBXA_STRING\fP and
|
||
|
the format of the string is:
|
||
|
.IP 1. 5
|
||
|
The length of the resource name (the number of bytes in
|
||
|
the resource name)
|
||
|
.IP 2. 5
|
||
|
One space character
|
||
|
.IP 3. 5
|
||
|
The resource name
|
||
|
.IP 4. 5
|
||
|
One space character
|
||
|
.IP 5. 5
|
||
|
The resource value
|
||
|
.LP
|
||
|
When setting the application's resource, the event handler calls
|
||
|
functions to walk the application's widget tree, determining which
|
||
|
widgets are affected by the resource string, and then applying the value
|
||
|
with
|
||
|
.PN XtSetValues.
|
||
|
As the widget tree is recursively descended, at
|
||
|
each level in the widget tree a resource part is tested for a match.
|
||
|
When the entire resource string has been matched, the value is applied
|
||
|
to the widget or widgets.
|
||
|
.LP
|
||
|
Before a value is set on a widget, it is first determined if the last
|
||
|
part of the resource is a valid resource for that widget. It must also
|
||
|
add the resource to the application's resource database and then query
|
||
|
it using specific resource strings that is builds from the widget
|
||
|
information.
|
||
|
|
||
|
|