XtSetSubvalues()XtSetSubvalues()NameXtSetSubvalues - copy resource settings from an ArgList to a subpart
resource structure.
Synopsis
void XtSetSubvalues(base, resources, num_resources, args, num_args)
XtPointer base;
XtResourceList resources;
Cardinal num_resources;
ArgList args;
Cardinal num_args;
Inputs
base Specifies the base address of the subpart data structure into
which the resources should be written.
resources Specifies the subpart resource list.
num_resources
Specifies the number of resources in the resource list.
args Specifies an argument list of name/value pairs that contain
the resource settings to be copied into the subpart data
structure.
num_args Specifies the number of arguments in the argument list.
DescriptionXtSetSubvalues() copies the values of named resources from args into
the structure pointed to by base. The resource list resources speci‐
fies the size of each resource in this structure, and its offset from
base. The name of each resource in args is looked up in this resource
list, and the resource's specified size and offset are used to copy the
resource value into the subpart structure. If the name of a resource
in args does not match any of the resources described by resources,
then that resource name/value pair in args is silently ignored.
See XtGetApplicationResources() for a description of the various fields
of a XtResource structure and an example of initializing an XtRe‐
sourceList.
Usage
If a widget has subpart resources, it can fetch initial values for
those resources from the resource database by calling XtGetSubre‐
sources() from its initialize() method and passing the user's argument
list to override values from the database. In the resource file, the
subpart will have a name, and the subpart resources will be specified
under that name in the resource hierarchy. Most widgets will want to
allow the user to set the values of subpart resources from application
code as well. One way to do this is to call XtSetSubvalues() from
within the widget's set_values() method, passing the subpart resource
list and the user's argument list. (Prior to Release 4, you had to use
the set_values_hook() method for this purpose.) With this approach,
subpart resources seem just like normal widget resources to the user;
both types of resources can be set by calling XtSetValues(). Another
approach is to provide a special function (which will use XtSetSubval‐
ues()) to set values of your subpart. This approach emphasizes that
the subpart is a distinct component of the widget.
Note that a more flexible alternative to subparts is to use non-widget
objects which the user can create as children of your widget. This way
the user has a handle on the "subparts" and can manipulate them
directly.
To get the values of named resources from a subpart, use XtGetSubval‐
ues().
To set resource values in a subpart structure using a NULL-terminated
variable-length argument list instead of an ArgList, use XtVaSetSubval‐
ues().
Structures
XtResource is defined as follows:
typedef struct _XtResource {
String resource_name; /* Resource name */
String resource_class; /* Resource class */
String resource_type; /* Representation type desired */
Cardinal resource_size; /* Size in bytes of representation */
Cardinal resource_offset;/* Offset from base to put resource value */
String default_type; /* Representation type of specified default */
XtPointer default_addr; /* Address of resource default value */
} XtResource, *XtResourceList;
See XtGetApplicationResources() for an explanation of the fields of
this structure.
Arg are defined as follows:
typedef struct {
String name;
XtArgVal value;
} Arg, *ArgList;
See AlsoXtGetApplicationResources(1), XtGetSubresources(1), XtGetSubvalues(1),
set_values(4).
Xt - Resource Management XtSetSubvalues()