BX PRO Frequently Asked Questions

Frequently asked questions for BX PRO.

Getting Help!

Getting Help!

  • If you are an existing ICS customer, please send your questions to support@ics.com. You can also call us on the telephone at 1.617.621.0060 or Fax us your questions at 1.617.621.9555.
  • If you are evaluating Builder Xcessory, send all your non-technical questions to your ICS sales representative. If you are not sure who that might be, send email to sales@ics.com and the proper person will get in touch with you.
  • If you have a technical question, send email to evaluations@ics.com and a technical support engineer will respond within a business day.
  • In either case, please read Expediting Your Response From ICS Support later in this FAQ to understand things that you can do that us that will speed your response.

Installing from a CD

Installing from a CD

If you received a CD in the mail, please read this section. If you downloaded an evaluation, please see the section called Installing from a Download.

Contents of the CD-ROM

The CD-ROM contains the following files and directories:
File Description
./install.txt Text version of these notes
./install.pdf Adobe Acrobat version of these notes
./manifest Text file identifying product(s) contained on the CD-ROM
.// One or more product installation directories. See the file ./manifest for descriptions
./goodies/ Directory with various software that you might find useful.

Quick Start

  1. Mount the CD-ROM
  2. Change to the directory on the CD-ROM that contains the product you want to install.
  3. Review any readme, license, release.txt, and change.log files you find in the directory.
  4. Execute the setup program and follow its instructions:
    % ./setup

Mount the CD-ROM

If your system does not automatically mount the CD-ROM, mount it using the instructions below.

  1. Become the superuser.
  2. Mount the CD-ROM using the command below that matches your system:
    OS Mount Command
    AIX %mount -r -v'cdrfs' /dev/cd0 ${mount-point}
    HPUX %mount -r -F cdfs /dev/dsk/c0t3d0 ${mount-point}
    IRIX %mount -t iso9660 /dev/dsk/dks0d1s7 ${mount-point}
    SunOS %mount -o ro -t hsfs /dev/sr0 ${mount-point}
    Solaris %mount -o ro -F hsfs /dev/dsk/c0t6d0s0 ${mount-point}
    Tru64 %mount -r -t cdfs /dev/rz4c ${mount-point}
    Linux %mount -t iso9660 /dev/cdrom ${mount-point}

Notes:

  1. ${mount-point}refers to the location in the file system that you want the CD-ROM to be mounted.
  2. The specific device files above (e.g., /dev/rz4c) are just examples. Please check with your system administrator for the specific device file to use.
  3. When done, you can unmount the cdrom using the command:
    % umount ${mount-point}

Installation

Your CD-ROM will contain one or more directories. Each directory will be the name of the ICS product. The text file ./manifest describes each product contained on the CD-ROM and identifies the associated directory. To install a specific product, follow these instructions.

  1. Become the superuser (if you are not already).
  2. Change directory to the appropriate product directory ().
    % cd ${mount-point}/
  3. Read the file license contained in this directory before proceeding. Do not install the software if you are not willing to agree to the terms of this license. You might also want to read any readme or change.log files provided in the directory too!
  4. Execute the setup command and follow its prompts.
    % ./setup

Installing from a Download

Installing from a Download

The software you downloaded is a copy of the actual installation media that we ship on CD. The only difference is that it has been tar’ed and then gziped. After performing the tar and gunzip in Step #1 below, you can use follow the detailed instructions in Installing from a CD above. Alternatively, you can follow the Quick Start instructions below.

  1. Extract the Software: If you have Gnu Tar (commonly called gtar, or just tar on Linux) type at the shell prompt:
    % tar xzvf bxe6.tar.gz

    Where will be 2-5 characters representing the target operating system for your evaluation. If you do not have gnu tar type:
    % gunzip bxe6.tar.gz

    and then type:
    % tar -xvf bxe6.tar

    Note: This step does NOT install the product, this merely creates a directory structure which is the same as if the install CD were mounted in the new directory.

  2. Change to the new directory, it will be something similar to the following line:
    % cd bxe
  3. This directory may contain several directories of software that were packaged on this media. Read the file "manifest" for a full description. In this directory you will also find a pdf file install.pdf (or install.txt), which will give you detailed installation instructions.
  4. Change into the appropriate subdirectory that contains the BX PRO eval and type:
    % ./setup

I have received the software in a .bin format. How do I install using a .bin file?
Please run the .bin file from the command prompt. This will start a GUI installer which will guide you through the installation process.

License Key Installation for Evaluations

License Key Installation for Evaluations

Note: There is a known bug with SGI evaluations of Builder Xcessory that is fixed in the next release. For now, if you are evaluating Builder Xcessory on SGI, please see the question: Why does my BX Evaluation on SGI always start up in Demo mode? and then proceed with step #3 below.

Full operation of a BX PRO evaluation requires the installation of two evaluation license keys: one for Builder Xcessory and one for the bundled libraries (EPak and ViewKit). You should have received a separate email with both keys. If you did not, you can request another evaluation key at . The following instructions will help you properly install the keys.

  1. Start BX by typing the following at the shell prompt:
    % bx
  2. BX will startup and ask you for a license key. Open up the email containing the key and copy-paste it into the text entry field. If you do not yet have your key, you can click Cancel and continue in "Demo Mode" (i.e., you cannot save any user interfaces). BX will keep asking you for the Key on every startup until you install a Key.

    Note: The evaluation key format differs between Linux and UNIX. If you are installing a Linux evaluation key, it should look like (it is a single line, ignore any line breaks):

    LICENSE BuilderXcessory (key)

    And a UNIX evaluation key should look like (again a single line, ignore any line breaks):

    FEATURE BuilderXcessory ICSBX 6.000 (Date) (#licenses) (key) "ICS Builder Xcessory" DEMO

    Where (key), (Date), and (#licenses) are replaced by values appropriate for your environment. When asked to enter the Evaluation Key, enter the whole line starting with "LICENSE" for Linux and "FEATURE" for UNIX. It is highly recommended that you copy and paste the appropriate line from the email containing the key to avoid re-typing mistakes.

    Note: The Builder Xcessory evaluation key is stored in a subdirectory of ~/.builderXcessory6. This means that every person evaluating Builder Xcessory must install this key through the dialog box mentioned above. You do not need to request additional evaluation keys. The one that you used will work for them too.

  3. The EnhancementPak and ViewKit libraries included with the BX PRO eval, also require a key to run applications. You can build an application using EnhancementPak widgets or the ViewKit Library, and you can even generate code, compile it and link it. However, when you try to run your application, a Dialog Box will appear and a Key will be requested (both EnhancementPak and ViewKit are enabled by the same Key). If you don't enter a key, the application will be terminated.

    Note: If you wish to avoid entering the EnhancementPak/ViewKit evaluation license key every time your run your test application, then simply make sure that the following commands are executed in the shell (or shell script) that runs your application:

    For csh (and its variants):
    % setenv ICS_EVAL_KEY (widget libraries evaluation key)

    For sh (and its variants):
    % export ICS_EVAL_KEY=(widget libraries evaluation key)

License key Installation for Purchased Products

License Key Installation for Purchased Products

Since there is no license key for the bundled libraries (EnhancementPak and ViewKit), installing the license key for a purchased version of BX PRO can be easier than an evaluation version. Once you've installed the key for BX PRO, you're immediately operational. Before you start your installation, request your license key by visiting: BROKEN PAGE.

License key installation varies slightly depending on whether you are installing a Linux single user, a Linux server license, or a UNIX version of BX PRO:

  1. Linux (single user): If you are the only user of the license, the installation of a permament license key for Linux is exactly the same process as that of the evaluation version. Start BX up and copy/paste key you received via email. If you have any questions, please review the prior section.
  2. Linux (server install) You can share a license of BX PRO installed on a server among multiple users providing you do not have more simultaneous users than you have licenses. The recommended procedure in this case is to install a license in a common directory that is readable by all users and then have each user set the environment variable ICS_LICENSE_FILE to that directory (perhaps in their shell startup file.) If you have any questions, please review the question How can I put the license file somewhere else?.
  3. UNIX: To receive the full benefit of the floating license for BX PRO, you will need to install the FlexLM license server. Please read Appendix C of the BX Reference Manual. This information is also available at: http://www.ics.com/files/docs/bx/6/BX60RefManual.pdf.

NOTE: It is important that you install BX PRO from the distribution media you received as the result of your purchase. The evaluation versions of BX PRO have a variety of limitations, the most obvious of which is that EPak and ViewKit require a license key. Simply delete the BX PRO home directory (typically under /opt) and reinstall the production version of BX PRO.

License Troubleshooting

I installed the key as suggested, but upon startup BX tells me that the key it found is invalid. Did you send me a bad key?

Possibly, but not likely. Typically, a key is not recognized for one of the following reasons:

  1. On UNIX, you have installed a BX 6 key and a BX 5 key is still in the FlexLM database. (See next question)
  2. A UNIX key is used for Linux (or the opposite). Linux keys start off with the word "LICENSE" while UNIX keys start off with the word"FEATURE".
  3. Some email readers wrap lines and only half the line gets pasted into the text field.
  4. People try to rearrange a Linux key to look like the example UNIX key that the dialog box requests (This is a bug in BX 6.0. In BX 6.1, the example used for Linux will be a Linux key, and the example used for UNIX will be a UNIX key).
  5. You have put the License file in a non-default location and have set the wrong environment variable. UNIX and Linux use different environment variables to specify the location of the license file. See the question How can I put the license file somewhere else? for details.
  6. If all else fails, remove the .builderXcessory6 directory in the user's home directory and try starting bx again. (It stores the license key in a file in the .builderXcessory6 directory and if you have a bad key, it will generate the error message you received.)

I am upgrading from BX 3.5.1 for VMS/VAX to BX 5.0 on OpenVMS running on the Alpha hardware platform. How do I get the license loaded under OpenVMS?

I am able to register the license. However, when I try to load the license using the following command:
LIC LOAD BUILDERXCESSORY

I get the error
%LICENSE-W-WRGARCH, BUILDERXCESSORY license is not valid on this architecture

When you install BX5.0 VMS license key on a previously installed BX3.5.1 VMS license key, the above error message is generated. This is because it has the same product name as the earlier one. You need to delete BX3.5.1 license key completely before installing BX5.0 license key.

I'm using Solaris and I've just upgraded to BX 6 from BX 5. After installing BX 6, I've installed the corresponding new BX 6 keys into the FlexLM license server. Whenever I try to start BX 6, it runs in "Demo Mode" but BX 5 runs in "Full Use Mode". Why?

On UNIX platforms, ICS uses the FlexLM license server to manage the floating licenses to BX. When you purchase a new license or an upgrade license, you use commands provided by FlexLM to add these licenses to the database of the license server. This process can be confusing, and we highly recommend that new users carefully read Appendix C: License Manager, before adding attempting to add new or upgrade licenses.

In the situation described, the most likely problem is that you forgot to remove the BX 5 licenses from the FlexLM license server. A BX 6 license key will enable both BX 6 and all prior releases of BX (e.g., BX 5, 4, 3.5.1, etc.) to function in "Full Use Mode". However, when BX 6 checks out a BX 5 key, it rejects it and goes into "Demo Mode". This explains the observed situation where BX 5 works, and BX 6 does not.

Why does my BX Evaluation on SGI always start up in Demo mode? It never asked me to install a key. How do I provide BX with my evaluation key so that I can get full use of the product?

There is a known problem with Builder Xcessory evaluations on SGI/IRIX that is fixed in the next release. If you are using IRIX, you should create a license file that contains the license key and then set the environment variable LM_LICENSE_FILE to point to it. Let's assume that you've put your evaluation license for BX in the file /some_path/mylicensefile.dat. Then depending on which UNIX shell family you are using, you would do one of the following:

For csh (and its variants):
% setenv LM_LICENSE_FILE /some_path/mylicensefile.dat

For sh (and its variants)
% export LM_LICENSE_FILE=/some_path/mylicensefile.dat

When BX PRO requests my evaluation key, the dialog box that appears specifies a format that is different than the key I was sent. Do I mangle my Linux key into that format?

No. Cut the line from the email that delivered the key and paste the exact line into the entry field. The example license line is accurate for UNIX evaluation licenses.

Do I enter the whole line or just the "key" portion when BX PRO requests a key?

Enter the whole line starting with "LICENSE" for Linux evaluations and "FEATURE" for UNIX evaluations.

How can I put the license file somewhere else?

The environment variables ICS_LICENSE_FILE (on Linux platforms) and LM_LICENSE_FILE (on UNIX platforms) are used to specify the location of the BX PRO license file. To set the environment variable

Linux:
For csh (and its variants):
% setenv ICS_LICENSE_FILE /some_path/mylicensefile.dat

For sh (and its variants)
% export ICS_LICENSE_FILE=/some_path/mylicensefile.dat
UNIX:

For csh (and its variants):
% setenv LM_LICENSE_FILE /some_path/mylicensefile.dat

For sh (and its variants)
% export LM_LICENSE_FILE=/some_path/mylicensefile.dat

My system administrator installed the evaluation and the corresponding evaluation key. However, when I start up BX, it requests a key from me and when I don't provide it, it goes into demo mode. How do I fix this?

Everybody that will be using BX must install the evaluation key or set the proper environment variable (see question above) to point to a common location for the evaluation license key.

Can I evaluate Linux and Solaris simultaneously?

BX 6.1: Yes, just cut and paste the appropriate key into the key request dialog box as BX starts on the platform. Alternatively, if your startup file detects which system type you are using, just set the environment variable above to the appropriate location for that system. EPak and ViewKit share the same evaluation key on both Linux and UNIX, so you can just set it once.

BX 6.0: If you need to evaluate both a UNIX and Linux version of BX PRO with BX 6.0, do the following:

Linux: Copy your license into a file called icslicense.dat and save this file into your home directory.

UNIX: Start BX on your UNIX system and copy and paste the UNIX evaluation key into text box when it requests a license.

I'm confused, I thought that BX used the FlexLM license server?

When you install a full, permanent license for BX PRO on UNIX systems, you will use FlexLM. Detailed instructions for installing FlexLM are provided in Appendix C of the BX Reference Manual. If you are installing a permament key, we urge you to read this section in detail to maximize your benefit from using floating licenses.

To reduce the amount of time spent installing keys, we have developed a simpler scheme for evaluation licenses. This section talks about how you install an enable an evaluation of BX PRO.

I am using Solaris 8 and having a problem time starting the ICSBX daemon and the lmgrd program.

You need to manually set the number of file descriptors in the shell that starts the lmgrd daemon to something less than 4096. Our suggestion is to use 1024 since that was the default on Solaris 7 systems. To do so:

For csh (and its variants):
% limit descriptors 1024

For sh (and its variants)
% ulimit -H -n 1024

Restart the lmgrd and do a:
% ps -ef

You should see the ICSBX daemon running.

I have FlexLM 7.0 running on my Solaris 8 system and I've added my BX PRO license to its database. When I run ./lmstat, it claims I am checked in. However, when I start BX up, I'm told that no license exists. How can I get BX to checkout that license?

You need to manually set the number of file descriptors in the shell that starts the lmgrd daemon to something less than 4096. Our suggestion is to use 1024 since that was the default on Solaris 7 systems. To do so:

For csh (and its variants):
% limit descriptors 1024

For sh (and its variants)
% ulimit -H -n 1024

Restart the lmgrd and do a:
% ps -ef

You should see the ICSBX daemon running.

Resolving Platform Specific Problems

I am running on Red Hat Linux 7.3. It works fine when I am running on the monitor attached to my Linux box. However, if I am displaying BX on another system, it crashes. What is wrong?

BX is known to crash when run on RH Linux 7.3 if the environment variable LANG is set to en-US.iso885915 and you are running BX on a foreign X server. More information on this bug in Red Hat can be found https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=62844. To work around it, please set your environment variable LANG to en_US. For example, if you are using the csh shell you would type:
% setenv LANG en_US

After installation, I run BX on SUN Solaris, but I got an error message like: bxb: fatal: libCrun.so.1 version 'SUNW_1.2' not found.
You need to install a patch on your system. They are available from Sun.com web site. The patch numbers are

108434-17 (if you are using Solaris 8)
111711-11 (if you are using Solaris 9)

These patches will provide the libraries that are needed by BX.

When I run BX6.x on Solaris, I get the following error message and BX exits. What do I need to do?

ld.so.1: /opt/bxpro-6.1/bin/bxb: fatal: relocation error:
file /opt/bxpro-6.1/bin/bxb: symbol __1cDstdJbad_allocG__vtbl_:
referenced symbol not found

This error message is probably due to you having an older version of a C++ shared library installed. To confirm this, execute the following commands:

% what /urs/lib/libC.so.5 | grep RELEASE
% what /usr/lib/libCrun.so.1 | grep RELEASE

If the output of either of these commands is: Workshop Compiler 5.0 C++ 5.0, then you need to download the Sun patch 106327-16. This patch is for SunOS 5.7 and contains 32-Bit Shared library patch for C++ and includes libC.so.5 and libCrun.so.1.

You should create soft links to these libraries. ie,
libCrun.so -> libCrun.so.1
libC.so-> libC.so.5

Make sure that your environment variable LD_LIBRARY_PATH includes the directory with these soft links.

I'm running BX PRO on Linux. Which version of Open Motif is BX compatible with?

BX PRO 6.0 is only compatible with Open Motif 2.1. If you are running Red Hat 7.3, the default version of Open Motif is 2.2. You need to install the Open Motif 2.1 compatibility library that can be found elsewhere on the Red Hat 7.3 distribution. If you cannot find it, and you have a CD based evaluation, then you can use the RPMs found on the CD at: /ome-compat/ (alternatively, they may exist at: /bxe6lin/ome-rpms/) If you downloaded your eval, see the suggested sources for Open Motif provided in the next question.

BX PRO 6.1 is compatible with Open Motif 2.2 on Red Hat 7.3+ and is configured to use Open Motif 2.1 on Red Hat systems prior to Red Hat 7.3. If you have change Open Motif versions, make sure that you install a compatible version of BX PRO.

I'm running BX PRO on Linux. and when I start it, I get an error message complaining about the routine xmSimpleSpinBoxWidgetClass being undefined. What is wrong?

BX 6 does not work with lesstif (an Open Motif clone). If you try to run BX 6, and only have lesstif installed (or your shared library path is set so that the lesstif library is found first), you will get an error message complaining about the undefined routine xmSimpleSpinBoxWidgetClass. The solution to this is to install Open Motif. (See previous question for discussion of Open Motif compatibility.) The following provides the links to URLs for both the

Runtime RPMs
http://www.rpmfind.net/linux/rpm2html/search.php?query=openmotif&submit=...

Development RPMs
http://www.rpmfind.net/linux/rpm2html/search.php?query=openmotif-devel&s...
First install the runtime RPM, and then install the development kit.

I would like to install the latest release of the gcc compiler and use it with ViewKit. (Or alternatively: I would like to switch from the gcc compiler on Solaris to the Sun Forte compiler.) Is this going to cause any problem with BX or its libraries?

ViewKit is a C++ library and because of the implementation of the C++ language, is dependent on the specific version of the C++ compiler you are using. If you use libraries built with one C++ compiler, and you try to link those C++ libraries with code or libraries generated with another compiler, you will get link errors at best, and in the worst case, puzzling runtime errors. In some cases, even "minor" releases in the C++ compiler can create incompatibilities (e.g., gcc 2.95 and gcc 2.96 are NOT compatible!) ICS provides ViewKit for a wide variety of C++ compiler releases. So when you install, make sure that you pick the one that matches the particular release of your C++ compiler!

The compiler released use to build ViewKit is encoded in the name of a file that starts out with vkcompiler.{compiler version}. For example if you installed ViewKit for Solaris and the Sun Cxx 4.2 compiler on your system, then you would see in the install directory (typically /opt/bxpro-6.0/lib) the files:

vkplatform.sparc-solaris-2
vkcompiler.suncxx4.2

On HPUX11, when we link we get the following error: Symbol not found: XmeStringsAreEqual.

XmeStringsAreEqual is undefined and found in XmP.h. Please download the patch, PHSS_30261, from HP's website. This patch will fix this issue.

My install of BX PRO failed. Where can I find a clue to the reason?

When the ICS installer runs, it creates a log file in /tmp. If your installation fails, or you appear to be missing the actual bx shell script, this log should provide you with a clue to the problem. The format of the file is:

icsInstal-mm-dd-1yy.log

This file can be cryptic. So if the problem is not obvious, please send it to ICS along with your problem report.

Quick Start Hints

Quick Start Hints

Builder Xcessory is a professional tool for software developers that want the convenience and productivity of a visual design tool. The Best Way to Get Started with BX is to use the tutorials that are included with every BX install. The tutorials and product documentation for BX is installed on your machine during installation and can be accessed through the Help menu.

  1. Depending on your configuration, you may or may not see the objects belonging to the ViewKit and EnhancementPak libraries on the palette. To use ViewKit, you must select "ViewKit" in "Select a Language". (It is under the "Options" menu in the main window of BX.)- If you would like to use EnhancementPak, and do not see its widgets on the BX palette, then under the "Behavior" tab of the "User Preferences" menu item (again under "Options"), select "Start with EPak Widgets". Save your user interface, and restart BX PRO.
  2. Since ViewKit is a comprehensive C++ class library and application framework, it can be confusing at first. To define your components, you should work in "Class Mode". Once you've defined your components, create instances of them in "Instance Mode". This is in contrast to building a standard C-based Motif GUI where you operate completely in instance mode. Tutorial 7 provides a detailed walk through for using ViewKit.
  3. Once you have your GUI defined, make sure you setup the code generation preferences for each of the different language modes you will be using: C, C++, ViewKit, UIL, and Java AWT. This can be done by setting the appropriate values in the "Code Generation Preferences" dialog box that can be brought up by selecting the browser window's "Options" and "Code Generation Preferences" menu.
  4. The compile options and link line for the generated code will vary depending on your system and how things are installed on it. If you are using Linux, you may want to use the following (this is really one line, but may be wrapped by the browser) as a starting point: (the makefile options are available from the "Makefile" tab in the "Code Generations Preferences" dialog box):

    CC=g++ CFLAGS=-I/opt/bxpro-6.0/include -DFUNCPROTO -DXTFUNCPROTO LIBS=-L/opt/bxpro-6.0/lib -lEPak -L/usr/X11R6/lib -lvk -lvkhelp -lXpm -lXm -lXt -lSM -lICE -lXp -lXext -lX11 -lXmu -ldl -lm

  5. If you are using ViewKit or EPak, you made need to indicate the location of the shared libraries. On most UNIX/Linux systems, this is done by setting the LD_LIBRARY_PATH environment variable (HP uses SHLIB_PATH):
    % export LD_LIBRARY_PATH=/opt/bxpro-6.0/lib/

Documentation

Where is the documentation for Builder Xcessory?

The pdf versions of the documentation for BX are installed on your machine during installation and can be accessed through the Help menu. The documentation is also available here

Are there any tutorials or other aides to get started?

Builder Xcessory provides a comprehensive set of tutorials. They are also in pdf form and also accessible from the BX Help menu. The easiest way to get started with BX , is to try the first three-four tutorials and start using BX immediately.

Can I avoid setting an explicit size to a widget?

When you place an object in Builder Xcessory, you implicitly provide a width and height for the object. If you don't want to set the width and height, use the Natural Size action from the Main Window Edit menu or from the MB3 Quick Access menu in the Browser Tree or on the object itself. By setting Natural Size, the child widget will automatically adjust to changes in the size of its parent.

Selection/Layout

How do I select a parent widget and all its children?

You can select or unselect an entire hierarchy of widgets by holding the Shift key and selecting the top widget in the hierarchy in the Browser. You can also select an entire hierarchy of widgets in your user interface by using the lasso-selection. Select the container and its children by holding the Shift key while dragging a box around the manager using MB1. Then move the selected group using MB1.

Is there a quick way to copy an object?

Many find the select-copy-paste process too long to copy objects. BX provides a faster way. To quickly copy objects, hold down the Ctrl key while dragging an object with MB2. Then drop the copy in its new location.

How can I make it easier to resize and align objects?

Increasing the size of the layout grid can make it easier to resize and align objects with the mouse. Use the User Preferences Dialog to change the resolution from its default value of 10 pixels. BX also provides an alignment editor that allows you to quickly align or distribute widgets. Look for it under the Edit menu in the Main Window.

I keep missing the drop site as I try to parent a new widget. Is there an alternative mechanism?

Sometimes it is difficult to zero in on the exact drop site when adding a widget to your user interface. For example, when adding a pushButton to a cascadeButton, it is easy to miss the drop site and end up with the pushbutton parented to the wrong widget. In cases like these, it is usually much easier to select the widget on the palette with MB2 and then drop it on the desired parent widget in the Browser. If you prefer the WYSIWYG approach, then the next question on Keep Parent might be a solution.

I keep getting an error message that I’m trying to attach a widget to the wrong parent? How do I know what are the legal combinations?

One of the toughest challenges facing a new Motif developer is determining which widgets can be children of which parents. ICS recommends that new Motif developers select "Keep Parent" (Main Window->View). The Keep Parent option only allows valid children of the currently selected widget to be selected on the palette. In Keep Parent mode, you first select which object is going to be the parent by clicking on it in your user interface or in the Browser. Widgets on the palette that remain sensitive are valid children of the currently selected widget. All Widgets that are NOT valid children are grayed out.

When I build my GUI everything looks great in BX in both Build mode and Play mode. Yet, when I build and run the actual application, things look different. For example, I have different fonts, widget sizes differ, etc. What is going on?

Although there are several potential causes for this behavior (for example, see other FAQ questions on app-defaults), if you are using Linux, the most common one is that you are using two different versions of Motif. BX uses the Motif shared libraries found on your system. However, it is also possible you also have LessTif (a LGPL clone of Motif) installed, or some older version of Motif. If you are not careful with your link line you might find that your application is using something other than what you expected. Typically, this is easy to determine by using the "ldd" command to see which Motif libraries our programs is using. Then run the same command on the bx binary "bxb" and verify that they are the same libraries.

Whenever I try to set a resource, I get the error message: "Widget Does Not Allow Resource to be Modified at this Time". What does this mean and how do I work around this?

First, let’s explain why this error message is generated.

When you request BX to set a resource, it sets the resource using the standard XtSetArg routine. It then reads the value of he resource back using the standard XtGetArg function. If the values read back do not match the new values, BX generates the error message "Widget Does Not Allow Resource to be Modified at this Time". Basically, this error message means that the Motif toolkit you are using is not allowing the resource to be set.

In many cases, the situation stems from the fact that you are trying to change the physical dimensions of a child widget where its geometry is actually being overridden by the Parent object. For example, it is very common for this error message to occur when you have parented a XmFrame to an XmForm, set the attachments, and then try to resize directly the XmFrame (we do this in Tutorial 3!). You can get around this in a couple ways. In many cases, it is easiest to grab the user interface with the Window Manager and directly resize the window. In other cases, you will need to unhook the various Attachments, resize as desired, and then reestablish the attachments.

This error message might also be generated in cases where you need to set the values of multiple resources at the same time. For example, in ICS’s EditTable widget, you need to set the number of rows and columns at the same time. You can’t just change the number of columns without setting the number of rows too. It is common for users to try to change the number of columns in the resource editor and receive this error message. Since you cannot change the number of rows and columns simultaneously from within the BX resource editor, you have to apply a different strategy to set the resources appropriately. Basically, you create a "style" that has the number of columns and rows set to the desired value. You then apply this style to your EditTable widget and both rows and columns get set simultaneously and the widget is happy. This strategy can also be applied to other widgets that have similar constraints.

Making Building Xcessory Even Easier to Use

I have a large user interface and I find that I’m always searching for the currently selected object in the Browser. Is there anyway to keep the Browser tree centered on the user interface object that I’m working on?

To set the Browser tree view to automatically show the currently selected object, select User Preferences from the Main Window Options menu, click on the Behavior tab, and select the Center Browser Tree toggle. When you select an object, the tree view will automatically center itself around the selected node.

Can I customize the BX toolbar?

You can add an item to the BX Toolbar in the Main Window by holding the Shift key when you select a menu entry. You can remove an item from a Toolbar by holding the Shift key when you select either the Toolbar item or the item's corresponding menu entry.

Is there any way to eliminate the Delete Confirmation dialog box that pops up when I delete an object?

By default, a Delete Confirmation dialog is displayed when you attempt to delete an object. To unset Delete Confirmation, select User Preferences from the Main Window Options menu, click on the Behavior tab, and unselect the Confirm Delete Actions toggle.

What’s the fastest way to populate a menu?

To quickly populate a menu, use the Keep Parent option from the Main Window’s View menu. Select the Pulldown Menu you want to populate and set Keep Parent. Then to add children to this menu, just double-click on the desired widget in the Palette.

I accidentally selected the wrong widget on the Palette. How do I de-select it?

If you have selected an object on the palette you did not intend to select, simply press the Escape key OR press the MB2.

Efficient Use of Screen Space

My screen is filled up with shells. Can I set BX to only display the shells I am currently working on?

To save screen space, you can selectively hide shells you are not using. To hide a shell, click on a selected shell name in the Browser Instance or Class list on the left of the Main Window. The shell name is unselected and the shell is hidden.

Note: This does not effect whether the shell is managed, and so visible, when you generate code. See question on "How do I gain control over the display of these Dialog boxes?" if you are trying to control when a particular shell is visible in the actual application.

Can I make the Palette smaller so that I can eliminate the need to use the scrollbars to access a widget?

To save screen space, you can click on a Palette collection folder icon to close the folder. For example, if you are tailoring a particular shell and have already laid out the containers, you might want to collapse the Motif Containers to eliminate the need for scroll bars on the Palette. This would provide easier access to the widgets that you need to complete your user interface.

Resource Editor Tips and Tricks

When I generate code, all my Dialog boxes are managed and visible. How do I gain control over the display of these Dialog boxes?

By default, any object you create in BX is automatically visible. You can hide objects in your interface by selecting one or more and choosing the Hide option from the Resource Editor Component menu. You would commonly do this to Dialog boxes that would popup under control of the applications that you do not want visible at startup. "Hidden" objects will not appear until your application specifically "manages" them.

Note: Although the "Hide" option will have the side effect of cleaning up screen clutter, it performs a much different function. If you just want to cleanup screen clutter, see the question on "Can I set BX to only display the shells I am currently working on?".

Where are the Constraint resources located in the Resource Editor?

Constraint resources are always grouped together at the bottom of the Resource Editor.

How can I simultaneously set the same value for a resource on multiple widgets?

Depending on what you are trying to accomplish, there are several approaches here. The first approach is to select each widget in the Browser or in the application window and enter the resource value as you would for a single widget. Each selected widget will be updated with the new value. The second approach uses the Builder Xcessory feature of Styles. Styles are groups of resources that can be applied to widgets or widget hierarchies. You would use the first approach if you were just setting these resources for a specific situation. You would use Styles if you wanted to create an overhaul consistent Look-and-Feel to your application. Some practical applications of Styles are provided in Tutorial 5.

The BX Resource Editor seems to ignore my entries. Why is this happening?

Whenever you change a value in the Resource Editor, it requires that the change be confirmed by clicking the checkmark to the right of the entry field. It is very common for users to type in a new value and then forget to hit the "checkmark" to the right of most text fields in the Resource Editor. You loose your changes if you forget to click on the checkbox or click on the Enter key to apply your changes.

I have two buttons (or two labels, or two whatevers) that are displaying differently. How can I find the list of resources that are different?

Select both objects in the Browser using the Shift-MB1 combination. In the resource editor, select the icon in the resource editor toolbar (by default, it is the circle on the far right) that displays only resources that are not equal. The list of resources that are different will then appear below.

When using BX and the XmForm container widget I have trouble changing the X/Y parameter of child widgets and get asked for specific values. Is there a work around?

When using BX there is an issue that occurs regularly when using the XmForm container widget. As I place child widgets like textLabel or buttons or even another XmForm, I sometimes have trouble changing XY or width/height parameters in the Resource Editor. This forces me manually change the geometry on the screen by selecting and dragging things around to either change position or size. I prefer using the Resource Editor when I need to set very specific parameters values. Can you explain why I am getting this warning and if there is a work around.

Work around:

  • By adding widgets to the XmForm, now the form will manage the position and geometry of its child widgets and their relative positions
  • In order to change XY position of a widget within the XmForm, you change the left, right, top or bottom offset in resource editor. BX will not allow you to change XY or width/height in the resource editor directly.
  • Be aware if a widget has attachment on the right and you are making changes to the leftOffset, this will change the width as the left side will be shifting while the right side is static.
  • Alternatively, if there is no right attachment, changing leftOffset will shift the entire widget back and forth without affecting the width.
  • Same behavior is true for top and bottom offset

Migration to Builder Xcessory 6

I have a user interface that was originally created with SGI’s RapidApp. Can I migrate it to Builder Xcessory?

SGI’s RapidApp was originally based on Builder Xcessory Version 3 source code. Consequently, RapidApp and Builder Xcessory share many of the same approaches to GUI development. And when SGI took RapidApp to End of Life, Builder Xcessory was given the nod as the official SGI recommended upgrade path for RapidApp users.

The actual process of converting involves the running of a converter on the RapidApp save file. This converter only supports RapidApp save files that were created using RapidApp 1.2+. The converter is written in Python, allowing users to extend and modify it as necessary to address any unique needs of their RapidApp user interface.

I have a user interface that was originally created with Digital’s VUIT GUI Builder. Can I migrate it to Builder Xcessory?

Builder Xcessory can directly read in the user interface save file created by VUIT. As with SGI and RapidApp, Builder Xcessory is the officially recommended upgrade path for VUIT users.

I have some user interfaces that were written using UIM/X (probably from Bluestone or Black and White). Can Builder Xcessory read these user interfaces in?

Engineering work is underway to allow the conversion of the UIM/X save file formats (.uil and .i) to a format that can be imported by Builder Xcessory. Ask your ICS representatives for details or email info@ics.com.

My user interfaces were written long ago with the Xview toolkit. Do I have any choice other than rewrite?

Prior to Motif, Sun developed and distributed the Xview toolkit. Today, few developers use Xview and Motif is the dominant commercial user interface toolkit on Linux and UNIX systems. If your XView-based user interface was built with Sun's DevGuide GUI Builder, ICS offers a direct migration path. (See question that follows). If your GUI was not build with DevGuide, or the DevGuide save files (GIL) are no longer available, there is still an alternative. ICS has a tool that can recreate GIL files from applications built with Xview. Ask your ICS representatives for details or email info@ics.com.

My user interfaces were written using Sun’s DevGuide GUI builder. Can BX convert the user interface?

Yes. Builder Xcessory on UNIX workstations (Sun, HP, etc.) has an "import GIL" option under the File menu. The Linux version of BX doesn’t provide this capability. However, we would be happy to issue you a short term license for BX on Sun, etc. so that you can make the conversion and then import the converted UIL into Builder Xcessory on Linux.

My user interfaces were written using some other obsolete/dead/etc. GUI builder. Can I preserve this work?

If your old GUI Motif GUI builder can export files in UIL, BX can import them. This will preserve the raw user interface. At this point you will need to complete the conversion by using BX to add callbacks, setting form attachments, etc.

I want to build an user interface once and deploy it to Unix/Linux and Windows. How should I do this with the BX product family?

ICS offers BX/WIN SDK as the preferred solution to a Windows deployment. BX/WIN SDK includes a complete UNIX development environment that runs on Windows. It also includes copies of Motif and ported versions of ICS’ ViewKit and EnhancementPak libraries. BX/WIN SDK provides a proven solution for the migration of large applications to Windows.

If I build a user interface on Solaris can I port it to <insert OS name here> on <insert CPU architecture here>?

Generally the answer is yes. However, there are two exceptions. 1) If you used ViewKit and/or EnhancementPak in your user interface, you must also have these libraries available on your new platform. 2) There can be slight differences in Motif from vendor to vendor. Please allow time for you to debug any subtle differences.

I built a user interface using BX <insert version # here>. What is involved with upgrading to BX 6?

BX 3.x is upwards compatible with BX 4, which is upwards compatible with BX 5, etc. This means that files save by BX 3.x can be read into BX 4 and BX 5 can read BX 4 save files. You cannot "jump" a level (i.e. have BX 6 directly read in BX 4 based saved files. If you are migrating from an older release, contact your ICS representative and we can arrange for temporary access to the releases you need.

How do I keep existing widget libraries (ET, CO, XRT, Xbae & Homegrown) integrated with BX 6.1.x during an upgrade to BX 6.1.3?

  1. 1. When you run install script ./setup make sure you select the same directory that has previous version of BX 6.1.x. For example, if you have BX 6.1.x installed in /opt/bxpro-6.1/ then select the same directory for installing BX 6.1.3.
  2. 2. Once BX 6.1.3 is installed successfully, go to /opt/bxpro-6.1/xcessory/packages/ directory. You should still find .cat files for the extra widget libraries.
  3. 3. Open the file, default.cat in an editor. Introduce new lines of Include cat files for all .cat files identified in step 2. Save and close the editor.

This will get you going with extra widget libraries integration in BX 6.1.3.

Misc Tips and Tricks

I made a mistake, where is the "UNDO"?

Builder Xcessory does not have an immediate UNDO. However, The Revert... option from the Main Window’s Edit menu allows you to reload your work from the last saved version of your file or from the last autosaved version of the file.

I’ve built my user interface with EPak or ViewKit and now I’m getting errors when I try to compile/link my application. Where are these libraries located?

If you have installed extra libraries from ICS, such as ViewKit or EPak, they are installed by default in ${BXHOME}/lib. To use these libraries in your programs just add a link line in "Options->Code Generation Options->Makefile". Then choose "Save As Default".

How can I edit Compound objects?

Some widgets that appear as a single object on the Palette are actually Compound Objects that are made up of several Motif widgets. For example, the XmMessageBox is a compound object made up 6 child objects. You can toggle whether Compound Objects are expanded or not in the Browser by setting/unsetting the toggle "Show Compound Children" under the View menu of the Main Window. For example, if you did not want an "OK" button, a "Cancel" button, and a "Help" button, you could select "Show Compound Children" and then delete one or more buttons.

Can I modify the generated code and still use BX?

There will come a time when modifying the generated code will be the most direct solution to a special function or need of your application. When you have to do this, just make sure that your modifications are placed within a user code block in the generated code. If you keep your code there, Builder Xcessory will automatically detect it, save it and restore it after you regenerate the code for your user interface. And if as the result of a change in your user interface, there is no reason for a particular user code block (and your hard written code!), BX will automatically save your code in a special file and make you aware of this by publishing a message in the Message area of the Main Window.

User code blocks are great! Can I add my own?

No. User code blocks require special handling in the BX code generation phase to preserve your changes. However, user code blocks have been a key BX feature for a long time, and we've taken input from many users over the years on their locations. It is likely that anything you would like to do, can be supported by an existing user code block. If you believe that you have some unique need, please send a description to support@ics.com. If we can't suggest how you can use an existing user code block, we'll consider adding it!

How do I get my application to read the app-defaults file?

Many users are confused on how to connect their app-defaults file to their application. To get your application to pickup your app-defaults file, you need to take the following steps:

  1. Set the name for the app-defaults file in the File Names tab of the Main Window->Options->Code Generation Preferences.
  2. In the Application Tab of the Code Generation Preferences, make the Application Class match the name of the app-default file you set in #1.
  3. Set the XUSERFILESEARCHPATH to include the location of the app-defaults file. For example, the following shell command (or the equivalent one for your choice of shell) will set this variable correctly:
    %export XUSERFILESEARCHPATH=$XUSERFILESEARCHPATH:./%N%S

I have a large user interface and it takes along time to read it into BX. Is there any way to speed this process up?

You can save time when reading in a large application by setting Delay Shell Realize. To set Delay Shell Realize, select User Preferences from the Browser Options menu, click on the Behavior tab, and select the Delay Shell Realize toggle. A shell will not be created until selected from the Instance list in the Browser.

Expediting Your Response From ICS Support

I have a question not answered here. How do I get help from ICS in a timely manner?

If you want the fastest possible response to your support question, try to do ALL of the following:

  1. If you are not yet a customer, please send your questions through your ICS sales representative. If you are not sure who that might be, send email to sales@ics.com and the proper person will get in touch with you.
  2. If you are a customer and are having problems using an ICS product, send your support request to support@ics.com. Sending your support request to any other email address will only delay our response. DO NOT sending your support report to a specific person at ICS. If that person is on vacation or traveling for the day, the response to your problem could be delayed.
  3. Make sure that you receive an automated reply from ICS Support with a case number. Make a note of that case number and include it on all communications with ICS Support. If you do not immediately receive the automated acknowledgement to your support request, send email to the support manager.
  4. On any communication with ICS, make sure you put the case number between "["..."]" (e.g., [94271]) in the subject line. This will ensure that your email is logged into your case. Again, always reply to support@ics.com and not directly to a specific person. This allows multiple people to work on your case.
  5. Include with your initial support request, your Support Number. This was provided on your letter that accompanied your software. When you renew your support, you will also receive a letter with your support number. ICS Support will always ask for this support number before responding. If you do not know it, and you are using BX 6, send us your Media Serial Number. This will be the quickest mechanism to find your support number. This serial number is available via Help->Media Serial Number. If you are not using BX 6, tell ICS Support in your initial email that you cannot find your Support Number and they will research it. This can delay your response, so please write it down for future use when we find it!
  6. Depending on the problem attach one of the following files to your email:
    -If this is a license problem, attach your license.dat file.
    -If this is an installation problem, attach your install log file. It is in /tmp and looks like:
    IcsInstal-mm-dd-1yy.log
    -If you are having a problem with the design of your user interface, make sure that you attach your UIL file.
    -If you are having a runtime problem, reduce your code to a minimal case that demonstrates the error.
  7. Include detailed step-by-step instructions on how to reproduce the error. Screen captures are also very helpful!
  8. Please include a description of your hardware/software environment. At a minimum, this description should specify hardware, operating system version, C++ compiler version. On Linux, you might want to describe the distribution, kernel version and release of glibc too. Network topology might also be relevant if you are experiencing a licensing failure and the license server is on another machine or if you are using a PC Xterm like Hummingbird.
  9. The smaller the test case that exhibits the problem the better! If we have to create our own test case, the response delay could be significant and we might never be able to duplicate your problem.