
User interface of tree.uil
The syntax of the Panner and Tree widget definitions is almost the same as the many Motif widget definitions that
you've already seen. The main difference is that you replace the Motif widget class name with user_defined
procedure followed by the name of the widget creation procedure. To reference a user−defined widget in the
controls subsection of a widget, you just use the keyword user_defined followed by the name of the widget.
You can mix user−defined resources and built−in resources as in the Panner definition, which contains some of its
own resource settings as well as a couple of Form constraint resource settings. You can also specify user−defined
resource names in the arguments subsection of a built−in widget definition. For example, the Label widget children
of the Tree contain resource settings for the user−defined XtNtreeParent resource. The Panner widget contains a
user−defined callback setting; the pan() callback routine is invoked when the user adjusts the Panner. The syntax of
using user−defined resources and callbacks is the same as that for built−in resources and callbacks. The main
drawback of user−defined widgets is that, unlike with the built−in Motif widgets, the compiler does not know which
resources are valid for the widget, so it lets you set any resources. This generally is not a problem when you are only
working with a few user−defined widgets, ...