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
Libraries
EnhancementPak Widgets library names are as follows:
-
-
libEPak.a
-
libEPak_d.a
-
where _d
indicates that the library includes debugging symbols. When debugging your application, link your application with the _d
version of the EnhancementPak library.
Header files
The header files are located in the <include-path>/Xi
directory.
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
Visual Changes
Several widgets now have resources that cause them to more closely resemble user-interface objects from certain other popular graphical environments.
XiCombinationBox
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.
XiExtended18List
The XmNnewVisualStyle resource (True by default) changes the shadowing that the widget uses for its column titles.
XiOutline
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.
XiTree
The XiTree widget now supports an XmNorientation resource, allowing for vertical as well as horizontal layout.
New Widgets
This release includes the following new widgets:
-
- XiColumn
- XiDataField
- ToolTips library
Refer the EnhancementPak Programmer's Reference manual for more information on these widgets.
New Functions
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
New Resources
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.
Internal Changes
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.
Bug Fixes
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.
Demos
The demos directory contains several examples which illustrate some common uses of the EnhancementPak widgets, as well as the code that manipulates these widgets.
Copying the Source Tree
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
where <install-tree>
is the directory in which EnhancementPak actually resides.
Building the Demos
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. -
Generate
all the Makefiles
.
% xmkmf % make Makefiles
- Build the demo tree:
% make
- 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 imake
.
Troubleshooting Demo Building
If you encounter problems when building the demos, consult the following sections.
Verify That imake or xmkmf Can Be Found
You cannot build the demos if the imake
and xmkmf
utilities are not found. To ensure that they are found, put /usr/bin/X11
in yourPATH
.
Use the which
command to verify that imake
and xmkmf
can be found. For example, enter:
% which xmkmf
The following verification is displayed:
/usr/bin/X11/xmkmf
Verify That make Can Be Found
You cannot build the demos if the make
utility is not found. To ensure that it is found, put /usr/ccs/bin
in your PATH
.
Use the which
command to verify that make
can be found. For example, enter:
% which make
The directory containing the make
utility is displayed.
Known Problems
The following sections describe known problems in EnhancementPak 3.0.
Combination Box
-
- 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.
Toolbar
Setting resources that effect geometry on unmanaged toolbar items can cause the toolbar to increase the width of these items.
Tree
Setting the label associated with a tree node can cause its placement in the tree to be shifted.
Undefined Symbols
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;
Axis
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.