The following sections describe information related specifically to the EnhancementPak distribution included with EPak PRO 3.0 and EnhancementPak 3.0.
EnhancementPak Widgets Libraries and Headers
EnhancementPak Widgets library names are as follows:
_d indicates that the library includes debugging symbols. When debugging your application, link your application with the
_dversion of the EnhancementPak library.
The header files are located in the
In addition, on many systems shared libraries are now supported, offering the ability to build smaller, upgradable binaries. ICS has a commitment to future binary compatibility of the EPak libraries.
Changes Since EnhancementPak 2.5
Several widgets now have resources that cause them to more closely resemble user-interface objects from certain other popular graphical environments.
The XmNnewVisualStyle resource (True by default) changes the shadowing and layout of the widget, so that the text area and the arrow button are more closely integrated.
The XmNnewVisualStyle resource (True by default) changes the shadowing that the widget uses for its column titles.
The XiOutline widget now supports a resource XmNconnectNodes (False by default) which causes the XiOutline to draw lines connecting a parent to each of its children nodes.
The XiTree widget now supports an XmNorientation resource, allowing for vertical as well as horizontal layout.
This release includes the following new widgets:
- ToolTips library
Refer the EnhancementPak Programmer's Reference manual for more information on these widgets.
The library and widgets offer several new functions, including the following:
- Access functions on the XiCombinationBox to retrieve its children
- Access functions on the XiHierarchy/XiTree/XiOutline to retrieve children nodes for a given node
The widgets support several new resources, including the resources on the XiHierarchy/XiTree/XiOutline for greater control of line visuals, pixmap visuals, layout, and spacing.
In addition, the widgets are now consistent and complete in their handling of resource converters for new data types. Refer to theEnhancementPak Programmer's Reference manual for information on the conventions for these string-to-data-type conversions.
Strings, XmStrings, String Tables, and Memory Management
In previous releases of EPak, certain string and compound string resources were documented as having access values of "CG", meaning that they could be set at creation (initialization) time and later retrieved via XtGetValues(), but not set via XtSetValues() ("S") while the widget was being used. In fact, both these resources and others which were documented as "CSG" were really "C". The XmString resources of the XiColorSelector, XiFontSelector, and XiPixmapEditor widgets are most obviously affected, but in general, all XmString resources are now CSG. Your program can now fetch these resources from the widget rather than maintaining a copy.
Refer to the EnhancementPak Programmer's Reference for more information on memory management.
The following internal changes have an impact on application developers:
- Most symbols which did not need to be made public are now made private or are renamed with "Xi" prefixes. This results in less name-space pollution and in a reduced chance of name conflicts with applications.
- Widgets now support shared libraries.
- Widgets now follow the Motif guidelines for writing subclasses using the XmResolvePartOffsets() mechanism. That is, applications using the widgets can be compiled with all CDE or Open Group versions of Motif. Also, subclasses of the EPak widgets themselves can be modified using these guidelines to be equally portable.
Several problems are fixed in this release, including the following:
- Various memory leaks have been fixed.
- XiCombinationBox handling of XmNvisibleItemCount is now more reasonable. Please see the reference manual for more information on dealing with the resources of children of compound widgets.
- Several offset values are now resolution-independent, rather than being dealt with only as pixel values.
The demos directory contains several examples which illustrate some common uses of the EnhancementPak widgets, as well as the code that manipulates these widgets.
Before you build the demos, copy the source tree into a specific location. For example, to build the demos in
/tmp you enter the following:
% cd /tmp % cp -r <install-tree>/demos ./demos
<install-tree> is the directory in which EnhancementPak actually resides.
You may build the demos by hand, or you may use the following commands to build Makefiles for the demos:
- 1. Go to the top of the demos source tree, or to the tree you created for a copy.
% cd demos
If you installed the EnhancementPak in a non-standard location, or if you did not create links from the installation to a standard location, you may need to edit the file
/tmp/demos/demos.cf. See this file for details about the modification.
all the Makefiles.
% xmkmf % make Makefiles
- Build the demo tree:
- If you do not want to build all the demos, you may build them individually. For example, to build the Button Box demo, enter:
% cd ButtonBox % make
For further information on Imakefiles, see the X11R5 man pages and documentation on
Troubleshooting Demo Building
If you encounter problems when building the demos, consult the following sections.
You cannot build the demos if the
xmkmf utilities are not found. To ensure that they are found, put
/usr/bin/X11 in your
which command to verify that
xmkmf can be found. For example, enter:
% which xmkmf
The following verification is displayed:
You cannot build the demos if the
make utility is not found. To ensure that it is found, put
/usr/ccs/bin in your
which command to verify that
make can be found. For example, enter:
% which make
The directory containing the
make utility is displayed.
The following sections describe known problems in EnhancementPak 3.0.
- The resource XmNcomboTranslations is not implemented.
- When using a private colormap, the colormap is reverted to the default colormap when the Combination Box list is displayed. This bug is dependent on the X server and Window Manager being used.
Setting resources that effect geometry on unmanaged toolbar items can cause the toolbar to increase the width of these items.
Setting the label associated with a tree node can cause its placement in the tree to be shifted.
When compiling with EnhancementPak using non-vendor supplied compilers, undefined symbols may be found; in particular __huge_val. If this occurs, add the following lines to your main file.
#include <math.h> double __huge_val = HUGE_VAL;
The XmNlabelFunction resource is documented as a function that returns a String (char *). This resource should return an XmString.
GraphPak Documentation Errata
In the GraphPak documentation, all references to the resource XmNlinennn are incorrect. The resource should be XmNsegmentnnn.