The Builder Xcessory Reference Manual is copyrighted by Integrated Computer Solutions, Inc., with all rights reserved. No part of this book may be reproduced, transcribed, stored in a retrieval system, or transmitted in any form or by any means electronic, mechanical, photocopying, recording, or otherwise, without the prior written consent of Integrated Computer Solutions, Inc.
Builder Xcessory, BX, BX/Ada, Builder Xcessory PRO, BX PRO, BX/Win Software Development Kit, BX/Win SDK, Database Xcessory, DX, DatabasePak, DBPak, EnhancementPak, EPak, ViewKit ObjectPak, VKit, and ICS Motif are trademarks of Integrated Computer Solutions, Inc.
All other trademarks are properties of their respective owners.
Allows you to change resources of the WML data type "Any". In particular, this allows you to provide a value to the userData resource on OSF/Motif widgets.
Click the arrow button to the right of the Type text field to display all the types defined for your interface. Constants, identifiers, and actual values are legitimate data values, but expressions are not supported.
When Builder Xcessory encounters a parameter in the Any Editor, it searches for a match in the following order:
If no match is found, Builder Xcessory prompts you to declare the parameter as an identifier.
Allows you to add work procedures and timer procedures to your application. These procedures are useful if your application requires tasks beyond processing events from the user.
Select Application from the Browser Managers menu to display the Application Setup dialog:
A work procedure is a callback function that provides a limited form of background processing. The work procedure is invoked by the Xt Intrinsics whenever no other events are pending. That is, when X is idle (not drawing to the display or responding to user actions), the work procedure is called.
Use a work procedure to specify a function to call when no other events are pending. Once called, a work procedure monopolizes the CPU. Therefore, a work procedure should be a function that executes quickly. Otherwise, the display stops responding to the user while the work procedure executes. For example, to perform a long calculation with work procedures, set up the calculation as an iterative process. Then, a small portion of the calculation can be done each time the work procedure is called. This approach avoids freezing the display.
To add a work procedure by hardcoding, use the following function:
This function returns an ID that identifies the work procedure. The client_data
parameter specifies application-defined data that is passed to the work procedure.
1. Click on the "..." button next to the Work Procedures input field in the Application Manager to display the Application Work Procedures Editor:
3. Enter the name of the work procedure to call in the Work Procedure field.
4. Enter the parameter type in the Parameter Type field.
5. Enter the parameter (client_data) in the Parameter field
6. Click on Apply to add the work procedure.
All current work procedures are displayed in the scrolled window above these fields.
A timer procedure is a callback procedure that you register. A timer procedure is invoked by the Xt Intrinsics when the interval of time that you specified elapses. When a timeout event occurs, the Intrinsics invokes the timer callback procedure, and the Intrinsics automatically removes the callback. Timeout events are invoked only once.
When generating ViewKit code, Timers are implemented using the VkPeriodic class. VkPeriodic invokes the timer repeatedly until it is explicitly stopped.
Use a timer procedure for an event that you want to happen periodically, but not continuously. When the timer procedure is registered, Xt first waits for at least the interval you specified, and then calls the timer procedure.
Use the following function to register a timer procedure by hardcoding:
and specify the interval of time that should elapse before this function is invoked. The interval of time is specified in milliseconds. After this interval elapses, the proc
callback function is invoked by Xt Intrinsics. The client_data
parameter specifies client data passed to proc
. XtAppAddTimeOut returns an ID that identifies the timer procedure.
To register a timer procedure using Builder Xcessory, click on the "..." button next to the Timer Procedures input field in the Application Manager to display the Application Timer Procedures Editor:
To register a new timer procedure:
2. Enter the name of the timer procedure to call after the interval expires in the Timer Proc Name field.
3. Enter the interval in the Interval field.
4. Enter the parameter type in the Parameter Type field.
5. Enter the parameter (data) in the Parameter field.
6. Click on Apply to register the timer procedure.
Current timer procedures are displayed in the window above these fields.
1. Select the procedure from the list displayed in the Application Timer Procedures Editor.
The procedure is removed from the list and from your application.
The information you enter in the input fields is used to create the XtAppAddTimeOut function in the code generated from Builder Xcessory.
Allows you to add timer procedures to your application. Timer procedures allow you to specify the specific amount of time before this procedure is called. Use a timer procedure for an event that you want to happen periodically, but not continuously.
Click the (...) button to the right of the Timer Procedure input field on the Application Manager to display the Application Timer Procedure Editor. Refer to Application Manager .
The display area lists the Timer Proc Name, Interval, Parameter Type, and Parameter of each timer procedure that has been added to the application.
Select, add, and delete work procedures using the following methods:
· Select a timer procedure by clicking on its name in the list. All appropriate fields are updated for the selected timer procedure.
· Add a timer procedure to the list by clicking New and entering the Timer Proc Name and any necessary parameter data in the appropriate text fields.
· Delete a timer procedure by selecting it in the list and clicking the Delete button.
When changing or adding a timer procedure to the list, you can choose a procedure name from the list displayed by clicking on the arrow to the right of the Timer Proc Name label, or you can create a new procedure by typing its name in the Timer Proc Name text field. Builder Xcessory prompts you to confirm a new procedure name.
New procedures are created with a default Parameter Type of Undeclared in the Application Timer Procedure Editor, indicating that parameter values of any type are accepted in the Parameter field. Other valid values include:
· None (Indicates that the timer procedure does not take any value as its client data.)
To display a list, click on the arrow to the right of the Parameter Type label in the Application Timer Procedure Editor.
You can declare additional user-defined types in the Application Timer Procedure Editor by entering the new type name in the Parameter Type field. Builder Xcessory prompts you to confirm a new user-defined type.
The Parameter Type field is insensitive if the timer procedure specified in the Timer Proc Name field is referenced by a widget or style resource in your interface. The procedure's parameter type cannot be changed in the Application Timer Procedure Editor, unless all references to the procedure are removed from the interface.
When Builder Xcessory encounters a parameter in the Application Timer Procedure Editor, it searches for a match in the following order:
If no match is found, Builder Xcessory prompts you to declare the parameter as an identifier.
The Parameter field accepts the following values as the client data value to pass to the callback procedure:
The type of the value must correspond to the type listed in the Parameter Type field. If the text entered into the Parameter field is not a constant, identifier, or actual value, then Builder Xcessory prompts you to declare the value as an identifier of the appropriate type.
Allows you to add work procedures to your application. This allows you to specify a function to call when there are no other X events pending.
Click the (...) button to the right of the Work Procedure input field on the Application Manager to display Application Work Procedure Editor. Refer to Application Manager .
The display area lists the Work Procedure name, Parameter Type, and Parameter of each work procedure that has been added to the application.
Select, add, and delete work procedures using the following methods:
· Select a work procedure by clicking on its name in the list. All appropriate fields are updated for the selected work procedure.
· Add a work procedure to the list by clicking New and entering the Work Procedure name and any necessary parameter data in the appropriate text fields.
· Delete a work procedure by selecting it in the list and clicking the Delete button.
You can declare additional user-defined types in the Application Work Procedure Editor by entering the new type name in the Parameter Type field.
New procedures are created with a default Parameter Type of Undeclared in the Application Work Procedure Editor, indicating that parameter values of any type are accepted in the Parameter field. Other valid values include:
None indicates that the work procedure takes no value as its client data. Click on the arrow to the right of the Parameter Type label in the Application Work Procedure Editor for a list of available value.
The Parameter Type field is grayed out if the work procedure specified in the Work Procedure field is referenced by a widget or style resource in your interface. The procedure's parameter type cannot be changed in the Application Work Procedure Editor, unless you remove all references to the procedure from the interface.
When Builder Xcessory encounters a parameter in the Application Work Procedure Editor, it searches for a match in the following order:
If no match is found, Builder Xcessory prompts you to declare the parameter as an identifier.
The Parameter field accepts the following values as the client data value to pass to the callback procedure:
The type of the value must correspond to the type listed in the Parameter Type field.
If the text entered into the Parameter field is not a constant, identifier, or actual value, then Builder Xcessory prompts you to declare the value as an identifier of the appropriate type.
The Browser hierarchy has two display modes:
The following sections describe the Browser display modes in more detail.
In Instances View, the Browser displays the object instance hierarchy of your interface.
To enter Instances View, select Instances from the Instance/Classes view combination box on the left side of the Browser.
The following figure displays an example of the Browser in Instances view:
A list of all topLevelShells in your interface is displayed below the combination box in a scrolled list. Click on a member of this list to toggle its display on the Browser. Highlighted members are displayed, and un-highlighted members are hidden.
In Instances View, the Resource Editor displays different information depending on whether the currently selected object is a class instance or widget instance. Refer to Resource Editor for more detailed information about the Resource Editor.
In Classes View, the Browser displays the class instance hierarchy of your interface. Refer to Classes and Methods in the Builder Xcessory User's Guide for more detailed information about using classes.
To enter Classes View, select Classes from the Instance/Classes view combination box on the left side of the Browser. The Browser displays the object instance hierarchy of all classes in your interface:
Changes that you apply to a class are applied to all instances of that class in your interface. Although you might not observe these changes until you return to Instances View, these changes happen immediately. For example, if you change the membership of a class and generate code while still in Classes View, the generated files reflect this change.
Depending on whether the currently selected object is a class, widget instance, or class instance, the Resource Editor displays different information in Classes View. For more detailed information, refer to Resource Editor .
The Browser Edit menu allows you to cut, copy, add an interface object to the Palette, paste, delete, raise or lowerinstances on the display, resize an instance to its natural size, make an instance larger, align multiply-selected widget instances, make (and unmake) classes, and designate a widget instance in a class as a receptor.
Select Edit from the Browser menu bar to display the following menu:
You can also select several object instances, and execute Cut, Copy, Paste, or Delete on that group as if it were a single widget instance.
Removes the selected instance and its descendants from the display and places them along with their resources in the instance paste buffer, overwriting any existing contents of the buffer. Use Cut with Paste to move the new instance or collection to a new location. You may Cut and Paste an object from one work space to another.
Use drag and drop to Cut and Paste objects in the object instance hierarchy tree. Dropping instance name A on top of instance name B will Cut instance A and all of its descendants, along with their resources, from the interface and Paste them as descendants of widget B.
Dropping an instance name on an empty portion of the object instance hierarchy in the Browser display will Cut the instance and all of its descendants, along with their resources, from the interface and Paste the instance as the first child of a new topLevelShell. Dragging and dropping in this manner does not affect the instance paste buffer.
To cut several instances, you can save time by selecting those instances as a group and cutting the entire group, instead of cutting each individual instance.
When you cut multiple widget instances, each widget and its descendents are placed in the cut buffer. If the widgets are all from different widget trees (for example, different top level shells), they are placed in the buffer in the order selected. When you Paste a group of instances, those instances are pasted in the same order in which you selected them.
You can drag and drop either a single widget instance or a group of widget instances.
Places a copy of the selected instance and its descendants, along with their resources, in the instance paste buffer, overwriting any existing contents of the buffer. Use Copy with Paste to copy the contents of the instance paste buffer in a new location. You may Copy an instance from one work space to another.
Use one of the following drag and drop methods to copy and paste objects in the instance hierarchy displayed as a tree:
· Drop instance name A on top of instance name B while depressing the Ctrl key to copy instance A and all of its descendants (along with their resources) from the interface, and Paste them as descendants of instance B.
· Drop an instance name on an empty portion of the object instance hierarchy while depressing the Ctrl key to Copy the instance as the first child of a new topLevelShell.
These drag and drop operations do not affect the instance paste buffer.
To save time, you can select several widget instances and then copy the entire group. Just as when you cut a group, each widget instance and its descendents are placed in the cut buffer. If the widgets are all from different widget trees, they are placed in the buffer in the order selected.
Copies the selected instance and all of its descendants, along with their resources, to the User Collections group on the Palette.
Instances and collections which are copied to the Palette will persist, with all their resources, from session to session until specifically removed.
You can also add instances and collections to the Palette using drag and drop, as follows:
1. Position the cursor over either the instance or its instance name on the Browser.
3. While continuing to hold down the mouse button, drag the object to the Palette and drop it onto the desired group.
Places the contents of the instance paste buffer. An outline of the contents of the instance paste buffer appears. Add this collection to the interface by placing the collection in the desired position. Use Paste in conjunction with Copy to copy an object, or with Cut to move an object.
When you paste a group of widget instances, each instance (and its descendents) is pasted in the order in which you selected it. The result is the same as cutting and pasting each instance separately.
Permanently removes the selected instance and all of its descendants. Delete does not copy the object to the instance paste buffer. By default, a confirmation box is displayed for the Delete operation. To turn the confirm delete prompt off, use the User Preference option from the Browser Options menu. See Behavior for more detailed information about this option.
When you delete a group of widget instances, each instance (and its descendents) is deleted in the order in which you selected it. The result is the same as deleting each instance separately.
Reverts the UIL file to a previously saved version, or the last autosaved version.
Moves the selected instance above the sibling directly above it. Use Raise to change the order of menu items, or items in row column or radio boxes.
Moves the selected instance below the sibling directly below it. Use Lower to change the order of menu items, or items in row column or radio boxes.
Removes the height and width resources for the selected instance, causing the instance to calculate its own geometry. (In the placement option menu, None is selected for the height and width resources.) For example, if you change the font size of a label, the widget instance will resize to accommodate that change.
Increases the size of the selected instance. Each time you select Enlarge for an instance, it increments in size.
Displays a menu of the following secondary choices:
Aligns the left edges of all selected objects with the left edge of the left-most selected object.
Aligns the right edges of all selected objects with the right edge of the right-most selected object.
Aligns the bottom edges of all selected objects with the bottom edge of the bottom-most selected object.
Distributes the centers of all selected objects between the center of the left-most selected object and the center of the right-most selected object.
Distributes the centers of all selected objects between the center of the top-most selected object and the center of the bottom-most selected object.
Displays the Alignment Editor, which allows you to align and distribute multiply-selected objects.
The following table describes how to align objects:
Midpoint between horizontal centers of left-most and right-most selected widgets. |
||
Midpoint between vertical centers of top-most and bottom-most selected widgets. |
||
The following table describes how to distribute objects:
When you select Edge Gap, the Spacing Between Edges text field is displayed. Enter both the number and the unit in this field. The following table lists valid units for defining the edge gap:
If you do not specify a unit for Edge Gap, the default unit is pixels. For example:
When you click on an option, the sample alignment on the Alignment Editor shows you what the option does. The sample alignment always has the same four widget outlines.
When you enter a name and press return or click the OK button, Builder Xcessory creates a new class comprised of the currently selected object and all of its descendants. The class is represented on the Browser as a single element, with the Class Instance Icon to the left of the class instance name.
When you enter a name and press return or click the OK button, Builder Xcessory creates a new class comprised of the currently-selected class. The subclass is represented on the Browser as a single element, with the Class Icon to the left of the subclass name. The class from which the subclass was made is displayed as a single element to the right of the subclass on the Browser. A colon appears before the class name, indicating that it has been subclassed.
When you create subclasses, designate one widget instance on the superclass as a receptor (see the next section, Make/Unmake Receptor (Ctrl+T) ). You can then add widget and/or class instances to the subclass. Any instances you add to the subclass appears on the Browser as children of the element representing the class from which the subclass was created.
Designates one container widget instance within a class as the receptor of that class. Any subclass of this class can accept children parented to this receptor widget. When you add a widget to the subclass, the new widget is placed automatically as the child of the receptor, regardless of where you place the widget.
To designate a container widget instance as that class's receptor:
1. Set the Browser to Classes (instead of Instances) view. The object hierarchy of that class is now displayed in the Browser.
2. Select the container that you want to designate as the receptor.
3. Select Make Receptor from the Browser Edit menu. A square-within-a-square icon indicates which container widget instance has been designated as the receptor.
When you select a receptor widget, this menu option changes to Unmake Receptor. If you then select Unmake Receptor, the selected widget will no longer be the receptor widget for this class. If any subclasses of this class have used this receptor widget (for example, if you have added children to this widget), you cannot unmake the widget.
Allows you to create new files, open files, merge other files with your project, save your interface, save and load classes, import GIL files, generate code, print, or exit Builder Xcessory. Select File from the Browser menu bar, either with the mouse or with a mnemonic, to display the following menu:
The following sections describe the items available from the File menu.
Clears all current objects and switches to the default language. If any pixmaps, styles, procedures, identifiers, user-defined types or constants will be destroyed by the clear operation, Builder Xcessory displays the following warning message dialog:
Displays the File Selection dialog:
You can use the File Selection dialog to specify the following UIL files:
· UIL file generated by Builder Xcessory
· Existing UIL file written by hand
· Existing UIL files written with another user interface design tool
By default, the Filter field of the File Selection dialog contains the name of the directory from which you are running Builder Xcessory.
To display the contents of a different directory, enter the directory name in the Filter field and click the Filter button. You can specify match strings using regular expressions. For example, *.uil will list only files ending in characters .uil. Click OK to open the specified file or Cancel to remove the File Selection dialog.
The Files box lists the files in the directory which match the file filter, set to *.uil by default.
Enter the full pathname in this field to select a file.
To select a file, click on the file name in the File box or enter the full pathname in the Selection field.
If you open a file from a directory different from the one in which you started Builder Xcessory executable, Builder Xcessory changes to the current working directory.
Open imports a UIL file along with information specific to Builder Xcessory, such as generated code routine names and routine generation status. For example, if you change the Main file from main-c.c to mymain.c, this information is imported along with the file. If you disable code generation of a file, this information is also incorporated. However, this information is not imported during a Read operation.
When Builder Xcessory attempts to Open the selected file, it may display a warning dialog with the message "Name conflict between loaded style and new style". A resource style that exists currently in the Builder Xcessory Style Manager has the same name as a different resource style defined for the file that you are attempting to open.
The three push buttons perform the following operations:
Displays the same File Selection dialog as shown in Open (Ctrl+O) . However, invoking the File Selection dialog from Read allows the following option and additional operations:
· You can add the interface specified in the UIL file to an existing interface on your display.
· Builder Xcessory classes, styles, constants, procedures, identifiers, and types in the new file are added to their respective managers.
· The contents of the read file are added to the current UIL file, and the read file is subsumed by the current UIL file.
Read differs from Open in the following ways:
· Read does not change the current working directory.
· All code generation options stored in the Read file are overridden by the current settings in Builder Xcessory.
· Read merges the UIL file into the currently opened project. Any association to the original UIL file is not maintained.
Writes your interface to the currently specified UIL file. Select one of the following options to display and edit the directory path and file name:
· Save As from the Browser File menu.
· Code Generation Preferences from the Browser Options menu.
Displays a File Selection dialog:
The Directory Path field is non-editable. You can rename the UIL file, or re-specify the directory path.
To edit the Filter text field, use one of the following methods:
· Double-click with the Directories list to navigate up and down directory paths.
· Click the Filter button to update the Directories list for the directory specified in the Directory Path field (which simply echoes what you specified in the Filter text field).
Reads in a class already created and saved as an include file by using the Save Class menu item.
When you select Read Class, a File Selection dialog is displayed. Specify the include file name or re-specify the directory path and click on the OK button in the File Selection dialog.
Builder Xcessory reads in the include file and adds it to the Palette.
Writes out a selected class in your application to a separate UIL include file. If you Save, the class definition is saved into an include file instead of the application's UIL file, allowing you to easily add the class to other projects.
Use Save Class when you have a class that you want to share with other developers or use in more than one application. Once you write a class to its own include file, other users can read that class into Builder Xcessory using Read Class.
To use Save Class, use the following procedure:
1. Switch to Classes View in the Browser to display all current classes.
2. Select one class, then select Save Class.
3. Enter a filename for the include file in the File Name text field at the bottom of the dialog, and click OK.
To save a class that will automatically be loaded into your Builder Xcessory at startup:
1. Select the class in Classes View
2. Select Save Class (see Save Class )
3. Drag icon of the class from its current location (probably Project Classes) on the Palette to a Private Classes group
To save a class that will automatically be loaded into everyone's Builder Xcessory at startup, drag the icon of that class from its current location (probably Project Classes) on the Palette to a Public Classes group.
Once you save a class, you can rename the file using Save Class As, described in the following section.
{BX}/XCESSORY/classes
directory to drag the icon onto the Group. If you do not have write permission, ask someone with the proper permissions to move the file to the {BX}/xcessory/classes directory.
You can rename the include file which contains a class that you saved separately from your application. You can also specify the directory path.
Makes the selected class read-only (you cannot edit the class). You must select a class before you click on this option. Builder Xcessory displays a warning dialog asking if you want to save the class before locking it:
1. Click OK to display a File Selection dialog (if you have not yet saved the class).
2. Enter the pathname of the file and click OK.
When you save your application, this file will not be overwritten.
2. Click on the Class option of the File menu.
The Lock Class option now reads Unlock Class. Select Unlock Class to remove the lock.
Refer to Classes and Methods in the Builder Xcessory User's Guide for more detailed information about using classes.
Displays a menu that contains only the Import Gil option.
Displays the same File Selection dialog as shown in Open (Ctrl+O) and Read (Ctrl+F). See Open (Ctrl+O) for more detailed information about the File Selection dialog. The File Selection dialog filter defaults to a .G file suffix.
The File Selection dialog allows you to add the interface specified in a GIL (Guide Interface Language) file to an existing interface on your display. You can set certain options before importing a GIL file. See the section GIL Import Preferences for more detailed information.
Writes the files for your application. {Lang} is the language you selected for this particular project file, or the language you selected as your default language at the beginning of your Builder Xcessory session. If you want to choose a different language, refer to Choose A Language for more detailed instructions.
Once you save your application, you can generate your application code outside Builder Xcessory in scripts or makefiles with the following command on the command line:
The following sections describe how files are generated in each available language.
Writes the C++ files for your application. Additional files are generated if you included classes in your interface. See Code Generation Preferences for more detailed information about filenames and options for the files to be generated.
MyClass.
C and MyClass.h
are regenerated only if they are different from the previous code generation.
The following list describes the C++ files generated by Builder Xcessory when you select Generate C++, or execute the cgx50 -gen CXX command on the command line (default names are in parentheses):
· Class Tree Root (UIComponent)
· A header file and source file for every class in the interface
Writes the C++ files that use the IRIS ViewKit/ViewKit ObjectPak classes for your application.
To generate your application code outside Builder Xcessory, use the following flag in the cgx50 command on the command line:
The following list describes the ViewKit files generated by Builder Xcessory when you select Generate ViewKit, or execute the cgx50 -gen VK command on the command line (default names are in parentheses):
-xrm
flag on the applications command line.· A header file and source file for every class in the interface.
Writes the C files for your application. To generate your application code outside Builder Xcessory, use the following flag in the cgx command:
The following list describes the C files generated by Builder Xcessory when you select Generate C, or execute the cgx50 -gen C command on the command line (default names are in parentheses):
Generates code for your application using a combination of C and UIL. Builder Xcessory generates your interface in a set of UIL files specified with the UIL File Manager. Other files are generated to compile, invoke, and run your UIL from outside Builder Xcessory.
The following list describes the UIL files generated by Builder Xcessory when you select Generate UIL, or execute thecgx50
-gen C_UIL
command (default names are in parentheses):
The following lists the C files generated by Builder Xcessory when you select Generate C, or execute the cgx50 -gen C_UIL command on the command line (default names are in parentheses):
· Imakefile that specifies both UIL and C imake information. Makefile ( makefile-uil
)
.uid
file which is then read by the Mrm calls at run-time to create the interface. Builder Xcessory generates a backup file whenever it overwrites an existing UIL file. Automatic backup is provided for the default filename uil.uil or any customized filename. If, for example, you write the renamed UIL file new_uil.uil, and a copy of this file already exists, Builder Xcessory generates the backup file new_uil.uil~. These UIL files are identical to the files generated when you select Save from the Browser File menu.You can change any filename, and disable or enable the generation of a particular file from the File Names tab of the Code Generation Preferences dialog (Browser Options menu). Any changes made in the Output File Names dialog will be reflected in subsequent generation of code.
Writes the Java files for your application.
To generate your application code outside Builder Xcessory, use the following flag in the cgx50 command:
The following list describes the Java files generated by Builder Xcessory when you select Generate Java, or execute the cgx50 -gen JAVA command on the command line (default names are in parentheses):
· A source file for every user-defined class and top-level object in your interface (name_of_class.java and
name_of_top_level_object.java)
Displays the Print Setup dialog:
The toggles set on this dialog specify the options which are used when you select Print Hierarchy from the Browser File menu.
The radio buttons in the Destination field adjust whether the output of Print Hierarchy will go to a file, a viewer window, or a printer.
The toggles in the Options field adjust the format and content of the print output:
The toggles in Hierarchy View allow you to print either the Browser or the XtIntrinsic view of the widget hierarchy:
Exits the Builder Xcessory. If you have made changes to your interface since last writing out the UIL file, Builder Xcessory displays a warning dialog that allows you to save your changes, quit your changes, or cancel the exit operation.
Managers help you keep track of the many procedures, types, identifiers, constants, and resource styles that you define in a large, complex interface. The Browser Manger menu allows you to view Builder Xcessory managers. Select Managers from the Browser menu bar, to display the following menu:
The managers accessible from this menu allow you create, edit, and delete elements of callback and creation routines. Changes entered in the Callbacks Editor or the Creation Routine dialog are reflected in the managers, and vice-versa.
Refer to Managers for detailed information about each of the Builder Xcessory managers.
The following menu is displayed when you selecting Managers from the Browser menu bar:
The available menu choices allow you create, edit, and delete styles, constants, procedures, identifiers, types, and files. Changes entered in the Callbacks Editor or the Creation Routine dialog are reflected in the managers, and vice-versa.
The following sections describe the Browser Managers menu options.
The Browser Options menu allows you to change the default language, modify the default language settings, set various user preferences, change information relating to the makefile integration with other tools, internationalization, and the importing of GIL files.
Choose Options from the Browser menu bar to display the following menu:
You can select the language for each application or change the default language at any time during your Builder Xcessory session.
Saves the selected language as the default language. The language is saved to the .bxrc file and becomes the default language when you perform a New operation or when you restart Builder Xcessory.
Displays the Generation Preferences dialog for the currently specified language. For each tab panel, you can choose the settings for the current project, or save the settings as default values (Save As Default) that are written to your .bxrc file. The default settings appear when you perform a New operation or restart Builder Xcessory.
The following sections describe the Code Generation Preferences dialog for each available language.
The C++ Generation Preferences dialog is divided into four tabs:
The following sections describe the options for each tab panel.
Click on the File Names tab to display the File Names menu of the C++ Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Directory Path field allows you to specify the directory into which generated files will be written.
The File Output Names field specifies the following files (defaults are in parentheses):
· Imakefile (Imakefile) is the imakefile that specifies C++ imake information.
· Makefile (makefile-C) is the C++ makefile.
· Class Tree Root (UIComponent) contains the root class from which all classes created in Builder Xcessory are derived.
· Main (main-C.C) initializes the Motif toolkit and creates your application's shell widgets and classes. Changing this allows you to use a different base class for your application components. Builder Xcessory creates an unrealized applicationShell and creates all topLevelShell children for all top-level windows. To modify the main-C.C file for your application, make your changes in the user code blocks. Any changes made outside the user code blocks will be overwritten in subsequent generations. To write your own main routine, disable subsequent file generation by unsetting the toggle.
· Constants (defs-C.h) contains pixmaps, declarations of constants, and global instances of widgets or classes used in the interface.
· Utilities (bxutils-C.C) contains convert functions.
· Callbacks (callbacks-C) contains any callback information for non-class widgets.
· App Defaults (app-defaults) is the file that includes all resources with app-defaults value set to App. The user can change an app-default resource value by editing the app-defaults resource file, overriding the file from a local resource file, or entering the toolkit option -xrm on the command line.
Click on the Application tab to display the Application menu of the C++ Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Application Class resource field allows you to enter a class name for the application. Xt uses the Application Class name to find and load application resources, and the application defaults file. When you install your application, the app-default file name should be the same as the application class name.
The Application Name resource field allows you to assign a name to your current application. Xt uses the Application Name to resolve precedence of resource specifications.
You can set the following toggle options:
· User-Specified Main Loop specifies a function to call rather than XtAppMainLoop.
· Initialize Localization Support supports whether or not to generate a call to XtSetLanguageProc in the application initialization. Calling this function enables support in X and Motif for non-English locales.
· Generate Derived Files generates an additional subclass for each user-defined class. If set, all application code must be written in the derived file. Default name is "class name"Derived.C.
· (Parented) Dialog Shell Initially Unmanaged toggles to manage Dialog Shells, such as XmDialogShell, in the main-C.C file.
· Use Old Style Constructor for backward compatibility. In previous versions of Builder Xcessory, constructors for user-defined classes created the interface, and the parent widget ID was passed as a parameter.
· Remove Overridden Exposed Callbacks removes the class callbacks when overridden. Otherwise both methods will be called.
· Don't Create Unmanaged Windows delays creation of unmanaged windows.
· Ignore Geometry Resources on Shells does not print shell geometry (x, y, width, height) in the output code.
· Delete Nested Classes in Destructor deletes nested classes created with a New operation inside the create method in the destructor.
Click on the Include Info tab to display the Include Info panel of the C++ Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Click on the Makefile tab to display the Makefile panel of the C++ Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Name of the target of the make executed when Make Application is selected from the Browser Project menu (default is main-C).
Setting the toggle option Don't Include Ungenerated Class Files excludes classes for which you disabled code generation (see Generate Class ) from the list of source and object files that comprise your application. This is useful if you collected classes into a library, and want to link your application with this library.
The ViewKit Generation Preferences dialog is divided into the following five tabs:
The following sections describe the options for each tab panel.
Click on the File Names tab panel to display the File Names menu of the ViewKit Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Directory Path field allows you to specify the directory into which generated files will be written.
The File Extensions field specifies the following file extensions:
· ViewKit Source Extension contains the value appended to the ViewKit source file name after a dot. The default is C.
· ViewKit Header Extension contains the value appended to the ViewKit header file after a dot. The default is h.
Click on the Application tab to display the Application panel of the ViewKit Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Application Class resource field allows you to enter a class name for the application. Xt uses the Application Class name to find and load application resources, and the application defaults file When you install your application, the app-default file name should be the same as the application class name.
The Application Name resource field allows you to assign a name to your current application. Xt uses the Application Name to resolve precedence of resource specifications .
You can set the toggles for the following options:
· Custom Event Processing allows you to specify that name of a function to pass to VkApp::run(). ViewKit will call this function for every X event received. Builder Xcessory will also generate a stub for this function in main-vk.C
.
· UseVkApp Subclass allows you to specify a subclass of VkApp to use in main-vk.C
.
Allows you to specify the include file for the VkApp subclass specified when you set the UseVkApp Subclass toggle
You can set the following toggle options:
· Remove Overridden Exposed Callbacks removes the class callbacks when overridden. Otherwise both methods will be called.
· Delete Nested Classes in Destructor deletes nested classes created with a New operation inside the create method in the destructor.
· Initialize Fallback Resources inserts code and a user code block in main-vk.C
where you can insert you application's fallback errors.
· (Parented) Dialog Shell Initially Unmanaged toggles whether dialogs initially should be hidden regardless of their state in Builder Xcessory.
· Use VkRunOnce allows you to specify that only one single instance of an application can be run on any system at any one time. Also allows you to pass arguments to the running version of the application. Selecting this option will cause an instance of VkRunOne2 to be created in main-vk.C
.
· UseToolTalk uses VkMsgApp (instead of VkApp) which sets up a ToolTalk session. All windows are subclassed from the VkMsgWindow instead of VkWindow, and VkMsgComponent is used instead of VkComponent. In cases where you specify your own subclasses of VkApp or VkComponent, the generated code assumes they are subclasses of VkMsgApp or VkMsgComponent, respectively.
Click on the ViewKit Classes tab to display the Classes panel of the ViewKit Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
You can set the following toggle options:
· Generate UIAppDefaults Structure controls whether code for resource defaulting is generated in each class. It is selected by default, largely for backward compatibility. In most cases, the ViewKit supported defaultResources is sufficient and you can deselect this option.
· Remove Overridden Exposed Callbacks removes the class callbacks when overridden. Otherwise both methods will be called.
· Delete Nested Classes in Destructor deletes nested classes created with a New operation inside the create method in the destructor.
· Ignore Geometry Resources on Shells does not print shell geometry (x, y, width, height) in the output code.
· Generate VkTabbedDeck Source Code allows you to choose to have source code for the VkTabbedDeck class generated into you working directory.
Click on the Include Info tab to display the Include Info panel of the ViewKit Generation Preference dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Click on the Makefile tab to display the Makefile panel of the ViewKit Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Name for the command make executed when Make Application is selected from the Browser Project menu. Default is main-vk.
The C Generation Preferences dialog is divided into four tabs:
The following sections describe the options for each tab panel.
Click on the File Names tab to display the File Names panel of the C Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Directory Path field allows you to specify the directory into which generated files will be written.
The File Output Names field specifies the following files:
Click on the Application tab to display the Application panel of the C Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Application Class resource field allows you to enter a class name for the application. Xt uses the Application Class name to find and load application resources, and the application defaults file.
The Application Name resource field allows you to assign a name to your current application. Xt uses the Application Name to resolve precedence of resource specifications .
You can set the following options:
· User-Specified Main Loop specifies a function to call in place of the call to XtAppMainLoop.
· Initialize Localization Support supports whether or not to generate a call to XtSetLanguageProc in the application initialization. Calling this function enables support in X and Motif for non-English locales.
· (Parented) Dialog Shell Initially Unmanaged toggles to manage Dialog Shells, such as XmDialogShell, in the main-c.c file.
· Put (Unparented) Dialog Shells in Creation Routines generates code to create the XmDialogShell in the creation-c.c file when a dialog shell that is the child of the root is encountered.
· Reverse Order of (Parented) Dialog Shells reverses the order of Dialog Shells that were not children of the root.
· Remove Overridden Exposed Callbacks removes the class callbacks when overridden. Otherwise both methods will be called.
· Don't Create Unmanaged Windows delays creation of unmanaged windows.
Click on the Include Info tab to display the Include Info panel of the C Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Click on the Makefile tab to display the Makefile panel of the C Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Name of the target of the make executed when Make Application is selected from the Browser Project menu (default is main-c).
Setting the toggle option Don't Include Ungenerated Class Files excludes classes for which you disabled code generation (see Generate Class ) from the list of source and object files that comprise your application. This is useful if you collected classes into a library, and want to link your application with this library.
The UIL Generation Preferences dialog is divided into four tabs:
The following sections describe the options for each tab panel.
Click on the File Names tab to display the File Names panel of the UIL Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Directory Path field allows you to specify the directory into which generated files will be written.
The File Output Names field specifies the following files:
.uid
file which is then read by the Mrm calls at run-time to create the widgets. Builder Xcessory generates a backup file whenever it overwrites an existing UIL file. Automatic backup is provided for the default filename uil.uil or any customized filename. If, for example, you write the renamed UIL file new_uil.uil, and a copy of this file already exists, Builder Xcessory generates the backup file new_uil.uil~. These UIL files are identical to the files generated when you select Save from the Browser File menu.Click on the Application tab to display the Application panel of the UIL Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Application Class resource field allows you to enter a class name for the application. Xt uses the Application Class name to find and load application resources, and the application defaults file.
The Application Name resource field allows you to assign a name to your current application. Xt uses the Application Name to resolve precedence of resource specifications .
You can set the following options:
· User-Specified Main Loop specifies a main loop to replace XtAppMainLoop.
· Don't Create Unmanaged Windows delays creation of unmanaged windows.
· Ignore Geometry Resources on Shells does not print shell geometry
(x, y, width, height) in the output code.
Click on the Include Info tab to display the Include Info menu of the UIL Generation Preferences dialog:
Click on the Makefile tab to display the Makefile panel of the UIL Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
The Java Generation Preferences dialog is divided into three tabs:
The following sections describe the options for each tab panel.
Click on the File Names tab to display the File Names menu of the Java Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Allows you to specify the directory into which to write generated files.
The File Output Names field specifies the following files:
Click on the Application tab to display the Application panel of the Java Generation Preferences dialog:
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
You can set the following toggle options:
· Applets Implement Runnable toggles whether generated applets will implement the runnable interface for threading. All applets or subclasses of applets will Implement Runnable. Off by default.
· Generate HTML files for all valid classes
· Dialog Shells Initially Unmanaged
Saves the specified settings on this menu as the default settings. The settings are saved to the .bxrc file and appear when you perform a New operation or when you restart Builder Xcessory.
Setting the toggle option Don't Include Ungenerated Class Files excludes classes for which you disabled code generation (see Generate Class ) from the list of source and object files that comprise your application. This is useful if you collected classes into a library, and want to link your application with this library.
Displays the User Preferences dialog. The User Preferences dialog is divided into the following five tabs:
The following sections describe the options for each tab panel.
Allows you to change the placement grid dimensions. Enter the width of a grid square in pixels in the Grid Units text field. Default value is 10.
You can set the following toggle options:
You can set the following toggle options:
· Always Generate Pixmaps generates code for any pixmaps loaded into Builder Xcessory, even if unused. Typically, Builder Xcessory will generate only code for pixmaps used in the application. Unset by default.
This menu allows you to select the kind of shell created when you drag and drop an object from the Palette with MB1. The shell options on the scroll menu include the following:
Default value is TopLevelShell.
Displays the Tools Customization dialog. The Tools Customization dialog is divided into the following tabs:
The following sections describe the options for each tab panel.
Click on the Source Code Control tab of the Tools Customization dialog to display the Source Code Control panel:
Allows you to reset the value of several resources related to the following options (available based on the supported environments and platforms).
Select one of the available systems, including your environment's source code control system. RCS (Revision Control System), SCCS (Source Code Control System), and other source code control systems allow you to manage code in a multi-developer environment.
Typically, the program forces you to check out a file to modify it, and prevents other users from modifying the file until it is checked back in. Source code control programs also keep track of the revisions made between subsequently checked-in files, to allow quick reconstruction of a previous version of a file. Consult your source code control documentation for more detailed information.
The source code menu allows you to select your source code control system. If you start Builder Xcessory from within your development environment, select the Use Environment Manager option to use your environment's system.
If your environment does not have a source code control system, or you want to use another system, select one of the following options:
The following text fields are available on the Source Code Control menu (defaults depend on whether you selected RCS, SCCS, Clear Case or User Specified):
Builder Xcessory executes many of the source code control commands by constructing a command as it would be entered at a shell prompt. The command lines for the various commands use symbolic representations for the various user-specified command line options.
Builder Xcessory substitutes the appropriate value for the representation when it builds the command line. In general, the options syntax is as follows:
Everything within the brackets "[ ]" is substituted for the option name in the command line. Most options may also include "%s" within the brackets "[ ]", indicating where to insert dynamically determined text, (such as a file name or a line number).
For example, assume a command to check out a file from source code control was "checkout" and it takes the name of the file to check out as an argument. The following is entered:
If the filename argument must follow the flag "-f", the command is entered as follows:
The following list describes the command line option substitutions available for source code control commands:
The Debugger & Build Manager menu allows you to select your debugger, as follows:
The following table describes the available editors and their respective command line options:
Enter the command of your choice according to the option specifications described in the following section, Options syntax in Builder Xcessory . |
Builder Xcessory uses the tool emacsclient
to tell Emacs to load a file and display the buffer. Emacs must be running. Builder Xcessory issues a request of this "Edit Server". By default, Emacs is not configured to run as a server. In order for the emacsclient
tool to work, you must add the following Emacs Lisp command to your .emacs
file (the file that emacs
runs at startup):
Enter this line exactly as shown, including parentheses. Once Emacs loads and executes the .emacs
file again (usually when it starts), it recognizes edit requests from emacsclient
.
Running Emacs with emacsclient
requires that the emacsclient
executable and Emacs executable be run on the same machine. The socket that emacsclient
uses to communicate with emacs
is a local socket.
To enable emacs
to run on one system and the client program to make edit requests from another system, you can usegnuclient. gnuclient
works similarly to emacsclient
, but also includes the following features:
· The -q
option forces gnuclient
to send its edit request but not wait for the request to complete. The gnuclient
process exits as soon as it sends the edit request.
· The gnuclient
software includes the ability to specify another host on which emacs
is running and to make the edit request on that machine.
The gnuclient
software is available with FTP from most GNU Emacs Lisp archive sites. To use gnuclient
/gnuserv
, include the following in the .emacs
file:
Builder Xcessory executes the text editor commands by constructing a command as it would be entered at a shell prompt. The command lines for the various commands use symbolic representations for the various user-specified command line options.
Builder Xcessory substitutes the appropriate value for the representation when it builds the command line. In general, the options syntax is as follows:
Everything within the brackets "[ ]" is substituted for the option name in the command line. Most options may also include "%s" within the brackets "[ ]", indicating where to insert dynamically determined text, (such as a file name or a line number).
For example, assume a command to edit a file was "editor" and it takes the name of the file to edit as an argument. This is entered as the following:
If the filename argument must follow the flag "-f", the command is entered as
Click on the Test Tools tab of the Tools Customization dialog to display the Test Tools panel:
Setting the XRunner Library toggle specifies the library that your application is linked to for XRunner to communicate with the application.
When you compile, append xrunner to the standard make command, as follows:
When using Imakefiles generated by Builder Xcessory, enter make xrunner
(uses the last generated Makefile):
When the toggle is set, XRunner targets are added to makefile, so that the XRunner libraries are built into the executable. When you run XRunner outside of Builder Xcessory, XRunner will query your application according to this setting.
Setting Purify Command specifies the command which Builder Xcessory places in front of the compile line in the generated C or C++ Makefile for the application. When you compile, append pure to the standard make command, as follows:
For the correct Imakefile enter make pure
(uses the most recent Makefile generated from the Imakefile):
When the toggle is set, the "pure" targets is added to makefile, so that the Purify commands are built into the executable. The application validates memory use and reports when a memory violation occurs. Purify will also report any leaked memory.
Setting MemAdvisor Command specifies the command which Builder Xcessory places in front of the compile line in the generated C or C++ Makefile for the application. When you compile, append pure to the standard make command, as follows:
For the correct Imakefile enter make pure (uses the most recent Makefile generated by Imakefile):
When the toggle is set, MemAdvisor targets are added to makefile, so that the MemAdvisor commands are built into the executable. The application validates memory use and reports when a memory violation occurs. MemAdvisor will also report any leaked memory.
Displays the GIL Customization dialog.
Interface files created with Devguide may be imported into Builder Xcessory, allowing you to incorporate existing GIL(Guide Interface Language) interfaces into interfaces you create with Builder Xcessory.
The GIL Customization dialog allows you to set the following GIL to UIL converter options:
The Browser displays the hierarchical structure of your interface, and is the principle window used to control Builder Xcessory actions. This chapter includes the following sections:
The Browser Project menu allows you to construct your interface in Build Mode, test look and feel in Play Mode, run and debug generated code in Debug Mode using your environment's debugger, launch a build of the application you are building in Builder Xcessory, check files in and out of your environment's source code control system, and edit files.
Select Project from the Browser menu bar to display the following menu:
Allows you to use the Palette, Browser, and Resource Editor to create interface objects and edit their resource values.
Allows interface objects to appear as if you compiled and linked your interface, without connected callback structures. All widgets behave normally, and menus, accelerators, mnemonics, and geometry management function as they will in the completed application. The Palette and Resource Editor are withdrawn. Pre-defined callbacks are invoked while Builder Xcessory is in Play Mode. Other callbacks display a message in the Browser Message Window.
If you change resource values while in Play Mode, these values are not necessarily retained when you return to Build Mode (thus allowing you to experiment without changing the values in your interface).
All resource values listed in the Resource Editor (except those for which Placement is set to None) will be Saved or Generated.
Allows you to launch a build-and-debug session with your environment's debugger. If your environment's build tool is not an integral part of the debugging tool, selecting Debug Mode first launches a build, waits for the build to complete successfully, and loads the debugger with the just compiled application.
Builder Xcessory can make use of the following debuggers.
When you select Debug Mode, Builder Xcessory performs the following operations:
· Generates code for your interface.
· Builds the interface code, as necessary.
· Starts your debugger, as necessary.
· Unmaps Builder Xcessory product windows.
· Passes control to your debugger, which runs your interface.
Run, test, and debug your interface. Return to Builder Xcessory to continue development by selecting Build Mode or Play Mode from the Browser Project menu. If you return to Builder Xcessory while your debugger is running your program, Builder Xcessory sends a reset command which might interrupt program run without ending the session.
When you return to Builder Xcessory in either Play Mode or Build Mode, the session remains active. At any time, you can automatically load your interface program back into the debugger/interpreter by selecting Debug Mode from the Browser Project menu.
If you are using CodeCenter/ObjectCenter with one interface already loaded, and you want to load an entirely different interface from Builder Xcessory, follow these steps:
1. On CodeCenter/ObjectCenter's command line, enter the following
2. Select Debug Mode from the Browser Project menu to load and run the new interface.
If you initiate a session from Builder Xcessory and then Exit the Builder Xcessory, the session remains running.
Launches a build of the application for which you are constructing an interface. Builder Xcessory generates code for the application, and causes your environment's build tool to build the application, as shown in the following table:
Displays the Check Out dialog.
Allows you to check out any file from your environment's source code control system. The default directories and files displayed at the top of the dialog are those in the current working directory. To select a directory and display its files, double-click on the directory name. To select a file, click on the file name.
Use the Check Out Options to determine how the file will be checked out:
Allows you to check a file back into your environment's source code control system. The default directories and files displayed at the top of the dialog are those in the current working directory.
To select a directory and display its files, double-check on the directory name. To select a file, click on the file name.
Use the Check In Options to determine how the file will be checked in.
Allows you to select a file to edit. Select Edit file to display the Edit File file selection dialog:
By default, the Filter field of the File Selection dialog contains the name of the directory from which you are running Builder Xcessory.
The Files box lists the files in the directory which match the file filter, set to "*" by default.
To display the contents of a different directory, enter the directory name in the Filter field and click the Filter button. You can specify match strings using regular expressions. For example, *.uil lists only files ending in the characters .uil. Click OK to open the specified file or Cancel to remove the File Selection dialog.
Select View from the Browser menu bar to display the following menu:
Allows you to edit certain resource values of the compound children of compound widgets. Compound children are sub-widgets of an automatically created widget. (For example, if you create a file selector box, it automatically creates buttons.) You can alter the appearance or behavior of the child widgets that comprise a compound widget.
Selecting Show Compound Children changes the view of any compound widget in the Browser. The Browser displays the compound children (usually hidden) as the children of the compound widget. An icon is displayed next to the children to identify them as special children.
You can then select a compound child as you would any other widget, and update the Resource Editor. The Resource Editor displays a subset of the compound child's resources.
Although most resources of a compound child are not available because they are overridden by the containing compound widget, you can edit any displayed resources. Once a compound child's resources are displayed, you can use the Resource Editor to can change resources, hide/show the object, and so forth. Refer to Resource Editor for more detailed information about the Resource Editor.
Allows you to access the contents of menus directly on your interface.
Setting the Show Menu Children toggle for a cascade button or menu displays the associated menu. You can then manipulate the children as you manipulate a typical interface object, for example, using drag and drop operations. Unsetting the Show Menu Children toggle for a given menu hides all of its descendants, and automatically unsets Show Menu Children for any descendant menus.
Selects the parent of the currently-selected instance and makes the parent the currently-selected instance. Select Parent is especially helpful when a parent is not easily selectable on an interface.
Forces any widget you subsequently create automatically to become the child of the currently selected widget (saving time in constructing the interface.
While Keep Parent is set, you select a new parent widget by clicking on the widget or its instance name. You can create a child of the current parent by double-clicking on any legal object in the Palette.
Forces each widget that you subsequently resize, move, or create to align itself with the underlying placement grid. Theplacement grid is invisible, and you can adjust the grid by selecting User Preferences from the Options menu. Snap To Grid remains set until you unset it. Setting or unsetting Snap To Grid does not move any existing widgets.
Toggles the display of the Browser Message window. If Builder Xcessory sends a warning or error when the window is hidden, the Message window is restored and the message displayed. Informational messages, such as confirmations of file generation, do not automatically restore the Message window.
Click the Hide push button to the left of the Message window to hide the Browser Message window.
Displays the Select input field. The Select input field is displayed at the bottom of the Browser.
You can search on either a an Instance of an object (an instance name, such as "pushbutton") or a Class Instance of an object (a class name, such as "XmPushButton"). To search:
1. Choose either Instance or Class from the option menu next to Select.
2. Enter the name in the Select input field (such as "pushbutton").
Alternatively, to search for a specific instance that has not been renamed, search on the instance or class name, and use the arrow buttons to walk through one instance at a time.
Displays the Browser Toolbar. The Browser Toolbar is displayed immediately under the Browser menu bar.
To add menu items to the Toolbar, hold down the Shift key and select the item from its menu. For example, to add Raise to the Toolbar:
1. Confirm that the Toolbar is being displayed. If not, set Show Toolbar on the Browser View menu.
2. Hold down the Shift key and select Raise from the Browser Edit menu.
Certain menu items, such as the Windows menu entries, which are automatically entered, cannot be added to the Toolbar. A warning dialog is displayed if you attempt to do so.
To remove an item from Toolbar, hold down the Shift key and select either the appropriate icon on the Toolbar or the item on the menu. For example, to remove Raise from the Toolbar, hold the Shift key and select Raise on the Toolbar.
Displays a window that shows the superclass-subclass hierarchy you created in your interface. This window provides an easy method for viewing the organization of your classes.
Clears any messages currently displayed on the Browser Message window. If Builder Xcessory sends a warning or error when the message window is hidden, the Message window is restored and the message displayed. Informational messages, such as confirmations of file generation, do not automatically restore the Message window.
Adding and Moving Palette Collections
Hiding and Displaying Palette Groups
Adding User-defined Widgets and Objects
Make/Unmake Subclass (Ctrl+Y/Q)
Show Compound Children (Ctrl+J)
C++ Code Generation Preferences
ViewKit Code Generation Preferences
UIL Code Generation Preferences
Java Code Generation Preferences
Resource Editor for a Widget Instance
Resource Editor Text Fields for a Widget Instance
Resource Settings for a Widget Instance
Resource Editor for Class Instances and Classes
Resource Editor Text Fields for Class Instances
Resource Editor Text Fields for Classes
Resource Editor for Multiple Widgets or Class Instances
Resource Editor Text Fields for Multiple Widgets or Class Instances
Default Resource Placement (Ctrl + M)
Identifying the Resource in the Editor Title Bar
Updating the Resource Editor Automatically
Application Timer Procedure Editor
Application Work Procedure Editor
Builder Xcessory Application Resource Defaults
Builder Xcessory Resource Command Line Options
Resources Modifiable from Builder Xcessory
Pre-existing Copies of the License Manager
Installing the License Manager
Starting the License Manager Daemon
License Manager and Builder Xcessory
License Manager Daemon (lmgrd)
Specifying Location of the License File
Diskless Nodes and Remote Mounted Disks
Configuration Problem Messages
Daemon Software Error Messages
Hostids for FLEXlm-Supported Machines
The following table alphabetically lists the default values for Builder Xcessory application resources:
You can access these statements from the Source Code Control tab of the Browser Tools Customization dialog.(Select Use ClearCase) (These are very long, complicated statements that do not fit in this table.) |
|
Dynamic 1 |
|
Dynamic 2 |
|
sccs delta -s %comments[-y\"%s\"] |
|
Once you select a default language, you can access the three main windows of Builder Xcessory:
All Builder Xcessory menus are tear-off menus that you can manipulate as separate windows. With the menu displayed, select the dotted line at the top of the menu. Tear-off menus are iconified and de-iconified with their parent window.
Depending upon the default language, the Palette displays labeled, iconic representations of the following objects:
· Entire set of Motif Xm interface widgets
· ViewKit ObjectPak Vk objects
· Subset of the EnhancementPak Xi widget set
The Palette can also include user-created collections of objects, other widget sets, and user-created classes.
Refer to Palette for a complete description of the Palette and to Resources for detailed information about the Palette icon objects.
If you are running Builder Xcessory PRO, you can use and compile the EnhancementPak widgets and ViewKit objects in your interface.
If you are running Builder Xcessory (not BX PRO), you can use the EnhancementPak widgets and ViewKit objects in your interface, but you must purchase the respective libraries to compile any interface built with the EnhancementPak widgets or ViewKit objects. Contact your Sales Representative for more information.
The Browser, the principle window used to control Builder Xcessory actions, displays the hierarchical structure of your interface.
The Browser has the following two display modes:
· Instances View (the default)
Refer to Browser for a complete description of the Browser.
The Resource Editor displays the resources (such as height, sensitivity, background) of the currently selected object. You can set the Resource Editor to display all resources of the selected object, or some subset of these resources, by selecting the items on the Resources menu. The Resource Editor defaults to display the Simple Resources subset of resources.
Refer to Resource Editor for a complete description of the Resource Editor.
The following table alphabetically lists the available command line options for Builder Xcessory application resources:
Specifies the number of Button/Key actions to count between automatic saves of the interface. Setting this value to 0 disables the autosave feature. (Autosave Interval text field located on the General tab of the Browser User Preferences menu.)
Specifies whether resources in the Resource Editor will be listed in alphabetical order. If True, the resources are displayed in alphabetical order sorted by their resource names. If False, the resources are displayed in the widget internal order. (Alphabetical Order toggle on the Options menu of the Resource Editor.)
Specifies whether pixmaps will always be output, even if none are referenced in the generated application. If True, all pixmaps are output always, whether referenced or not. If False, all pixmaps are generated only if at least one of them is referenced in the generated application. (Always Generate Pixmaps on the Save File tab of the Browser User Preferences menu.)
Specifies Builder Xcessory's response when you attempt to Open or Read a UIL file which has read-only file permissions, If True, you are prompted to check the file out from the version control system before reading it into Builder Xcessory. If False, Builder Xcessory reads the file and marks it as read-only.
Automatically dismisses the Startup Panel when you start Builder Xcessory. Set on the User Preferences Behavior tab from the Browser Options menu.
Specifies whether or not the associated menu will pop up when you select a Cascade Button, Option Menu, or Popup Menu. If True, the menu pops up automatically, as if the Show Menu command had been executed. If False, the menu does not pop up.
Specifies the geometry and iconification state of the Browser to use the next time Builder Xcessory runs. The string has the following format:
Specifies a list of items to place on the Browser tool bar. The list is comma separated and also specifies the order of placement. Unrecognized items are silently ignored. The last occurrence of a duplicate entry is used. Valid values include the following:
Specifies the shell type to use when a widget is placed outside any parent using MB1. Valid options are ApplicationShell, TopLevelShell, TransientShell, and XmDialogShell.
Specifies the shell type to use when a widget is placed using MB3. Valid options are ApplicationShell, TopLevelShell, TransientShell, and XmDialogShell.
Specifies whether the Builder Xcessory message dialogs should popup under the cursor or in the center of the screen.
The command to issue when the user requests a Cancel Check Out and configured the Source Code Control to ClearCase.
ClearCase Check Out Unlocked command.
ClearCase Check Out Locked command.
String to insert into all UIL files for ClearCase logging identification. Default is " ".
If True (default), displays a dialog requesting confirmation for a delete operation on the interface. If False, confirmation is not required to delete an object.
Specifies whether the Builder Xcessory outputs additional debugging information.
Specifies the debugger and application build tool to use when you select Debug Mode or Build Application in the Browser.
The following are the possible values:
Environment-- user's development environment debugger
CenterLine-- CenterLine debugging environment (CodeCenter/ObjectCenter)
Specifies the default type when you create an identifier in the Identifier Manager.
When importing a GIL file, specifies the arguments passed to the GIL translator.
When importing a GIL file, specifies the GIL code translator.
Specifies the language selected in the Language dialog of the Browser Options menu
Specifies the list of resource data types that default to App placement. A comma-separated list of resource data type names (all lowercase) is supplied to the data.
If False, all shells of an interface are displayed when it is loaded; the hierarchy of every shell is displayed in the Browser. If True, the shells and their hierarchies are not displayed. Instead, the shell names are listed on the Browser, and you must click on each shell name to display it. This is most useful when you are working with a complex interface and need to conserve screen real estate. When true, the interface will also load faster.
When the Builder Xcessory starts, it searches for the license data file. If it cannot find the license data file, it will not allow the user to save any work. This option allows Builder Xcessory to forego the search and run in demo mode. In demo mode, UIL code generation, autosave, and the Save/Save As features are disabled.
Specifies the directory where files will be written. This is initially the directory from where Builder Xcessory is started, but will change as UIL files are opened. It can also be changed explicitly.
Specifies which editor to use: Vi, Emacs, or User Environment.
The command to use when the editor is Emacs.
Specifies the file to load immediately after initialization. This is most useful when used with its command line variant.
Specifies whether the Browser tree will start any hierarchy with the node closed. This is a useful setting when reading large hierarchies as it helps improve the Builder Xcessory startup time.
This resource is used only in conjunction with the load resource. Specifies that Builder Xcessory should generate Palette entries for any and all user defined widgets, even if they already appear in a WML file.
When Builder Xcessory is asked to place a resource value in the application defaults file, on rare occasions, it is unable to supply a valid string for the output value. If this resource is set to False, Builder Xcessory will skip over the resource specification. If it is set to True, Builder Xcessory will print a resource specification to the app-defaults file without a value string following the colon.
Sets Builder Xcessory to import GIL interface objects as having a Motif or OPENLOOK look and feel.
Specifies whether Builder Xcessory lays out the interface based on size changes encountered in Motif version of OPENLOOK objects.
Specifies the size, in pixels, of the grid to be used when snapToGrid is True.
Specifies the time in milliseconds before the Panner will automatically pan during a drag and drop operation on an object instance hierarchy in the Browser.
The set of non-alphanumeric characters to accept as valid in identifier names. Default "_$.()[]&-><:"
Specifies whether Builder Xcessory should install its catastrophic error handlers which try to save the interface in progress when a catastrophic error occurs. This is only useful if a core file is the desired end product. Specifying False for this resource will turn off the error handlers and produce a core file on a catastrophic error. If False, the interface will not be saved on catastrophic error.
Specifies whether memory test targets should be added to the various makefiles and imakefiles.
Specifies whether Xrunner targets should be added to the Makefile.
Specifies whether Builder Xcessory uses USPosition to set x and y values. This is technically incorrect, but is necessary for most window managers to place the windows correctly.
Specifies whether Builder Xcessory should try to create a WML file and Palette entries for any user defined widgets.
Specifies whether or not to load the DEC widgets (if they are available) onto the Palette during Builder Xcessory startup.
Specifies whether or not to load the EnhancementPak widgets onto the Palette during startup.
Note: The EnhancementPak widget set is a separate product. Please consult your ICS sales representative for further information.
Specifies the directory that Builder Xcessory uses for individual additions to the Palette, such as user collections. This directory must be writable.
If True, Palette and toolbar pixmaps use the symbolic background and foreground colors. If False, the Palette and toolbar pixmaps are displayed with individual background colors.
Specifies which memory tool options to add to the application makefile: PURIFY, SENTINEL, or USER.
Specifies the minimum height a widget can have when created.
Specifies the minimum width a widget can have when created.
Specifies the version of the Motif toolkit for which Builder Xcessory will generate code. The Builder Xcessory will read in code written in any version of UIL.
Specifies how MRMRegisterArg is output and initialized in code when outputting UIL code. If True, MRMRegisterArg is output as an uninitialized array and is initialized in code. If False, MRMRegisterArg is output and initialized as a static array.
Specifies the command line to start ObjectCenter.
Specifies the geometry, iconification, view mode and catalog file of each Palette to display when Builder Xcessory is next executed. The string has the following format:
Specifies the color to use in the Palette and toolbar pixmaps for the symbolic background color.
Specifies the color to use in the Palette and toolbar pixmaps for the symbolic foreground color.
Specifies which set of pixmaps, if any, are used on the Palette. May be either BEST_FIT, FORCE_BW, or FORCE_COLOR. When pixmapMode is set to BEST_FIT, Builder Xcessory uses either the black and white pixmaps or the color pixmaps depending on the display. When pixmapMode is set to FORCE_BW, Builder Xcessory uses the black and white pixmaps. When pixmapMode is set to FORCE_COLOR, Builder Xcessory uses the color pixmaps.
When an object instance hierarchy is printed to the screen, this resource determines how the text will be displayed in the output window. When True, the text from the hierarchy will be appended to the output window. If False, the text will replace the current text in the output window.
When an object instance hierarchy is printed. this resource determines whether or not the class names of widgets will be printed. When True, the class names will be printed. If False, they will not.
This resource determines what command is used to print an object instance hierarchy to your printer. By default, the print command is lp.
When an object instance hierarchy is printed to the screen. this resource determines how much information about class instances is printed. If True, information about all of the widgets that make up any user-defined class is printed. If False, only information about the class instance is printed
When an object instance hierarchy is printed to the screen. this resource determines how many spaces to indent for each child level. The default value is 4.
When an object instance hierarchy is printed. this resource determines whether or not the instance names of the objects in the hierarchy should be printed. When True, the instance names are printed. If False, they are not.
When an object instance hierarchy is printed. this resource determines how many of the objects in the Browser window are printed. When True, only the selected object(s) and their descendents are printed. If False, all objects that are currently displayed on the Browser are printed.
When an object instance hierarchy is printed, determines the result of selecting Print Hierarchy from the File menu on the Browser. If True, the hierarchy is printed by your printer. If False, it is not.
Determines the result of selecting Print Hierarchy from the File menu on the Browser. If True, the object instance hierarchy is printed to an output window. If False, it is not.
When an object instance hierarchy is printed. this resource determines the format in which the hierarchy is printed. When False, the hierarchy is printed as interpreted by Builder Xcessory. If True, the hierarchy is printed as it is implemented in Xt.
The set of non-alphanumeric characters to accept as valid in procedure names. Default: "_$<>:"
Specifies the command used to make a memory test target in the application makefile.
Specifies whether the Resource Editor should be raised to the top of the stacking order whenever a widget is updated.
Specifies the command line for the RCS Cancel Check Out command.
Specifies the command line for the RCS Check In command.
Specifies the command line for the RCS Check Out Locked command.
Specifies command line for RCS Check Out Unlocked command.
String to insert into all UIL files for RCS source code control login identification. Default is "$ID$"
Specifies whether the Resource Editor will remove the last newline at the end of a string, typically typed in accidentally.
Specifies whether the Resource Editor will be in Automatic Update mode or not. If True, the Resource Editor will update its display automatically each time a widget instance is selected. If False, the editor will only be updated on request. The default value is False.
Specifies the Resource Editor view. This setting determines which group of resources is displayed--all resources are displayed by default. Other settings include simple, programmer, modified, and not equal (for use with multiply-selected instances). You usually select these from the Resource Editor Resources menu.
This resource is a list of the items to place on the Resource Editor tool bar. The list is comma separated and also specifies the order of placement. Unrecognized items are silently ignored. The last occurrence of a duplicate entry is used. Valid values include the following:
Specifies the geometry and iconification state of the Resource Editor the next time Builder Xcessory executes. The string has the following format:
Specifies the message Builder Xcessory sends to CodeCenter when CenterLine Mode is invoked.
Specifies the message Builder Xcessory sends to ObjectCenter when Centerline Mode is invoked.
Specifies the command line Builder Xcessory uses to invoke CodeCenter.
Specifies whether Builder Xcessory should execute CodeCenter when CenterLine mode is invoked.
Specifies the message Builder Xcessory sends to CodeCenter to reset CenterLine Mode.
Specifies the message Builder Xcessory sends to ObjectCenter when Centerline Mode is invoked.
Specifies whether Builder Xcessory should save Browser, Resource Editor, and Palette states on exit. Valid values are SaveState or UseDefault.
Specifies the command line for the User Specified Cancel Check Out command.
Specifies the command line for the User Specified Check In command.
Specifies the command line for the User Specified Check Out Locked command.
Specifies the command line for the User Specified Check Out Unlocked command.
String to insert into all UIL files for user-defined source code control logging identification. Default is " ".
Specifies the command line for the SCCS Cancel Check Out command.
Specifies the command line for the SCCS Check In command.
Specifies the command line for the SCCS Check Out Locked command.
Specifies the command line for the SCCS Check Out Unlocked command.
String to insert into all UIL files for RCS logging identification. Default: "%W % %D% %T%"
Memory test command to use when the memory tool is set to SENTINEL.
When True, this resource will cause Builder Xcessory to center the Browser tree to center automatically about the selected object node. When False, the tree will not be moved when an object is selected.
If True, specifies that the Browser Toolbar should be displayed at start up time. If False, the Browser Toolbar will be hidden initially.
When True, the compound children of any compound widgets are displayed in the Browser tree hierarchy. If False, compound children will not be displayed.
If True, specifies that the Resource Editor Instance Data Field header should be shown at start up. If False, the Resource Editor Instance Data Field Header is hidden initially.
When True, this resource will cause Builder Xcessory to start with the message window in the Browser displayed rather than hidden.
If True, specifies that the Resource Editor Search Field should be shown at start up. If False, the Resource Editor Search Field is hidden initially.
If True, specifies that the Resource Editor Instance Data Field header should be shown at start up. If False, the Resource Editor Instance Data Field Header is initially hidden.
If True, specifies that the Browser Widget Search/Select Field be shown at start up. If False, the Browser Widget Search/Select Field is initially hidden.
Specifies whether widgets are placed in accordance with the grid. See also gridUnit.
Specifies which Source Code Control (or version control) system to use for Check In and Check Out requests.
Possible values include the following:
Use the user's development environment source code control tool. |
|
Specifies whether Builder Xcessory should allow only widgets that are subclasses of XmBulletinBoard to be the child of an XmDialogShell.
Specifies whether Builder Xcessory should use symbolic names when generating UIL code. If True, and motifVersion is 1.0, the output UIL file will include the file XmAppl.uil. If False, this file will not be included and Builder Xcessory will generate the actual constant values instead of the symbolic names.
When load is True, specifies that the WML file and Palette entries should be put in the system directory instead of the local directory. Typically, root privileges are necessary for this option.
Specifies the directory that Builder Xcessory searches for its system initialization files.
Specifies that the Builder Xcessory integration with a development environment should be used. Valid values include:
Note: Communication with the DEC FUSE environment will only work when Builder Xcessory is started from the DEC FUSE Control Panel.
Specifies how the buttons in both the Browser and Resource Editor Toolbars should be displayed.
Possible values include the following:
· XiIconLeft--Display both labels and icons
· XiIconNone--Display labels only
· XiIconOnly--Display icons only
The set of non-alphanumeric characters to accept as valid in type names. Default values are "_ $ < > &"
Specifies whether resources in the Resource Editor will be listed in order of their type. If True, the resources are ordered according to their resource type. If alphabeticOrder is also True, then the resources are ordered alphabetically within each resource of the same type.
Specifies the directory or directories that Builder Xcessory searches for files included by the uil include directive. Additional include directories may be specified by separating with a comma.
This resource affects the generation of icon values in UIL code. If True, the icon's color table will be generated in a separate value statement immediately preceding the icon value to which it applies. If False, the icon's color table will be generated as a part of the icon value. This is a legal UIL value specification, but most UIL compilers flag this syntax as an error or do not compile it correctly.
If True, prepends the subclass name and an underscore (_) to all subclass widget names in order to make them unique from their corresponding superclass widgets. If False, allows subclass widgets to have the same names as their corresponding superclass widgets--you must then rename the subclass widgets yourself.
Note: Valid on SGI Platforms only.
If True, load the OpenGL Drawing Area widget on the Palette. If False (default), load the IRIS GL Drawing Area widget on the Palette.
Useful for users generating UIL code and unable to extend the UIL compiler to understand new widgets. Set to True only when generating the UIL file that will be compiled because the resulting UIL file becomes much larger and more confusing.
If True, writes UIL files with all non-motif widgets fully specified as user-defined UIL objects.
If False (default), writes UIL files treating all widgets as if defined to the UIL compiler.
Specifies the command to use for a user-defined editor.
Specifies the command to use for a user-specified memory test tool.
Specifies the format of the command to use for the vi editor.
If True, shows only one class at a time in the Browser and Class Hierarchy, when in Classes view. If False, show any number of classes at the same time in the Browser and Class Hierarchy.
Specifies whether or not long strings should be broken into shorter lines during UIL code generation. Some compilers cannot handle lines longer than 132 or 256 characters, a limit often exceeded by font lists or multi-font label strings. This option lets the user break these into multiple lines separated with a backslash and return character sequence.
Specifies whether the window manager interprets X, Y locations relative to the window decorations. By default, most window managers take a window's X and Y location as relative to the decorations. Change this value if you notice that the main Builder Xcessory windows are not restoring their positions correctly from session to session.
Specifies the libraries used to make an Xrunner object.
If False, allows instance names of widgets to begin with an upper case letter. If True, forces a lower case letter. Capitalized widget names may cause problems with the proper inheritance of application defaults resource values and conflicts with Xt specifications.
Common Desktop Environment (CDE) widgets are included on the Palette when you run Builder Xcessory on any platform with CDE and Builder Xcessory CDE support (except on SunOS platforms). The following sections provide descriptions of each CDE widget in alphabetical order (refer to your CDE Programmer's Guide for more detailed information):
The DtHelpDialog widget provides users with the capability for viewing and navigating structured online help information (CDE help volumes). Functionality includes text and graphics rendering, embedded hypertext links and various navigation methods to move through online help information. Supports rendering of CDE help volumes, system manual pages, text files, and character string values.
The DtHelpQuickDialog widget provides users with a constrained set of functionality for viewing and navigating structured online information (CDE help volumes). Functionality includes text and graphics rendering, embedded hypertext links and limited navigation methods to move through online help information. Supports rendering of CDE help volume, system manual pages, text file, and character string values.
The DtTerm widget, part of the runtime environment, is a window that behaves as a terminal, enabling access to traditional terminal-based applications from within the desktop. Provides the functionality required to emulate an ANSI X3.64-1979-style terminal emulator (specifically a DEC VT220-like terminal with extensions).
Allows you to connect objects in your interface with the application. Callbacks are routines executed in response to user and program actions. The Callback Editor allows the Builder Xcessory to support callback lists (a single action results in the execution of a number of routines).
Click the (...) button to the right of any callback resource on the Resource Editor to pop up the Callback Editor.
The display area lists the Procedure Name, Parameter Type, and Parameter Value of each callback for the resource for which the Callback Editor has been called.
Select, add, and delete work procedures using the following methods:
· Select a callback by clicking on its name in the Callback List. All appropriate fields are updated for the selected callback.
· Add a callback to the list by clicking New and entering the Procedure Name and any necessary parameter data in the appropriate text fields.
· Delete a callback by selecting it in the list and clicking the Delete button.
New procedures are created with a default Parameter Type of Undeclared in the Callback Editor, indicating that parameter values of any type are accepted in the Parameter Value field. Other valid values include:
None indicates that the callback procedure takes no value as its client data. All other types are listed in the Type Manager. A duplicate list is available by clicking on the arrow to the right of the Parameter Type label in the Callback Editor.
Additional user-defined types can be declared in the Callback Editor by entering the new type name in the Parameter Type field. Builder Xcessory prompts you to confirm a new user-defined type.
The Parameter Type field is grayed out if the callback specified in the Procedure Name field is referenced by a widget or style resource in your interface. The procedure's parameter type cannot be changed, in either the Callback Editor or the Procedure Editor, unless all references to the procedure are removed from the interface.
When Builder Xcessory encounters a parameter in the Callback Editor, it searches for a match in the following order:
If no match is found, Builder Xcessory prompts you to declare the parameter as an identifier.
The Parameter Value field accepts the following values as the client data value to pass to the callback operation:
The type of the value must correspond to the type listed in the Parameter Type field.
If the text entered into the Parameter Value field is not a constant, identifier, or actual value, then Builder Xcessory prompts you to declare the value as an identifier of the appropriate type.
An extended editor for the parameter value is accessible by pressing the (...) button to the right of the Parameter Value field.
Click the arrow button to the right of the Callback Editor's Procedure Name text field to display the following list of predefined callbacks (in the following table, the parameter widget list refers to a string of widget names delimited by commas: widget1, widget2, widget3...):
When the callbacks-c.c file is written out, the file includes the fully commented code for the predefined callback.
In Classes View, the Resource Editor displays the Class Members of the currently selected class instead of resources. Class Members are distinguished by their type (Data or Method) and scope (Public, Private, or Protected). Use the Class Member Editor to specify multiple members in each category, and add or edit Members.
Click the (...) button to the right of the Class Methods and Data text field to display the Class Member Editor:
Use these toggles at the top of the Class Member Editor to select Data or Method mode.
Other fields and toggles allow you to assign the type, name, and other attributes such as the member's scope.
Some cross-checking of selections occurs so that inappropriate selections are disabled. For example, if you are using C++ code generation, an initial static value is unavailable for methods and is disabled.
Parameter fields are available only when you select Method mode. For Data mode, the parameter fields are hidden. Static data members can provide initial values. For methods, the parameter fields allow you to enter argument types, parameter names, and, for C++ code generation, default values.
Allows you to change any color resource.The Color Editor has two modes:
· Red, green, and blue color sliders allow you to mix your own custom color.
· A color list allows you to select a named color, generated from /usr/lib/X11/rgb.txt.
If you run out of color cells on your display, the Color Editor displays a message. The correct value is assigned to the resource, and the closest existing color is used for the display.
Click the (...) button to the right of a color resource (for example, background) to display the Builder Xcessory Color Editor.
The Color Sliders option is the default. Move the red, green, and blue sliders to mix the color you wish. The color in the Color box changes as you move the sliders. When you click Apply, the selected color is recorded in the Resource Editor and represented as a six-digit hexadecimal number preceded by the pound (#) symbol.
If you are using Motif version 1.1 or later, you can include custom colors in your UIL files.
Click the Color List option on the Color Editor to display a scrolled list of available color names:
Allows you to specify a color, as well as a character that represents the color when using the icon function. The keywords background and foreground are also recognized and output appropriately.
Color Table Editor
Note: You must specify each color/character pair on a separate line. For example, the following:
are output as
Many vendors choose FLEX lm as their license manager, and it is likely that you must administer licenses from more than one vendor, or multiple products from the same vendor.
Use one of the following methods to avoid licensing conflicts during installation when running FLEX lm -licensed products from multiple vendors:
· Multiple license servers; each running one lmgrd
and one license file
· One license server running one lmgrd
and one license file
· One license server running multiple lmgrd
s and multiple license files
lmgrd
can only control a single license file.
Running separate lmgrd
s and license files simplifies initial installation and can increase daily administration of your licenses. For multiple license servers, you have more license servers to monitor. For the one license server, you have only one server, but multiple lmgrd
s to administer.
Your product's license file (or files) define the license server (or servers) by hostname and hostid in the SERVER line (or lines) in the license file. If the license files for two or more products contain identical SERVER lines, then see Using the Same Server Node . If the license files for two products contain different SERVER lines, then the license servers for those products will run on different nodes.
If you have two or more products with license servers run on the same node (as specified by the SERVER lines in the license files), you may be able to combine the license files into a single license file. If the SERVER lines in those files have identical hostids, then you can combine the files into a single file. If the SERVER lines have different hostids, then you must keep the license files separate.
You can combine two license files under the following conditions:
1. The number of SERVER lines in each file is the same.
2. The hostid field of each SERVER line in one file exactly matches the hostid field of each SERVER line in the other file.
Under the following conditions, some license files are not compatible:
· License files are set up to run on different server nodes, so hostids are different.
· One file is set up for single server (has only one SERVER line), the other is set up for redundant servers (has multiple SERVER lines).
· One vendor uses a custom hostid algorithm, so the hostids on the SERVER lines are different even though the files are for the same machine.
If your license files are compatible you can combine license files and run a single lmgrd
, as described in Combining license files for multiple vendors .
If the license files are not compatible, you must keep the license files separate, and run separate copies of lmgrd
for each license file, as described in Using Separate license files on the same server node .
lmgrd
s as described in Using Separate license files on the same server node .
If your license files are compatible (i.e., use the same server nodes), you can combine them with any text editor. To combine license files, read all of the compatible license files into one file, then edit out the extra SERVER lines so that only one set of SERVER lines remains. Write out this data, and you have your combined license file. If you write the data to license.dat in the default location, you will generally not need to set the LM_LICENSE_FILE
environment variable. If you write the data out elsewhere, or if you were able to combine some but not all of your license files, then you must set the LM_LICENSE_FILE
variable (unless your application uses another method to find the license file).
When you combine license files for two different FLEX lm -licensed products, those products might not use the same version of FLEX lm . FLEX lm is designed to handle this situation, and has two basic compatibility rules for FLEX lm:
1. A newer lmgrd
can be used with an older vendor daemon, but a newer vendor daemon might not work properly with an older lmgrd
.
2. A newer vendor daemon (or lmgrd
) can be used with an older client program (such as an application or utility programs like lmstat ), but a newer client program might not work properly with an older vendor daemon.
From these two compatibility rules comes the simple rules for selecting which version of administration tools to use:
1. Always use the newest version of lmgrd
and the newest version of each vendor daemon.
2. If you have FLEX lm v3.0 utilities, use these; otherwise use the most recent version of the utility programs (such aslmstat ) which can connect to all of the vendor daemons.
For specific application programs, you can use either the new or the old version (with the assumption that the vendor daemon that goes with that application is at least as new as the application).
There are a couple of details and exceptions to go with the above rules:
1. Products using version 2.0 of FLEX lm may not be combined in one license file with products using version 1.5 or earlier of FLEX lm . In this case, you must use separate license files (see Using Separate license files on the same server node ).
2. If you combine a product using version 2.1 or later of FLEX lm with a product using version 1.5 or earlier of FLEXlm , you must use the"-b" (for backwards compatibility) command line option to lmgrd
. You can always use a version of lmgrd
that is newer than the one provided by your software vendor, as long as you are careful to use the "-b" switch if replacing v1.x lmgrd
with a v2.1 or later lmgrd
.
lmgrd
default to "-b". Do not use the "-b" option if you are using FLEX lmv2.4 or later.
If you have incompatible license files, you must run a separate copy of lmgrd
for each license file. (You can also do this even if your license files are compatible.) When you run lmgrd
separately for each license file, there are two details to remember:
1. The port number on the SERVER line of each license file must be unique. You can use a standard text editor to change the port number in each license file so that they are all different.
2. You must make sure that you are using a compatible version of lmgrd
when you start it up for a particular license file. This can be done by either using an explicit path to lmgrd
, or by renaming lmgrd
to something specific for that product (some vendors do this to make it easier to identify the lmgrd they ship with their product).
When running client programs (such as a licensed application), you can set the LM_LICENSE_FILE
environment variable to point to multiple license files. For example, you may have a license file from vendor ABC and a license file from vendor XYZ with incompatible servers. You can place the license file from vendor ABC into:
and the license file from vendor XYZ into:
then set the LM_LICENSE_FILE
environment variable to point to both of them. Each name in LM_LICENSE_FILE
should be separated by a colon ":". In the C shell:
In the Korn and Bourne shells:
LM_LICENSE_FILE
can point to only one license file for FLEX lm v1.x applications.
If products use different license server nodes, each set of license servers requires separate license files. (When multiple software vendors use the same set of license server nodes, the technique described above in Using the Same Server Node can be used to combine license files.) The resulting (multiple) license files can be installed in convenient locations, and you would set the LM_LICENSE_FILE
environment variable as follows:
lfpath1
Path to the first license file
lfpath2
Path to the second license file.
lfpathN
Path to the last (Nth) license file
Each application queries each license file in the order listed in the LM_LICENSE_FILE
path. If the license server serving the license file listed in lfpath1 was unreachable, perhaps due to an NFS problem, changing the LM_LICENSE_FILE
would allow a user to obtain a license from another server.
For more information about LM_LICENSE_FILE
and setting the location of the license file, see Specifying Location of the License File .
Allows you to hide or show an object, make a widget into a gadget, rename the topLevelShell's creation routine, and re-specify the creation routine parameters.
Select Component from the Resource Editor menu bar to display the Component menu:
The object is displayed during your Builder Xcessory session. By default, Show is set. When you select Hide, the object is immediately removed from your display. A hidden object will not be shown in the generated code.
Allows you to toggle between the widget and gadget variants of various Motif Primitives. The Class Name, as it appears on the Resource Editor, is updated dynamically.
Builder Xcessory allows you to declare widgets outside the scope of the creation file. These widgets are accessible from anywhere within your program. While this is not recommended programming practice, we recognize that there are instances in which this capability is useful.
Select Storage Location from the Component menu of the Resource Editor to display the Storage Location dialog:
Set the Scope text field to one of the following:
Specify widget ID names in the Widget text field for widget instances. The widget instance name is used as the default.
For class instances, the Widget label changes to the name of a structure that contains all widget IDs in that class instance. You can specify any ID name in the Widget text field.The class instance name is used as the default.
The following table lists and describes the buttons on the Storage Location dialog:
Changing Storage Location does not alter the C++, ViewKit, or Java code generated by Builder Xcessory. All widget instances are automatically declared as protected members of the class and are accessible from within class instances. If you want to access these widget instances, add a public method to the class definition.
When you set Storage Location for a class instance, if you generate C code, the structure itself is passed for types Local and Global. A pointer to the structure is passed for type Other (the location must be valid).
In contrast to C generation, no structure is generated for class instances when you generate UIL. Only the widget ID of the uppermost widget instance in the class instance is stored. You can access other widgets using the XtNameToWidget call. Widget instances which are not within classes are generated just as in C.
Select Creation Routine on the Component menu of the Resource Editor to display the Creation Routine dialog:
A widget's Creation Routine is the routine in the creation-c.c file, called by the main-c.c routine, which creates the widget. You can rename this routine and specify the type and name of the parameter passed to the routine.
Click the arrow button to the right of the Procedure Name text field to view a combination box containing all currently defined procedure names. Enter the name into the Procedure Name text field.
If you enter a new Procedure Name, the default parameter type is None. If you choose an existing routine, the Parameter Type field displays the type assigned to the routine in the Procedure Manager. To change this type, the following conditions must apply:
The Parameter assigned to the Creation Routine can be an identifier or an actual value corresponding to the Parameter Type. New identifiers entered in the Parameter text field will be created and displayed in the Identifier Manager with the appropriate Parameter Type. Constants are not valid Creation Routine parameter values.
Click on Class Source File on the Component menu of the Resource Editor to display the Class Source File dialog:
Base name to which the C++ and C source and header suffixes will be appended. Set to the Base Class Name by default. For example, files generated from Base Class File "Foo" will be Foo.C
(for the source file) and Foo.h
(for the header file).
Base name to which the derived class C++ source and header files will be appended. The default value is the Derived Class. For example, files generated from Derived Class File "foo" will have the default names FooDerived.C (for the source file) and FooDerived.h (for the header file). By default, not displayed.
Select Generate Class to generate source code for the selected class. Set on by default. When linking a class into your application from a library, you can turn off source code generation.
Select Include By Reference to forward reference a class without including its header files. Set on by default. If set off, includes the header of nested classes.
Allows you to change a resource of type XmString (for example, labelString).
The Compound String Editor contains the following components:
· A combination box displaying the Font Tag. The default font tag value is FONTLIST_DEFAULT_TAG_STRING. The other tags are retrieved from the associated fontList resource if you are editing a widget resource (Styles are not supported).
· An arrow button, indicating in which direction the selected text is read. The default is left-to-right (arrow points right).
· The Show Output toggle. When the toggle is set, the compound string is displayed in a window underneath the text entry field. Any changes made in the Compound String Editor are reflected in this window before the contents are applied to the currently selected widget resource using the OK button.
· The upper text entry field in which you edit the string and apply different font tags to different segments of the string.
· The lower text field in which the string is displayed when the Show Output toggle is set.
Allows you to specify a list for a resource of type XmString (such as items).
The Compound String List Editor contains the following components:
· A combination box displaying the Font Tag. The default font tag value is FONTLIST_DEFAULT_TAG_STRING. The other tags are retrieved from the associated fontList resource if you are editing a widget resource (Styles are not supported).
· An arrow button, indicating in which direction the selected text is read. The default is left-to-right (arrow points right).
· The Show Output toggle. When the toggle is set, the compound string is displayed in a window underneath the text entry field. Any changes made in the Compound String Editor are reflected in this window before the contents are applied to the currently selected widget resource using the OK button.
· The text entry field in which you edit the string and apply different font tags to different segments of the string.
· The text field in which the string is displayed when The Show Output toggle is set.
· The String field, in which each string in the list is displayed in its string format. The New and Delete buttons to the right of this field allow you to manipulate the list of strings, while the up and down arrow buttons allow you to reorder the strings.
The Compound String Table Editor allows you to use Shift+Return to do a New operation.
Allows you to view constants to help you apply resource values to objects. Select Constants from the Browser Managers menu to display the Constant Manager:
Select File from the Constant Manager menu bar, either with the mouse or with a mnemonic, to display the Constant Manager File menu:
Select Edit from the Constant Manager menu bar, either with the mouse or with a mnemonic, to display the Constant Manager Edit menu:
The following sections describe the options available from the Edit menu.
Select Edit Constant from the Constant Manager Edit menu to display the Constant Editor:
Specify the type of the constant using the Type text field and its associated combination box. You may specify any of the following UIL data types:
Specify the resource value of the constant in the Value text field, or by using the associated extended editor (accessible by pressing the (...) button).
Reference Count enumerates the number of times the constant is referenced in the current interface and in the Builder Xcessory. The type of the constant may not be changed as long as this value is greater than zero. The notation Palette = n means that there are n references to the constant in collections on the Palette.
Set the scope of the constant to either Private or External in the UIL output file:
The Output File Option Menu allows you to specify the file to which the constant will be written when Builder Xcessory generates UIL. See File Placement for more detailed information.
You use constants in different ways, depending on whether you are generating UIL or C code.
When generating UIL code, you can use constants to fetch the resource value at runtime. UIL automatically translates the data type of the constant to that of the resource value. This saves you the trouble of explicitly specifying the X, Xt, and Motif calls in the code.
For example, if you create a constant named COLOR_CONSTANT with the value "RED", the defs-c.h file will contain the line:
while the UIL file would contain the line:
If you wanted to fetch the value in the file main-uil.c, you would include in that file the line:
When generating C, you can use constants for the following tasks:
· Define named resources up front, similar to the definition of constants in the header of a program.
Constants which have been defined may be referenced in various places in the Builder Xcessory.
Enter a constant as a resource value in a resource's text field, or from the Const pop-down list off the resource placement options menu, in the Resource Editor. Refer to Resource Editor for a detailed description of the Resource Editor.
If a widget's resource value depends on a constant that is subsequently Cut from the Constant Manager, then the widget's resource is changed from Constant to Code, and the resource value is set to the current value of the constant.
Use a constant as part of a style definition by entering the constant name in the appropriate text field on the Style Editor. Refer to Style Editor for detailed information.
Select a constant from any of the Builder Xcessory extended editors. Selecting the Constant radio button displays a combination box which contains the names of all constants of the appropriate type. Refer to Extended Editors for a description of each of the extended editors.
In the previous sections, a constant of type Integer may be used as part of an expression. For more information, refer to Expressions .
This example describes how to apply a constant to the background resources of the widget instances in your interface:
To create the constant, perform the following steps:
1. Select Constants from the Browser Managers menu.
2. Select Create Constant from the Constant Manager Edit menu.
3. Double-click on the new constant to bring up the Constant Editor.
4. In the Constant Editor, enter the name OK_LABEL in the Name text field.
5. Click the arrow button to display the Type combination box, and select Compound String. Click the (...) button to the right of the Value textfield to display the Compound String Editor.
6. Specify the value "OK" (without quotation marks) in the Compound String Editor text area. Refer to Compound String Editor for more detailed information about the Compound String Editor.
7. Click the Apply button on the Compound String Editor to apply the string value to the constant. Dismiss the Compound String Editor. The value is entered in the Constant Editor Value text field.
8. Click the Constant Editor Apply button to create the constant OK_LABEL, displayed in the Constant Manager.
To reference the constant, perform the following steps:
1. Create a push button and update the Resource Editor.
2. Click the (...) button to the right of the labelString resource to display the Compound String Editor.
3. Click the Constant toggle to the right of Resource Placement at the bottom of the Compound String Editor. This displays a dialog with a textfield and an arrow button.
4. Click the arrow button to the right of the Constant Name text field to view all existing constants of the same type as the resource labelString (type: compoundString).
5. Select OK_LABEL and click the Apply button at the bottom of the dialog to apply the constant as the value of the push button's labelString resource. If you go back to the Constant Editor, you will notice that the Reference Count for OK_LABEL has been changed.
Constants are defined, viewed, and manipulated using the Constant Manager. The Builder Xcessory constants allow you to perform the following tasks:
· Assign a constant name to a value. The constant name is then referenced when you use the value in a resource. This behavior is equivalent to a style containing a single value.
· Fetch the resource value referenced by a constant at runtime using the routine call MrmFetchConstant orMrmFetchSetValue.
Note: You can use Constants of type Integer in expressions. Refer to Expressions for more detailed information on expressions.
Digital Equipment Corporation (DEC) DXm widgets are included on the Palette when you run Builder Xcessory on a DEC platform. The following sections provide descriptions of each DEC widget in alphabetical order (refer to your DEC documentation for more detailed information):
The daemons all generate log files in the following format.
mm/dd hh:mm Time that the message was logged.
DAEMON NAME Either "license daemon" or the string from the DAEMON line that describes your daemon. In the case where a single copy of the daemon cannot handle all of the requested licenses, an optional "_" followed by a number indicates that this message comes from a forked daemon.
· Inform users when they need to purchase additional application software licenses.
This document uses the following terms:
Move the cursor over an object, press a mouse button, and immediately release the mouse button. When the button is unspecified, assume mouse button one (typically the left mouse button).
A group of related user interface objects saved to the Builder Xcessory Palette for reuse. Collections can include any UI object supported by Builder Xcessory, including widgets, gadgets, C++ classes, ViewKit components, or Java (AWT) classes.
A user interface object, generally used in the context of ViewKit classes. ViewKit components generally consist of collections of Motif widgets along with code to implement general or specific functionality, encapsulated into a C++ class subclassed from an element of the ViewKit application framework.
A graphical image appearing on the screen which reacts to the movements of a mouse or other pointing device. In the Builder Xcessory, the cursor appears as an angle bracket when creating a widget, and an arrow when selecting a pull-down menu or menu item. During a drag and drop operation, it appears as an icon reflecting the type of object dragged and the target over which it is positioned.
Press a mouse button, then move the mouse without releasing the button. Typically followed with a drop operation. The phrase, "drag on to" indicates a drag and drop operation. Use MB2 to perform a drag and drop operation, unless otherwise specified.
Release the mouse button after positioning the mouse (and screen object) as desired. Typically follows a dragoperation. The phrase, "drop on to" indicates a drag and drop operation. Use MB2 to perform a drag and drop operation, unless otherwise specified.
A user interface object built upon the Xt Intrinsics (the X Toolkit). Similar to a widget, a gadget lacks certain data structures (such as a window) contained in a widget. The gadget maintains this data on the client side, rather than on the server, as does a widget. Although seldom used with today's server performance levels, gadgets remain supported by BX.
Mouse buttons one, two, and three. Typically, MB1 is the left-most button, MB3, the right-most. On a two-button mouse, MB2 is most commonly emulated by pressing both buttons simultaneously. For actions described as "click," assume MB1.
This menu is invoked by pressing MB3 while the mouse pointer is positioned over an object on the display. The contents of the menu depend on the type of object pointed to and the window in which you access the menu.
A reusable software entity with a user interface (UI), or visible, aspect. A generic term for the various objects that are manipulated with Builder Xcessory. UI objects include widgets, related collections of widgets, C++ classes, ViewKit components, and Java (AWT) classes. The term object and the term UI object are interchangeable.
A user preference specification that controls elements of an application that can be customized by the user.
To choose an object to be acted upon or an action to be performed; accomplished by clicking mouse button one on an object or menu item.
A single, continuous working session, from the time you start Builder Xcessory from the command line, or from another tool, to the time you select Exit from the Browser's File menu.
A user interface object built upon the Xt Intrinsics (the X Toolkit). Motif user interface objects are widgets.
The Builder Xcessory uses the application resource useWmTitleBar, which takes a boolean value and is True by default. When the value is False, a label is displayed across the top of the extended editors with the same information that is in the window manager's title bar.
Note: This is useful for users who set up their window managers without title bars on transient windows. If the user sets this resource to False, and allows the window manager to set up title bars on transient windows, the displayed information is redundant.
Start with EPak Widgets must be set on the Behavior tab of the User Preferences dialog to display the EnhancementPak icons. See Behavior toggle options for more detailed information.
EnhancementPak widgets are displayed on the Palette for all platforms and for all languages except Java. The EnhancementPak widgets are grouped in the following folders:
The following sections provide descriptions of each EnhancementPak widget in alphabetical order. Refer to the EnhancementPak for OSF/Motif Programmer's Reference and the ICS GraphPak for OSF/Motif Programmer's Reference manuals for more detailed information about these widgets.
The XiTabStack widget manages a group of widgets such that only one widget in the group is visible at a time. Each child is associated with a tab that displays text and/or a pixmap. The user selects the tab, interactively determining which child is displayed. Tabs can be configured to appear above, below, and right or left of the work area, with the text oriented in any of the four cardinal directions.
Allows you to specify a method to call when an event occurs. Click the button to the right of the actionEvent resource in the Resource Editor to pop up the Event Editor:
Click on the Code or App toggle of the Resource Placement field. Enter the event name in the text field and click on Apply. Click on Edit to generate code.
Allows you to add event handlers to your application's widgets. Event handlers are attached to widgets and are accessed through the Resource Editor, much like callbacks. Event handlers are not application global. The purpose of event handlers is to let you specify functions to be called when widgets receive certain events.
Click the (...) button to the right of the eventHandler resource in the Resource Editor to pop up the Event Handler Editor:
The display area lists the Handler Name, Event Mask, Non-Maskable setting, Parameter Type, and Parameter of each event handler that has been added to the application.
· Select an event handler by clicking on its name in the list. All appropriate fields are updated for the selected event handler.
· Add an event handler to the list by clicking New and entering the Handler Name and any necessary parameter data in the appropriate text fields.
· Delete an event handler by selecting it in the list and clicking the Delete button.
When changing or adding an event handler to the list, you can choose a handler name from the list displayed by clicking on the arrow to the right of the Handler Name label, or you can create a new procedure by typing its name in the Handler Name text field. Builder Xcessory prompts you to confirm a new handler name.
When a widget gets a specified X event, the event handler is called. To specify the X event(s), you must do so in the Event Mask field. You can choose an event mask from the list displayed by clicking on the arrow to the right of the Event Mask label, or type its name in the Event Mask text field. You can choose one or more event masks, separating each mask name with a comma or a logical "or" (|).
New event handlers are created with a default Parameter Type of Undeclared in the Event Handler Editor, indicating that parameter values of any type are accepted in the Parameter field. Other valid values include all pre-defined types, user-defined types, and None. None indicates that the event handler takes no value as its client data. A list is available by clicking on the arrow to the right of the Parameter Type label in the Event Handler Editor.
Additional user-defined types can be declared in the Event Handler Editor by entering the new type name in the Parameter Type field. Builder Xcessory prompts you to confirm a new user-defined type.
The Parameter Type field is grayed out if the event handler specified in the Handler Name field is referenced by a widget or style resource in your interface. The procedure's parameter type cannot be changed, in the Event Handler Editor, unless all references to the handler are removed from the interface.
When Builder Xcessory encounters a parameter in the Event Handler Editor, it searches for a match in the following order:
If no match is found, Builder Xcessory prompts you to declare the parameter as an identifier.
The Parameter field accepts the following values as client data values to pass to the callback procedure.:
The type of the value must correspond to the type listed in the Parameter Type field. A list of parameters is available by clicking on the arrow to the right of the Parameter label in the Event Handler Editor.
If the text entered into the Parameter field is not a constant, identifier, or actual value, then Builder Xcessory prompts you to declare the value as an identifier of the appropriate type.
You can use expressions to specify Integer values in the Resource Editor, the Style Editor, and the Integer Editor. Expression grammar in Builder Xcessory is as follows:
Expressions are evaluated from left to right. Standard order of precedence is enforced for binary operator expressions. The following conditions apply to expressions:
· When an expression is entered in a resource or Style Editor text field, the expression is evaluated, and the result is assigned to the widget resource. The label to the right of the text field in the resource list is changed to Expr.
· To use an expression in the Integer Editor, select the Expr toggle. The string entered in the extended editor will be evaluated to a numeric value and that value assigned where appropriate.
· The calculated value will be re-evaluated for expressions that use constants if any of the constant values change. Any references throughout the interface will use the new value.
· If a widget or style resource value depends on an expression which includes a constant that is Cut from the Constant Manager, then the widget's resource will change from Expr to Code and its value will be set to the previously evaluated integer value.
Builder Xcessory allows you to place constants, widget resources, procedures, and styles in different UIL files. This feature is particularly useful when developing internationalized applications, because you can save language-specific information into separate files.
Builder Xcessory uses the GLOBEtrotter Software Inc. Flexible License Manager (FLEXlm). When you receive Builder Xcessory, contact ICS to obtain your activation key. Based on information about your server configuration, the activation key allows you to obtain a license to run Builder Xcessory. You can run the Builder Xcessory in demo mode without a license, but you must have a license to save a session's work by writing out UIL files.
Refer to User Commands for man pages related to the license manager.
If another copy of the License Manager is already installed on your system, determine which of the following cases apply to you and proceed accordingly:
· In all cases, if license
. dat
or an equivalent file already exists, when requesting an activation key please provide us with the hostid
(s) used in that file, even if they are different from the ones you get using lmhostid
.
· If your existing copy of lmgrd
is version 3.0 or later, proceed with the installation according to the BX PRO 5.0 Installation Notes .
· If your version of lmgrd
is earlier than 3.0, before starting the installation script, move the old copy of lmgrd
out of/etc
or the directory in which you intend to place the license manager. Proceed with the installation according to the BX PRO 5.0 Installation Notes .
Allows you to select from a list of fonts and font families, specifying style, size, slant, and weight. A window displaying sample text is automatically updated to reflect your selections. The list of fonts is generated by the Builder Xcessory from the X11 fonts available on the display on which the Builder Xcessory is running. You cannot use the Font List Editor if you want to use a font other than those present on your development system, but you can type the font name directly into the Resource Editor.
The Font List Editor contains the following fields and buttons:
· Family combination box, enabling you to specify the font family.
· Size combination box, for specifying the font size in points.
· Bold and Italic toggle buttons, to control the weight and slant of the font.
· Options button, which toggles between showing and hiding the additional options described below.
· Font Tag list, enabling you to apply the tag specified in the Font Tag text field to the font currently selected in the list. The New and Delete buttons to the right of this field allow you to manipulate the list of fonts, while the up and down arrow buttons allow you to reorder the list.
The Font List Editor dynamically removes choices that are inappropriate. This enables the user to freely experiment with different combinations and ensures that the selected font exists on the machine from which the Font List Editor is running.
For example, if the Times Roman 14 point font is not available, and the user selects a point size of 14, then Times Roman will not be available in the family combination box. Likewise, if the user had chosen Times Roman from the family dialog box then a size of 14 would not be shown. To have all choices available choose a size and family of Any.
The Font List Editor provides tremendous flexibility in font choices. Click the Options button to display an additional panel of controls. This allows the user to gain access to non-X Logical Font Description (XLFD) fonts, control the resolutions of the fonts chosen, choose from fixed or proportional fonts only, remove the use of font scaling, view non-iso8859-1 fonts, and see the XLFD name of the font which the Font List Editor is constructing.
By choosing the Other Fonts toggle from the option panel, the family and size lists, as well as the bold and italic toggles, are replaced with a list of all non-XLFD fonts available on your system. This feature allows users to select non-XLFD fonts with the Font List Editor. The text field of the combination box may be edited by the user and any string entered is interpreted as a font name.
The Font List Editor finds which of the two standard resolutions (in dots per inch--dpi) the current display is closest to and uses that as its default. To allow a wider range of choices, a user may choose to access fonts of a different resolution, or both 75 and 100 dpi resolutions.
Some applications, such as terminal emulators, require a fixed-width font, although proportional fonts often look better. The Font List Editor allows users to limit the font choices to fixed-width or proportional, or to allow both.
The font scaling technology available in X11R5 uses bitmap scaling which often results in ugly fonts. To remove the scaled fonts from the list of choices, unset the Use Font Scaling toggle. You can set this value as a resource.
Advanced users may desire to know which font the Font List Editor is constructing for them. By setting the Show Font Name toggle the XLFD name is shown to the user at the bottom of the Font List Editor as it is being constructed. Builder Xcessory uses wildcards when constructing a font name.
The Form Editor provides a graphical method of accessing the constraint resources of any child of a form widget. The editor is created with the form and exists as a transparent interface to the widget. When you place widgets as children of a form, the child widget's topAttachment, rightAttachment, bottomAttachment, and leftAttachment resources are represented by attachment icons on the widget's top, right, bottom, and left edges, respectively. For example, in the following figure, the right push button has the following attachments:
· topAttachment = XmATTACH_FORM
· rightAttachment = XmATTACH_NONE
· bottomAttachment = XmATTACH_NONE
· leftAttachment = XmATTACH_WIDGET
Use the Form Editor to edit the child widget's attachment resources according to the following methods:
· Press MB3 on an attachment icon. A list of the possible values for that resource (for example, the values XmATTACH_POSITION and XmATTACH_OPPOSITE_FORM) is displayed. The toggle button for the current value is set, those for the other values are unset. Move the cursor over the desired value and release the mouse button. The attachment changes accordingly.
· Hold down Ctrl and press MB3 on an attachment icon. The current settings are displayed. Moving the cursor while holding Ctrl down allows you to change the offset or attach position.
· Press the MB1 on an attachment and drag the cursor to the desired attachment. To attach to a widget, drag to the desired edge of the widget; to attach to the form, drag towards the edge of the form. Release the mouse button. The attachment changes accordingly.
· To set an attachment to XmATTACH_POSITION, drag MB1 from the attachment icon onto the widget itself.
· To modify an attachment's offset/position information, press Ctrl+MB3 on the attachment icon, drag to the desired location, and release Ctrl and MB3.
In the Form Editor, the Builder Xcessory uses the following symbols to represent the various form attachment types:
FLEX lm uses different machine identifications for different machine architectures. For example, all Sun Microsystems, Inc. machines have a unique hostid, but all DEC machines do not. The ethernet address is used on some machine architectures as the "Host ID". An ethernet address is a 6-byte quantity, with each byte specified as two hexadecimal digits. Specify all 12 hex digits when using an ethernet address as a hostid. For example, if the ethernet address is 8:0:20:0:5:ac, specify "0800200005AC" as the hostid.
The program lmhostid will print the exact hostid that FLEX lm expects to use on any given machine. The following table lists alternate methods to obtain the required hostid for each machine architecture.
|
|||
32-bit hostid 2 |
|||
"id module" 3 |
read ID typed on module, remove `A', and convert remainder to hex. |
||
uname -x (returns SCO00354), then remove any non hex proceeding letters from the serial number |
|||
1. The "arp hostname" (substitute the name of the desired host) command must be issued on another machine on the network, not on the target machine. Alternately, the ethernet address can be read at boot time on the machine console.
2. Default for FLEX lm v3.0 and above only. See lmhostid (1) .
Allows you to define, view, and manipulate identifiers available in your interface. Select Identifiers from the Browser Managers menu to display the Identifier Manager:
The Identifier Manager allows you to create and edit the list of identifiers associated with a given interface. You can use these identifiers as follows:
· Parameters in callbacks accessible through the Callback Editor
· Parameters in the creation routine
· Variables which are defined at run-time
When you specify a new identifier in the Identifier Manager, Callback Editor, or Creation Routine dialog, Builder Xcessory adds the new identifier to the Identifier Manager.
Select File from the Identifier Manager menu bar (with the mouse or with a mnemonic) to display the Identifier Manager File menu:
Select Edit from the Identifier Manager menu bar, with the mouse or with a mnemonic, to display the Identifier Manager Edit menu:
Select Edit Identifier from the Identifier Manager Edit menu to display the Identifier Editor:
Specify whether the Identifier Type is Predefined or User Defined using the toggle buttons to the right of the Type label.
The Output File Option Menu allows you to specify the file to which the identifier will be written when Builder Xcessory generates UIL. See File Placement for more detailed information.
Click the arrow button to the right of the Type text field to view all types which are either Predefined or User Defined (depending on the toggle setting).
The following table lists Predefined types:
The equivalent C data types are listed in the Type Manager.
The User-defined types are all types which you have specified in the Type Manager, Procedure Manager, Callback Editor, or Creation Routine dialog.
Identifiers of type Undeclared or of any user-defined type may be used for resources that have either a type of XtPointer or no obvious type (for example, XmNcolormap or XmNscreen).
You can enter an identifier name of the appropriate type in a resource's text field, or choose one from the Ident pop-up list on the resource placement options menu, in the Resource Editor. See Resource Editor for more detailed information on the Resource Editor.
The identifier name is output as the resource value in the Builder Xcessory's generated code. You are responsible for assigning a valid value to the identifier elsewhere in your application code before your application attempts to evaluate the identifier at run-time.
When an identifier is referenced in the Builder Xcessory, you cannot cut the identifier from the Identifier Manager.
You can use an identifier as part of a style definition by entering the identifier name in the appropriate text field on the Style Editor. The identifier will remain un-evaluated. No value will be assigned to the widget resources affected by the style within the Builder Xcessory, but output code will reflect the correct value. See Styles for more detailed information.
You can select an identifier from any of the Builder Xcessory's extended editors. Selecting the Identifier radio button displays a combination box which contains the names of all identifiers of the appropriate type. Refer to Extended Editors for more detailed information about extended editors.
This example describes how to apply an identifier to the value resource of a text widget instance in your interface.
To create the identifier, perform the following steps:
1. Select Identifiers from the Browser Managers menu.
2. Select Create Identifier from the Identifier Manager Edit menu.
3. double-click on the new identifier to bring up the Identifier Editor.
4. In the Identifier Editor, change the name of the identifier to "my_value" (without quotation marks).
5. Change the type of the identifier to the predefined type Compound String.
6. Click the Apply button on the Identifier Editor to update the identifier. Notice that the changes are displayed in the Identifier Manager.
Set the value resource of this widget to the identifier in one of the following ways:
· Click on the resource placement options menu to the right of the value resource text field, and select my_value.
· Use the following procedure:
1. Click the (...) button to the right of the value resource to display the Compound String Editor.
2. Click the Ident toggle to the right of Resource Placement at the bottom of the Compound String Editor. This updates the dialog to contain a text field and an arrow button.
3. Click the arrow button to the right of the Identifier Name text field to view all existing identifiers. Select my_value and click the Apply button at the bottom of this dialog.
· Enter my_value into the value resource text field on the Resource Editor and click OK.
These methods all assign the identifier name to the text widget's value resource in the code generated by the Builder Xcessory.
Builder Xcessory identifiers are used for different purposes, depending on your target language.
In C, use identifiers for the following:
· Parameters specified for callbacks and creation routines.
· Runtime values for resources.
In UIL, use identifiers for the following:
· To bind a UIL name to a value at run-time, rather than specifying the value in the code.
Legal characters include alphanumeric characters, periods, parentheses, square brackets, ampersands, asterisks, underscores, and dollar signs: ".", "(", ")", "[", "]", "&", "*", "_", "$". The characters "->" are also legal, when used together to construct an arrow. The wide variety of characters allows you to declare identifiers such as foo[4], &foo[1], *foo[1], bar(), foo::bar, structure->field, my_ident, and my$ident.
Refer to the BX PRO 5.0 Installation Notes for a detailed description of the license manager installation script.
When you run the setup
script, the Builder Xcessory automatically starts the license manager installation script. To start the license manager script manually, enter the following on the command line:
The license manager installation script prompts you for the following information:
· Host name, host id, and TCP/IP port number of each machine that will act as a license server
By default, license
. dat
is installed in the following local directory:
However, the license.dat
text file must be accessible to the Builder Xcessory license daemons, and must be available on every system that will run the Builder Xcessory, or act as a license server . We recommend that you NFS mount the directory in /usr/local/flexlm/licenses
, which will then be accessible from any machine on your network.
If necessary, you may NFS mount the directory on another path, and establish a symbolic link back to/usr/local/flexlm/licenses
by entering the following on the command line:
If you NFS mount the directory on another path, and don't want to establish a symbolic link, use the -c
flag for lmgrd
and the LM_LICENSE_FILE
environment variable.
license
. dat
into the local directory of every machine because this makes updating the file difficult. However, if you choose to copy the file into the local directory and want to use a directory other than /usr/local/flexlm/licenses
, you must establish a symbolic link to /usr/local/flexlm/
licenses
or use the -c
flag for lmgrd
and the LM_LICENSE_FILE
environment variable, as shown above.
For additional information, see license.dat (5) .
The installation script uses your responses to the installation prompts and generates the license
. dat
text file. We recommend that you review this file to verify the information. The file is divided into the following three types of code:
Important: If you add, delete, or change a host id, you must contact ICS with the updated information to get a new activation key.
FEATURE
, the feature name (for example, Builder Xcessory), the vendor daemon ( ICSBX
), the version number, the expiration date, the number of licenses that may be run simultaneously, the twenty character activation key, a string describing the feature, and a string which reads "DEMO
" or null
.Warning: Editing the information in the feature lines invalidates your activation key.
Java Awt 1 objects are displayed on the Palette when you select Java as the current language. Palette Java objects are grouped in the following folders:
Note: Only Java AWT objects are available on the Palette when you select Java as the current language.
In some cases, non-visual objects are required to set resources. The following objects are not on the Palette, but are created when Builder Xcessory generates code:
These objects supply additional resources in the Resource Editor for the associated object.
The following sections provide descriptions of each Java object on the Palette, in alphabetical order. Refer to your Java AWT documentation for more detailed information.
The license file contains all site-specific information required by FLEX lm . This information includes:
· Vendor names and paths to vendor executables
The license file must be accessible to every machine that runs a FLEX lm -licensed application, and each machine designated as a license server. Before you can use the application you must start the license manager daemon ( lmgrd
) using the following syntax:
-c license_file_path Full pathname to the license file. Only use this option if the license file is not installed in the default location " /usr/local/flexlm/licenses/license.dat ". See Specifying Location of the License File for information about using alternate locations.
connect_timeout Timeout, in seconds, for "connect" calls to other daemons if operating in multi-server mode.
License File Format describes the format of the license file. The section Anatomy of a License File includes sample license files.
If your software vendor recommends a specific location for your license file, or if the default is not practical for you, use one of the following two methods to put the license file in another location:
· Set the path when you start lmgrd
· Set the path with an environment variable
When running the application on multiple nodes, you have three options for making your license file available on all the machines:
· Place the license file in a partition which is available (via NFS " ) to all nodes in the network that need the license file.
· Copy the license file to all of the nodes where it is needed.
· Read the license file data from lmgrd
, by specifying LM_LICENSE_FILE
as " port@host ", where host is the server hostname and port is the port number from the license file.
Since the vendor daemon keeps track of license usage, and since the license file contains encrypted data to protect it against modification, you may move and copy the license file as much as you want.
lmgrd
and the vendor daemons) on each server node. If you do not do this, you lose all the advantages of having redundant servers, since the node holding these files becomes a single point of failure.
Before selecting an option you must install lmgrd
(the license manager daemon) and the vendor daemon. Use the /etcdirectory a reasonable location, since the daemons will probably be used at boot time.
To start the license manager daemon ( lmgrd
) become root and execute a command similar to the following.
To start the lmgrd daemon automatically each time you reboot the license server, add a line similar to the following to either /etc/rc.boot,
/etc/rc.local, or the appropriate startup file:
daemon_location
Full pathname to the lmgrd executable.
license_file_path
Full pathname to the license file
log_pathname
Full pathname to the license log file.
You must reboot your license server to start the daemon.
FLEX lm supports dozens of platforms. Consult your operating system's man pages for specific information about modifying startup files.
Use the environment variable LM_LICENSE_FILE
to set the location of the license file. For example in the C shell:
In the Korn and Bourne shells:
license_file_path
Full pathname to the license file.
LM_LICENSE_FILE
environment variable for lmgrd
. See Combining License Files for more information about LM_LICENSE_FILE
.
The format of the license file is a SERVER line (or lines), followed by one or more DAEMON lines, followed by one or more FEATURE lines.
You can modify four data items in the license file:
· Node names on the SERVER line(s)
· Port numbers on SERVER line(s)
· Pathnames on the DAEMON line(s)
· Options file pathnames on DAEMON line(s)
In the following sections, options modifiable by the system administrator are underlined.
The SERVER line specifies the node name and hostid of the license server, and the port number of the license manager daemon ( lmgrd
). Normally a license file has one SERVER line. More than one SERVER line means that you are using redundant servers. For more information about redundant servers, see Selecting Server Nodes . The format of theSERVER line is:
nodename
String returned by the Unix hostname or on some systems, name -n
command.
id
String returned by the lmhostid command.
port-number
TCP port number to use (optional, but If not specified, then the FLEX lm TCP service must be present in the network services database.)
The DAEMON line specifies the daemon name and path. The format of the DAEMON line is:
daemon-name
Name of the vendor daemon used to serve some feature(s) in the file.
path
Pathname to the executable for this daemon.
options
Full pathname of the end-user specified options file for this daemon. (See Options File ) FLEX lm does not require an options file.
The FEATURE line specifies the name of the feature to be licensed. A feature can be the name of a program, a program module, or option. Any amount of white space of any type (that is, tabs or spaces) can separate the components of a line. The FEATURE line is as follows:
name Name given to the feature by the vendor.
daemon Name of the vendor daemon; also found in the DAEMON line. The specified daemon serves this feature.
version Version of this feature that is supported by this license.
expdate Expiration date, for example, 7-may-1993 (if the year is 0, then the license does not expire).
nlic Number of concurrent licenses for this feature. If the number of users is set to 0, the licenses for this feature are uncounted and no lmgrd
is required.
code Encrypted password for this FEATURE line. The start date is encoded into the code; thus identical codes created with different start dates will be different.
"vendor_string" Vendor-defined string, enclosed in double quotes. This string can contain any 64 characters except a quote. (White space is ignored.)
hostid String returned by lmhostid . Used only if the feature is to be bound to a particular host, whether its use is counted or not. (Numeric hostids are case insensitive). See Hostids for FLEXlm-Supported Machines for more information.
The FEATURESET line is used to prevent FEATURE lines from being added to or removed from the license file.
The format of the FEATURESET line is as follows:
daemon-name Name of the vendor daemon used to serve some feature(s) in the file.
code Encryption code for this FEATURESET line. This code encrypts the codes of all features this daemon supports, so no FEATURE lines can be removed, added to, or rearranged in this license file.
The following example is a license file for single vendor with two features.
SERVER excellent_server 17007ea8 1700
DAEMON xyzd /etc/xyzd
FEATURE xyz_app1 xyzd 1.000 01-jan-1993 10 \ 1EF890030EABF324 ""
FEATURE xyz_app2 xyzd 1.000 01-jan-1993 10 \ 0784561FE98BA073 ""
This license file allows the license server excellent_server with the hostid 17007ea8 to serve 10 floating licenses forxyz_app1 and xyz_app2 to any user on the network.
License files are created by the software vendor. License files can specify any of the following types of software access:
· Concurrent usage on a limited set of hosts
· Mixed node-locked and concurrent usage
Concurrent usage means anyone on the network can use the licensed software, up to the limit specified in the license file. (Also referred to as f loating licensing or n etwork licensing .) Concurrent usage licenses do not have hostids on the individual FEATURE lines. This configuration requires an lmgrd
daemon because it is going to count the concurrent usage of the licenses.
An example of a license file that provides concurrent usage is:
FEATURE f1 xyzd 1.00 1-jan-95 2 code1 ""
FEATURE f2 xyzd 1.00 1-jan-95 6 code2 ""
FEATURE f3 xyzd 1.00 1-jan-95 1 code3 ""
This license file allows two copies of feature "f1", six copies of feature "f2", and one copy of feature "f3" to be run anywhere on the network that can access the license server "lulu".
Node-locking means the licensed software can only be used on one node. A node-locked license has a hostid on any FEATURE line that is node-locked to a particular host. There are two types of Node-locked licenses; uncounted and counted.
If the number of users is set to 0, then the licenses are uncounted and unlimited use is permitted on the specified node. This configuration does not require an lmgrd
daemon because it is not going to count the concurrent usage of the features.
The following license file allows unlimited usage of feature "f1" on the nodes with host IDs of 12001234 and 1700ab12:
FEATURE f1 xyzd 1.000 1-jan-95 0 code1 "" 12001234
FEATURE f1 xyzd 1.000 1-jan-95 0 code2 "" 1700ab12
If these are the only FEATURE lines in this license file, an lmgrd
daemon is no necessary and you should not start one.
The following license file allows three copies of feature "f1" to be run, but only on the node with host ID 1300ab43. (In this case, run the daemons on the same node that runs the software.)
Another solution is a combination of the node-locked solution in Node-locking and the concurrent option described inConcurrent (floating) usage . This provides a fixed number of floating licenses for use on a set of servers only you define when you request your license.
In this configuration, the license file has one node-locked FEATURE line for each node that is to be able to run the software. Generally, the same number of licenses is specified on each FEATURE line. This configuration requires anlmgrd
daemon because it counts the concurrent usage.
For example, the following license file allows a total of two simultaneous licenses of a feature called, "f1" on any of the three nodes specified, with the daemons running on the license server "lulu":
FEATURE f1 xyzd 1.00 1-jan-93 2 code1 "" 17001234
You can mix uncounted node-locked and concurrent usage licenses in the same license file.
The following license file allows unlimited use of feature "f1" to be used on nodes 17001111 and 17002222, while allowing two other copies of feature "f1" to be run anywhere else on the network:
FEATURE f1 xyzd 1.00 1-jan-93 0 code1 "" 17001111
FEATURE f1 xyzd 1.00 1-jan-93 0 code2 "" 17002222
FEATURE f1 xyzd 1.00 1-jan-93 2 code3 ""
This configuration does require an lmgrd
daemon because it is going to count the concurrent usage of the two licenses on the third FEATURE line.
This appendix describes how to start and use the License Manager, and includes the following sections:
The following sections describe the workings of the license manager in detail.
The license manager uses a client-server model. Builder Xcessory requests a license from one of the license servers installed on the network. The license server may run on the same system as Builder Xcessory.
When Builder Xcessory starts running, it attempts to connect to one of the servers located in the license file (usually/usr/local/flexlm/licenses/license.dat
) and requests authorization to start. If it is unable to find a system with the license server ( lmgrd
) running (including the local system if configured as a server), then Builder Xcessory reports an error and gives you the option of starting in demo mode.
In the following discussions, there are three server systems ( boston
, chicago
, and newyork
) and one client system ( houston
). The servers are running the license manager ( lmgrd
) and the vendor daemon ICSBX, the clients are running Builder Xcessory. Typically, servers would also act as clients and run Builder Xcessory, but for the sake of the discussion, assume that they are separate systems.
The following sections describe files that must be on the client and server systems for the license manager to operate properly. Other files that may be used with the license manager for debugging (described in the previous section) are not required to get it started.
The following files should be accessible to any system designated as a Builder Xcessory license server:
setup
, and should not be modified unless you fuller understand its contents.The following files should be accessible to any system that will run Builder Xcessory:
The license.dat
file for our example would contain the following contents:
The license
. dat
file contains the database of available servers (the SERVER lines) and licenses (the FEATURE lines). Every copy of the license.dat
file must be identical for each of the servers. Additionally, information is encrypted into the keys that reflect host ids, license information, and features. Editing the file manually most likely guarantees that the license manager will not grant a license.
The SERVER lines tell the names of each server that should be running the license manager daemons.
The DAEMON line tells the name and the location of the vendor daemon (the actual program which communicates with Builder Xcessory running on the client systems).
The FEATURE lines describe various licensed products, one of which is Builder Xcessory.
When the servers boot, the license manager daemon, lmgrd
, is started, typically from system boot scripts. The daemon looks for the license.dat
file, and then starts all the vendor daemons listed in the license file. It also begins talking to other server systems on the network that are specified in the license.dat
file.
When a user starts a copy of Builder Xcessory on a client system (in our example, houston) it reads its copy of thelicense.dat
file and finds a feature line that corresponds to Builder Xcessory and finds a server to connect to. Then it looks for a server running the vendor daemon to get a valid license. A license will be granted only if a majority of the servers listed are actually running lmgrd
and ICSBX
. In our example, two out of the three network servers must be running. If a server cannot be found or the maximum number of licenses are currently in use, the license manager does not grant a license and gives you the option of starting in DEMO mode.
Motif widgets are displayed on the Palette for all languages except Java and for all platforms. Initially, Motif widgets are grouped in the following folders:
The following sections provide descriptions of each Motif widget in alphabetical order (refer to your Motif documentation for more detailed information).
The XmArrowButton consists of a directional arrow surrounded by a border shadow. When the widget is selected, the shadow changes and the Arrow Button appears to be depressed. When the Arrow Button is unselected, the shadow changes and the Arrow Button appears to be released. Callbacks notify the application when an Arrow Button is activated.
The XmDrawingArea widget is an empty container easily adaptable to a variety of purposes. Does no drawing and defines no behavior except for invoking callbacks. Callbacks notify the application when graphics must be drawn through exposure and widget resize events and when the widget receives input from the keyboard or mouse.
The XmFileSelector widget allows the user to select files from a hierarchy of directories and to traverse directories, viewing the files in these directories, and selecting files. The widget contains: a directory mask that includes a filter label and input field used to specify the directory; a scrollable list of directories; a scrollable list of filenames; a text input field; and push buttons for control.
The XmForm widget is a container that exerts strong control over its children's geometry. Constraints are placed on children of the Form to define attachments for each of the child's four sides. These attachments determine the layout behavior of the children when the Form resizes.
· Use for complex layouts in which children need to be placed with respect to one another.
· You can change the Form resources that specify the constraints on the children and how the children should be resized when the size of the Form changes.
· Nesting Forms within forms can help manage setting constraints.
The XmFrame widget is a simple manager used to enclose a single work area in a border. The Frame widget uses the Manager class resources for border drawing and performs geometry management. The Frame widget's size always matches its child's size plus the margins defined for it.Frame may also control a second "title" child that can be used for labeling the contents of the work area.
The XmList widget allows the user to choose one or more items from a group of text choices. Items are selected from the list using both the mouse and the keyboard. The currently selected items are highlighted. Clicking on the selected item activates a callback which receives information about the selected item. Several convenience routines are available.
The XmMainWindow widget creates a main screen for an application that follows the Motif style guidelines.
Provides a Motif Style Guide compliant layout for the primary window of an application. This layout includes a Menu Bar, a Command window, a work region, a message window, and Scroll Bar widgets.
The XmMessageBox widget is a dialog class used for creating simple message dialogs. Convenience dialogs based on Message Box are provided for several common interaction tasks, which include giving information, asking questions, and reporting errors. A pixmap may be placed to the left of the message text to provide quick visual recognition of a familiar message.
The Template Dialog variant allows you to completely control the contents of the dialog (buttons, etc.) while maintaining compliance with the OSF/Motif Style Guide requirements on dialogs.
The XmPanedWindow widget allows the user to vertically resize various portions of the application interface.
Composite widget that lays out children in a vertically tiled format. The first child is inserted at the top of the Paned Window and each successive child is inserted below. The Paned Window grows to match the width of its widest child and all other children are forced to this width. The height of the Paned Window is equal to the sum of the heights of all its children, the spacing between them, and the size of the top and bottom margins.
· Use one or more Pulldown Menus as the children of a MenuBar.
· The children of the Pulldown Menus may be simple buttons, cascade menus, or label objects that display choices or actions for the user.
· Must be a child of Menu Bar.
· Builder Xcessory automatically creates a Pulldown Menu and cascade button.
The XmRowColumn widget is a general purpose manager capable of containing any widget type as a child. Generally does not require special knowledge of how its children function, and provides only support for several different layout styles. Can be configured as a Radio Box or one of four menu types, in which case, it expects only certain children. The four menu types are Menu Bar, Pulldown or Popup Menu Panes, and Option Menu.
The XmScrollBar widget allows the user to select a value within a range, such as a particular screen of text within a large file.
Allows the user to view an area that is too large to be displayed all at once. Scroll Bar widgets may be placed beside or within the widget that contains the data to be viewed. When the user interacts with the Scroll Bar, the area within the other widget scrolls.
The XmScrolledWindow widget allows the user to view a portion of a much larger area. XmScrolledWidget combines one or more Scroll Bar widgets and a viewing area to function as a visible window onto some other data display. The visible part of the window can be scrolled through the larger display by the use of Scroll Bar widgets. Scrolling can be automatic. The programmer may control scrolling by setting scrolling policy to user defined and using callbacks.
The XmSelectionBox widget is a general Dialog widget that allows the user to select one item from a list. A Selection Box includes a scrollable list, an editable text field for the selected item, labels for the list and text field, and three buttons for control. The user can select an item by scrolling through the list and selecting the desired item or by entering the item name directly into the text edit area. Selecting an item from the list causes that item to appear in the selection text edit area.
The XmText widget is a single-line and multiline text editor. It can be used for single-line string entry, data entry into a form (with verification procedures), and full-window editing. Text provides the application with a consistent editing system for textual data. Keyboard actions are defined for primary selection, and cutting, pasting, insertion, and deletion of text.
The XmTextField widget creates a single-line string entry area, and provides a single-line text entry field. It has many of the Text widget's resources with the exception of those relating to multiple line text editing. Callbacks notify the application of cursor movement and changes in the text or input focus.
Use to enter one or more lines of text, or multibyte characters when appropriate.
Type the desired text into the editor. As with all text fields in the Builder Xcessory, you can highlight text and hit the backspace or delete key to remove the text. If you highlight an area of text and begin typing, the marked text is deleted and replaced with the new text you enter.
Remember that you cannot enter a value for a resource on the Resource Editor as long as the editor for that resource is displayed. You must first Dismiss the editor.
This document uses the following notation conventions:
The syntax {BX}
refers to the directory into which the Builder Xcessory is installed. The default directory is the following:
Most index entries are in lowercase:
Entries capitalized in Builder Xcessory are capitalized in the index:
Because Builder Xcessory supports multiple programming languages, not all explanations or examples are applicable to all languages. The following icons indicate sections specific to particular languages:
The following two types of lists present procedures:
Objects are indicated as follows:
· Palette collection names are capitalized words with intercaps:
· Instance names are lowercase words with intercaps:
To indicate menus and menu options, the following format is sometimes used:
For example, Browser:File:Exit is the Exit selection from the File menu of the Browser window.
· Literals such as file names, directory paths, code and text as typed on the command line are printed in Courier font:
· Text preceded by a % denotes text to enter at the command line:
· Book titles, chapter names, and section names appear in italic:
Builder Xcessory Reference Manual
"Updating the Resource Editor" on page 136
· The main windows of the Builder Xcessory are capitalized as follows:
Depending on the current display mode, the Browser displays the object instance hierarchy of your interface or the class instance hierarchy of your interface. From the Browser, you can accomplish the following operations:
Browser operations
· Select a class, class instance, or widget by clicking on its name in the Browser.
· Edit the structure of your interface by using drag and drop functions, the Browser Toolbar, and the Browser menus.
· Define new classes and display their contents.
· Generate C, C++, C/UIL, Java, and ViewKit, and customize the names and contents of these files.
· Customize Builder Xcessory's integration with CodeCenter, ObjectCenter, Purify, XRunner, and RCS, SCCS, or your own source code control tools.
· Customize the generated code, including the contents of your makefiles.
· Access Builder Xcessory's online Help files.
The options file allows the system administrator to control various operating parameters of FLEX lm . Specifically the system administrator can:
· Allow the use of features based on user, hostname, or display name.
· Deny the use of features based on user, hostname, or display name.
· Reserve licenses based on user, hostname, or display name.
· Control the amount of information logged about license usage.
Options files allow you, as the system administrator, to be as secure or open with licenses as you like.
1. Use the appropriate options listed in Customizing the Options File to create the options file using any text editor. You can put the options file anywhere; however, we recommend that the option file for vendor xyz be placed in/usr/local/flexlm/options/xyz.opt .
2. Add the pathname to the options file in the license file. The fourth field on the DAEMON line for the application's vendor daemon. For example,
The following sections provide an overview of the options file syntax. See Understanding Options Files for examples and additional information.
Each line of the file controls one option. The following table lists the options:
You can include comments in your options file by starting each comment line with a pound sign "#". Everything in an options file is case sensitive. Be sure that user names and feature names, for example, are entered correctly.
Includes a user, host, display, or group of users in the list of users allowed to use the feature. Anyone not in an INCLUDE statement will not be allowed to use that feature.
featurename Name of the feature being affected.
type One of GROUP, USER, HOST, DISPLAY.
name Name of the user or group to include.
To include user "bob" in the list of users able to use feature f1:
Includes a user, host, display, or group of users in the list of users allowed to use all features served by this vendor daemon. Anyone not in an INCLUDEALL statement will not be allowed to use that feature.
type One of GROUP, USER, HOST, DISPLAY.
name Name of the user or group to include.
To allow the user "sallie" to use all features served by this vendor daemon:
Excludes a user, host, display, or group of users in the list of users allowed to use the feature. Excluded users will not be allowed to use the feature.
featurename Name of the feature being affected.
type One of GROUP, USER, HOST, DISPLAY.
name Name of the user or group to include.
To exclude the user "hank" from the list of users able to use feature f1:
Excludes a user, host, display, or group of users in the list of users allowed to use all features served by this vendor daemon.
type One of GROUP, USER, HOST, DISPLAY.
name Name of the user or group to include.
To exclude any user on the server "chaos" from using all features served by this vendor daemon:
RESERVE
numlic featurename type name
Reserves licenses for a specific user.
numlic Number of licenses to reserve.
featurename Name of feature to reserve.
type Type of user to reserve for, one of GROUP, USER, HOST, DISPLAY.
name Name of the user or group to reserve licenses for.
To reserve one license of feature f1 for user "mel":
Defines a group of users for use in INCLUDE, INCLUDEALL, EXCLUDE, EXCLUDEALL, and RESERVE option lines.
groupname Name of the group being defined.
usernamelist List of user names in that group.
To define the group Hackers consisting of bob, howard, and james:
Turns off logging of specific events from lmgrd
.
what What to turn off; one of IN, OUT, DENIED, or QUEUED.
To turn off logging of checkins from lmgrd
:
To turn off logging of checkouts and queued requests two separate NOLOG lines are required:
Set the time after which an inactive license is reclaimed by the vendor daemon.
featurename Name of the feature.
seconds Number of seconds after which inactive license is reclaimed.
To set the timeout for feature f1 to one hour (3600 seconds):
TIMEOUT removes a feature from a user if he has been "idle" for a period longer than the specified time period, and someone else wants the license. The daemon declares a process idle when it has not heard from the process (the client sends heartbeats). The application must explicitly declare itself idle for this to work, or it must be stopped (^Z).
The application vendor can also disable the timeout feature, in which case the TIMEOUT option has no effect. The vendor can set a minimum value for the timeout. If you specify a timeout value smaller than the minimum, the minimum is used. The default minimum value is 9000 seconds (15 minutes).
If you do not specify a timeout value in your options file, then there will be no timeout for that feature.
The following information gives an overview of the syntax of a complete options file and some samples intended to illustrate ways to effectively control access to your licenses.
lmgrd
uses the options fileWhen the vendor daemon is started by lmgrd
, it is passed the location of the options file. The location is specified inlicense file for that product, in the DAEMON line. If no file is listed the daemon will not use any options file.
Before you can use options to secure licenses effectively you must understand the options file precedence. INCLUDE and EXCLUDE statements can be combined in the same options file and control access to the same features. When doing so, keep in mind the following:
· If there is only an EXCLUDE list, everyone who is not on the list will be allowed to use the feature.
· If there is only an INCLUDE list, only those users on the list will be allowed to use the feature.
· If neither list exists, then everyone is allowed to use the feature.
· The EXCLUDE list is checked before the INCLUDE list; so someone who is on both lists will not be allowed to use the feature.
Once you create an INCLUDE or EXCLUDE list everyone else is implicitly "outside" the group. This feature allows you, as an administrator, the ability to secure licenses without having to explicitly list each user that you wish to allow or deny access to. In other words there are two approaches; you can either:
· Give most users access and list only the exceptions or
· Severely limit access and list only the those users with access privileges.
RESERVE 3 compile HOST mainline
· Reserve one copy of the feature "compile" for the user "robert."
· Reserve three copies for anyone on a computer with the hostname "mainline."
· Prevent the user "lori" from using the "compile" feature on any node on the network.
· Cause QUEUED messages to be omitted from the log file.
The sum total of the licenses reserved must be less than or equal to the number of licenses specified in the FEATURE line. In the example above, there must be a minimum of four licenses on the "compile" FEATURE line.
If this data were in file /usr/local/flexlm/options/local.options
you would modify the license file DAEMON line as follows:
Each INCLUDE, INCLUDEALL, EXCLUDE, EXCLUDEALL, and RESERVE line must have a single user name (or group) listed. To affect more than one user name create a GROUP. For example to exclude "bob," "howard," and "james" from using the feature called "toothbrush" we could create the following options file:
EXCLUDE toothbrush USER howard
There is an easier way though. Create a GROUP and exclude the list of users from using the feature. Like the previous example, the following options file would exclude "bob", "howard" and "james" from using the feature called "toothbrush":
Now when you want to allow or deny access to any feature to that group, you have an "alias" list to make it simple.
The GROUP function only works for a list of user names. To allow, deny or reserve licenses for multiple hosts or displays you must use multiple option lines. For example, to exclude all users logged in on the hosts "fred" and "barney" from using a feature called "f1" add these lines to your options file:
· Prevent the users "picasso," "mondrian," and "klee" from using the feature "spell" on any machine on the network.
· Prevent the user "bob" from using the feature "spell" on any machine on the network.
· Prevent any user logged into the host "bigbrush" from using the feature "spell"
· Allow any other user, as long as they are not on "bigbrush", and they are not in "painters" and they are not "bob" to use feature "spell" (By implication.)
Note that "bob" could have been added to the group painters. However, "painters" might be used for some other purpose in the future so the system administrator chose to handle "bob" as a special case here. In this case, the two EXCLUDE statements concatenate to create a list of four users.
This options file allows the following:
· User "picasso" to use the feature "paint" on any machine on the network.
· User "mondrain" to use the feature "paint" on any machine on the network.
· Any user, as long as they are on the host "bigbrush", to use feature "paint"
· Deny access to the feature "paint" to anyone except "jenny", "bob" or anyone from the host "bigbrush" (By implication.)
The Options menu allows you to set the Resource Editor to automatically update when a new object is selected, as well as configure the order in which the resource lists are presented and specify how to generate code for all resource values.
Select Options from the Resource Editor menu bar to display the Options menu:
When set, updates the Resource Editor automatically each time you select a object. When Automatic Update is not set (the default), the resources are displayed only when you click the Update button.
Displays the Resource Editor resource list in alphabetical order. Use Alphabetical Order in conjunction with Type Order to display resources alphabetically by resource type. By default, Alphabetical Order is set.
Groups resources by resource type. For instance, createCallback, destroyCallback, focusCallback, helpCallback, mapCallback, and unmapCallback are grouped together. Use Type Order in conjunction with Alphabetical Order to display resources alphabetically within each type grouping.
Select Default Resource Placement from the Options menu of the Resource Editor to display the Default Resource Type dialog:
The default controls the resource setting which a resource of the appropriate type takes when modified. For example, change the Color resource setting by clicking the App toggle button. Now change the value of a color resource for some interface object (such as background for a bulletin board widget). The modified value defaults to App, rather than Code.
This section explains the basics of floating (network) licensing, and gives a quick overview of the components of FLEX lm . It explains where system administrators have control and where end users have control. The section Getting Started Checklist describes how to start managing FLEX lm for both system administrators and end-users.
FLEX lm is a network license manager used by many software developers to control the use of their software products. FLEX lm allows software licenses to be available (float) anywhere on a network, instead of being tied to specific machines. Floating licensing benefits both users and system administrators. Users can make more efficient use of fewer licenses by sharing them on the network. System administrators can control who uses the licensed application, and the node(s) where the licenses will be available.
lmgrd
)The license manager daemon ( lmgrd
) handles the initial contact with the client application programs, and passes the connection on to the vendor daemon. It also starts and restarts the vendor daemons. FLEX lm permits multiple redundant license manager daemons on different server nodes, allowing you to make your license available only if any two out of three server nodes is running. The lmgrd eliminates the necessity of splitting your licenses among multiple servers or of relying on any one machine.
In FLEX lm , licenses are handled by running processes. There is one process for each vendor who has a FLEX lm -licensed product on the network. This process is called the vendor daemon . The vendor daemon keeps track of how many licenses are checked out, and who has them. If the vendor daemon terminates for any reason, all users lose their licenses. Users normally regain their license when lmgrd
restarts the vendor daemon.
Client programs communicate with the vendor daemon through TCP/IP or UDP/IP sockets. The client (where the application runs) and the daemon processes (the license server) can run on separate nodes on your network. Also, the traffic between the client and the license manager daemon is machine-independent, allowing for heterogeneous networks. This simply means the license server and the workstation running an application can be either different hardware platforms or different operating systems.
Licensing data is stored in a text file called the license file. The license file is created by the system administrator. It contains information about the server nodes and vendor daemons, and at least one line of data (called a FEATURE line) for each licensed feature. Each FEATURE line contains an encryption code based on the data in that line, the hostids specified in the SERVER lines, and other vendor-specific data.
In some environments, the licensing information for several vendors may be combined into a single license file. The default location is:
Users can override this location by setting the environment variable LM_LICENSE_FILE
to point elsewhere, or by following instructions supplied with the licensed application. If your site has software from multiple vendors with incompatible license files (due to different sets of servers), you can keep the data in separate files and set theLM_LICENSE_FILE
variable to reference multiple files. For details, refer to License File .
The application program using FLEX lm is linked with the program module (called the FLEX lm client library) that provides the communication with the license manager daemon. During execution, the application program communicates with the vendor daemon to request a license.
When you run a FLEX lm -licensed application the following occurs:
1. The license module in the client application finds the license file, which includes the host name of the license server and port number of the license manager daemon, lmgrd
.
2. The client establishes a connection with the license manager daemon ( lmgrd
) and tells it what vendor daemon it needs to talk to.
3. If the license server is a redundant server configuration, the lmgrd
determines which machine and port correspond to the master vendor daemon and sends that information back to the client.
4. The client establishes a connection with the specified vendor daemon and sends its request for a license.
5. The vendor daemon checks in its memory to see if any licenses are available and sends a grant or denial back to the client.
6. The license module in the application grants or denies use of the feature, as appropriate.
Most FLEXlm parameters can be configured by the system administrator. The following parameters can be set:
· Location of the license file
· TCP/IP port number used by the license manager process, lmgrd
Additionally, the system administrator can reserve licenses for specific users, nodes, or groups, and control other license-related options. See section Options File for more detailed information about changing parameters.
This section provides a quick overview of how to set up and use licensing for FLEX lm -licensed products. By scanning the list, the system administrator should be able to quickly find the areas of interest. Cross-references point to more details in other parts of this manual.
This section describes how to set up licensing on your system or network. If you are an end-user of the application, and you are not involved in the installation process, go to Notes for end users .
Generally, however, installing FLEX lm licensing requires the following steps:
1. Select your license server nodes and get their hostids.
2. Give the hostids to your software vendor and get a license file (or the data to enter in the license file) in return.
3. Determine how the new license file relates to any other license files that may already be on your system, and install it appropriately.
4. Determine if an options file is required or desired, and if so set it up.
5. Determine where to install the FLEX lm utility programs such as lmgrd
, lmstat , and lmdown and install them.
6. Start lmgrd
(the license daemon) manually; optionally, you may also want to set it up to start automatically at boot time.
The following sections briefly describe each step, including cross-references to more detailed sections.
Before running any FLEX lm -licensed program using floating licenses, you will need to set up your license server node (or nodes). You must select which node or nodes to run your license servers on, and provide the hostid of those machines to your software vendor. For pointers on selecting your server machine, see Selecting Server Nodes .
Obtain the hostid of the server machine by running FLEXlm's lmhostid utility on that machine. If you don't havelmhostid , you can obtain the hostid of your machine by using the appropriate command as described in Hostids for FLEXlm-Supported Machines .
After giving the hostid of your server machines to your software vendor, the vendor will send you a license file that enables their application software.
lmgrd
and license filesOnce you receive a license file from your vendor, you must install it on your system and startup the license manager daemon, lmgrd
.
· If you have multiple FLEX lm -licensed products, avoid licensing conflicts. For more detailed information, see Combining License Files .
· Unless your software vendor selected a default location for your license file, you can use any location you wish. For more detailed information, see License File .
· Some vendors provide special scripts to start up the license daemon. If not, you can run the lmgrd
program directly. To start lmgrd
automatically at boot time, you must modify your system files. For more detailed information, see Specifying Location of the License File .
Globetrotter Software supplies administration tools to your software vendor. The vendor usually includes them with their product. The recommended location for the tools is /usr/local/bin , but you can install them in a different location (or not at all). See User Commands for more information.
The options file controls various options such as reservations and timeouts of licenses. Most users run without an options file, but you may decide you want to use some options. For example, many administrators use an option to limit the quantity and content of logged messages. To set up an options file, see Options File .
As a user of a FLEX lm -licensed application, you must know how to:
· Specify to an application which license file to use.
· Query the system to find out who is using a license.
The license file determines what features are available to a program. It also contains information telling the application how to connect to the license server.
For information about the standard way of specifying a license file for an application, see License File .
To find out who is using a license run lmstat , as described in User Commands .
The Palette is divided into several groups that consist of objects grouped by related functionality. For a detailed description of each object on the Palette, refer to Palette Objects .
Manipulating groups and icons
You can add, delete, and rearrange groups, and move Palette collections between groups. You can drag an icon from one group to another, or you can press MB3 over an icon and Edit the icon properties group, name, and pixmap.
Nesting groups
You can nest groups by creating a new group as part of another group. For example, create a "ViewKit' group and move all ViewKit-related groups into the "ViewKit" group. You can then hide all the ViewKit items by closing just the single group.
Hiding/displaying groups
To hide a group, click on the folder icon to the left of the group name. Click again on the icon to restore the view of the group.
Creating a top-level group
To create a new top-level group, select New Group from the Palette Edit menu.
Creating subordinate groups
To create a new group subordinate to an existing group, select New Group from the Palette MB3 Quick Access menu.
Groups common to all Palettes
In addition to the platform- and language-dependent groups, the Palette displays the following groups:
· Project Classes
· Private Classes
${HOME}/.builderXcessory/classes
directory· Public Classes
{BX}/XCESSORY /classes
directory.Motif Groups
For C, C++, and UIL, the Motif and platform-specific Palette objects are grouped initially as follows:
· Primitives
· Containers
· Menus
· Dialogs
See Motif Xm Widgets for more detailed information about the Motif widgets.
ViewKit ObjectPak Groups
The ViewKit ObjectPak Classes are added to the Palette when you select ViewKit as the current language. Initially, ViewKit classes are grouped in the following folders:
· Dialogs
· Menus
· Components
See ViewKit ObjectPak Vk Classes for more detailed information about the ViewKit classes.
EnhancementPak Groups
Note: Start with EPak Widgets must be set on the Behavior tab of the User Preferences dialog to display the EnhancementPak icons. See Behavior toggle options for more detailed information.
For all languages except Java, the following EnhancementPak widget groups are added to the Palette:
· EPak Primitives
· EPak Containers
· EPak Graphs
See EnhancementPak Xi Widgets for more detailed information about the EnhancementPak widgets.
Java AWT Groups
Note: Only Java objects are available on the Palette when you select Java as the current language.
The following Java groups are displayed on the Palette when you select Java as the current language:
· Java AWT Primitives
· Java AWT Containers
· Java AWT Menus
See Java Awt Objects for more detailed information about the Java objects.
Reference Count
Styles, constants, identifiers, procedures, and types are associated with reference counts on their respective editors. The number of references contained in the Palette collections is reported (Palette = N) on the editor. Palette references are included in the overall reference count.
Maintaining reference counts when deleting collections
Cutting a collection does not affect the reference count. To decrement the reference counts of styles, constants, and so forth contained in a collection, you must delete the collection from the Palette.
Adding and Moving Palette Collections
You can drop a widget, class, or Browser instance name onto a Palette group to add the widget and all of its descendants to that group as a new collection.
Using drag and drop to add and move collections
Use the following methods to add or move collections:
· Dropping onto a Palette group's name adds the new collection to a closed group.
· Dragging a collection from one Palette group and dropping it onto another group moves the collection to the end of the group. Dropping the collection on an existing collection inserts the dragged collection in the group immediately before the collection onto which it was dropped.
Moving collections to offscreen groups
If you want to move a collection to a group which is currently offscreen, use one of the following methods:
· Resize the Palette window.
· Display the Palette as Labels Only.
· Hide the collections of the other Palette groups.
· Edit the collection and enter a new group in its Group field.
· Use the Cut/Paste items from the Palette MB3 Quick Access Menu.
· Use multiple Palettes and drag/drop to display all required groups.
Note: You can also move a Palette collection to a blank space within the same group.
Hiding and Displaying Palette Groups
To hide and display Palette groups, use the following methods:
Displaying
· Click MB1 on a group's closed folder to expand the Palette to display the collections in that group.
Hiding
· Click on a group's open folder to hide the collections of that group.
The Palette menu bar contains the following three options:
Select Palette from the Palette menu bar, either with the mouse or with a mnemonic, to display the following menu:
Creates a new Palette. You can display any number of Palettes simultaneously. Once you create a new Palette, you can use the new Palette's Catalog menu to load a catalog file, or you can cut and paste items and groups from other Palettes.
Allows you to display the Palette icons in tabbed or outline format. The default is Outline view. Click on Tabbed View to display the Palette Collections in tabbed format. Click on a tab to display the pixmap icons of a particular Palette group:
Displays only the name of each Palette widget, class, or collection. By default, user collections are assigned the unique names Collection000, Collection001, etc. in the order of their creation.
Displays only the pixmap icon for each Palette widget, class, or collection. User collections are assigned a default pixmap. Edit Palette collection pixmap names from the Edit Properties dialog by selecting Properties from the Catalog menu of the Palette.
Select Catalog from the Palette menu bar to display the Catalog menu:
Loads a catalog file into a Palette. If this item is labelled "Include" the selected catalog file is appended to the currently loaded file.
Displays the Save Catalog dialog box. Enter the directory and new filename into which you want to save the Palette catalog.
Select Edit from the Palette menu bar to display the Palette Edit menu:
Allows you to paste the object or group currently in the paste buffer. Pasting a group will nest it within the group where the cursor is positioned. Pasting an item will insert the item immediately before the item under the cursor or at the end of the group if the cursor is over the Group Label.
To invoke the MB3 Quick Access Menu, press MB3 while the mouse pointer is in the Palette window.
The MB3 menu enhances functions of the Catalog and Edit menu as follows:
Allows you to paste the object or group currently in the paste buffer. Pasting a group will nest it within the group where the cursor is positioned. Pasting an item will insert the item immediately before the item under the cursor or at the end of the group if the cursor is over the Group Label.
Displays the Edit Properties dialog box. Depending on the object or group you select, displays several editable text fields. In the following example, the Motif Primitives group is selected:
Shows the name that identifies the Palette group or Palette object, in this example motif_primitive (this field is not editable).
Shows the name of the Palette object or Palette group as displayed on the Palette, in this example, Motif Primitive. Click MB1 inside the Display Name text field and enter a new name for the Palette group.
Shows the conditions required for the Palette Group. Both the item and the group can optionally name conditions under which they should appear on the Palette.
The valid conditions for the Items name attributes of the system on which Builder Xcessory is running and what other software it is using. You can specify a value SystemAttribute(tag), where "tag" is one of the following values:
You can join multiple uses of SystemAttribute with "&&" (logical AND) and "||" (logical OR) and group them in parentheses.
The valid conditions for the Groups tag name similar attributes of the system on which Builder Xcessory is running, with additional possibilities of the form "tag operator string-value", where tag is one of the following values:
Test operating system BX is running on, using function uname(2V) |
|
Test operating system version (release), using function uname(2V) |
You can use the following operators;
The operators that test greater-than (>) or less-than (<) are appropriate only for tests of Version. You can join multiple uses of these expressions, along with uses of SystemAttribute, with the logical operators in this list. The catalog file should be in the {BX}/xcessory/package/
directory.
You can add your own Xt Intrinsics-based Motif 1.2.x/, C++ classes, or ViewKit components to Builder Xcessory. User-defined widgets and objects appear on the Palette, and you can access and manipulate user-defined widgets and objects as you would any other Palette collection.
Refer to Adding Widgets for more detailed information about adding widgets to the Palette.
The Palette menu bar contains the following three options:
Select Palette from the Palette menu bar, either with the mouse or with a mnemonic, to display the following menu:
Creates a new Palette. You can display any number of Palettes simultaneously. Once you create a new Palette, you can use the new Palette's Catalog menu to load a catalog file, or you can cut and paste items and groups from other Palettes.
Allows you to display the Palette icons in tabbed or outline format. The default is Outline view. Click on Tabbed View to display the Palette Collections in tabbed format. Click on a tab to display the pixmap icons of a particular Palette group:
Displays only the name of each Palette widget, class, or collection. By default, user collections are assigned the unique names Collection000, Collection001, etc. in the order of their creation.
Displays only the pixmap icon for each Palette widget, class, or collection. User collections are assigned a default pixmap. Edit Palette collection pixmap names from the Edit Properties dialog by selecting Properties from the Catalog menu of the Palette.
Select Catalog from the Palette menu bar to display the Catalog menu:
Loads a catalog file into a Palette. If this item is labelled "Include" the selected catalog file is appended to the currently loaded file.
Displays the Save Catalog dialog box. Enter the directory and new filename into which you want to save the Palette catalog.
Select Edit from the Palette menu bar to display the Palette Edit menu:
Allows you to paste the object or group currently in the paste buffer. Pasting a group will nest it within the group where the cursor is positioned. Pasting an item will insert the item immediately before the item under the cursor or at the end of the group if the cursor is over the Group Label.
To invoke the MB3 Quick Access Menu, press MB3 while the mouse pointer is in the Palette window.
The MB3 menu enhances functions of the Catalog and Edit menu as follows:
Allows you to paste the object or group currently in the paste buffer. Pasting a group will nest it within the group where the cursor is positioned. Pasting an item will insert the item immediately before the item under the cursor or at the end of the group if the cursor is over the Group Label.
Displays the Edit Properties dialog box. Depending on the object or group you select, displays several editable text fields. In the following example, the Motif Primitives group is selected:
Shows the name that identifies the Palette group or Palette object, in this example motif_primitive (this field is not editable).
Shows the name of the Palette object or Palette group as displayed on the Palette, in this example, Motif Primitive. Click MB1 inside the Display Name text field and enter a new name for the Palette group.
Shows the conditions required for the Palette Group. Both the item and the group can optionally name conditions under which they should appear on the Palette.
The valid conditions for the Items name attributes of the system on which Builder Xcessory is running and what other software it is using. You can specify a value SystemAttribute(tag), where "tag" is one of the following values:
You can join multiple uses of SystemAttribute with "&&" (logical AND) and "||" (logical OR) and group them in parentheses.
The valid conditions for the Groups tag name similar attributes of the system on which Builder Xcessory is running, with additional possibilities of the form "tag operator string-value", where tag is one of the following values:
Test operating system BX is running on, using function uname(2V) |
|
Test operating system version (release), using function uname(2V) |
You can use the following operators;
The operators that test greater-than (>) or less-than (<) are appropriate only for tests of Version. You can join multiple uses of these expressions, along with uses of SystemAttribute, with the logical operators in this list. The catalog file should be in the {BX}/xcessory/package/
directory.
You can add your own Xt Intrinsics-based Motif 1.2.x/, C++ classes, or ViewKit components to Builder Xcessory. User-defined widgets and objects appear on the Palette, and you can access and manipulate user-defined widgets and objects as you would any other Palette collection.
Use mnemonic keys to display a menu or choose an item from a displayed menu. Mnemonics are indicated by an underlined character in the menu item label.
2. Place the cursor anywhere on the Palette.
4. Type the appropriate mnemonic.
You can also use Mnemonics to select an item from a menu once that menu is displayed. Enter the mnemonic without depressing the Alt key.
Establish keyboard focus on the Palette by placing the cursor anywhere on the Palette. If you are using the click-to-type model, click MB1 within the window to establish focus.
The underlined "P" in the label for the Palette menu denotes a mnemonic. To display the Palette menu, press Alt+P.
Menu items also contain underlined letters that indicate mnemonics. To select a menu item, press the underlined letter only (do not press the Alt key first). For example, the underlined "L" in the Labels Only also denotes a mnemonic. Press "L" to change the Palette to display only labels.
Depending on the currently selected language and the platform on which you are running Builder Xcessory, the Palette icons correspond to the following objects:
· ViewKit ObjectPak Vk objects
· DEC DXm widgets (available only on DEC UNIX platforms)
· SGI Sgm widgets (available only on SGI platforms)
· Common Desktop Environment (CDE) Dt widgets (available only on platforms with CDE and BX CDE support)
The following table lists the objects displayed for specific platforms and languages:
The Palette can also include user-created collections of objects, other widget sets, and user-created classes. Refer toPalette Objects and for more detailed information about the available objects. The following sections show the Palette groups displayed according to the language you select.
The Motif widgets are displayed on the Palette for all platforms and for all languages except Java:
Start with EPak Widgets must be set on the Behavior tab of the User Preferences dialog to display the EnhancementPak icons. See Behavior toggle options for more detailed information.
The EnhancementPak widgets are displayed on the Palette for all platforms and for all languages except Java:
The ViewKit ObjectPak classes are added to the Palette for all platforms, but only when you select ViewKit as the current language:
The following Java objects are displayed on the Palette for all platforms, but only when you select Java as the current language:
XiPorthole and XiPanner
The EnhancementPak objects, XiPorthole and XiPanner, allow you to navigate more easily around the Browser object instance hierarchy display. The Panner widget represents a rectangular region (the canvas) of which only a smaller, enclosed rectangular region (the slider) is visible at any given time. It is used with a Porthole widget to scroll the Browser object instance hierarchy in two dimensions. The slider may be moved around the canvas by moving the cursor over the slider, pressing MB1, dragging, and then releasing the button.
Resizing the Panner
The Panner is fixed in the top left corner of the Browser. To resize, click and hold MB1 on the Browser and drag its resize border.
Automatic panning
Automatic panning is available when you use drag and drop to move or copy a widget or class instance on the Browser. Move the drag-and-drop icon on top of any border or corner of the Browser. The Browser display will pan in increments toward that direction. This allows you to pan automatically when you perform a drag-and-drop operation in the Browser. To stop panning, move the icon off the Browser border.
Along with the Pixmap Chooser, allows you to create, load, edit, and apply pixmaps. The Builder Xcessory reads pixmaps in XBM and XPM.1, XPM.2, or XPM.3 formats, and writes XPM.3.
To use XPM.1 or XPM.2 pixmaps in your interface, use one of the following methods:
· Load the pixmaps into the Builder Xcessory and write them out as XPM.3.
· Edit the code to conform to XPM.3, and insert it within the convenience routines at the top of the creation-c.c file.
The Pixmap Chooser is the first window displayed:
The Pixmap Chooser displays a list of pixmaps in the Choose a Pixmap field. Select a pixmap from this list by clicking on its name. The default pixmap, Unspecified Pixmap, unsets the resource when selected.
You can perform the following Pixmap Chooser functions on an existing pixmap:
· Load reads the pixmap specified in the Selection text field into the editor.
· Edit displays the Pixmap Edit window for the currently selected pixmap.
· Copy copies the selected pixmap. You are prompted for the name of the new pixmap.
· Delete removes the selected pixmap from the Pixmap Chooser.
The Pixmap Editor features a Panner/Porthole combination, like that used in the Browser, which allows the user to scroll the drawing area in two dimensions.
The Pixmap Editor creates a simple color pixmap editor that allows users to generate graphics for use in an application. It supports many common functions including point, line, circle, filled circle, rectangle, filled rectangle, moving and copying areas, flood fill, and undo. The image may also be resized or zoomed by the user.
To undo the most recent operation (only the most recent operation can be undone) select the Undo button.
To fill the entire image with a given color, and erase its current contents, select the Set All button.
Draws single points on the display in the current color. To draw a single point, click and release MB1. To draw multiple points, click and drag the mouse, points are drawn until the mouse button is released.
To draw a line, press MB1 to set one end of the line, then drag the mouse and release the mouse button to set the other end of the line.
To draw a circle, press MB1 to set the center of the circle and drag to set the radius of the circle.
To draw a filled circle, press MB1 to set the center of the circle and drag to set the radius of the circle.
To draw a rectangle, press MB1 to set one corner of the rectangle, then drag the mouse and release the mouse button to set the opposite corner.
To draw a filled rectangle, press MB1 to set one corner of the rectangle, then drag the mouse and release MB1 to set the opposite corner.
To copy an area of the screen to another location, press MB1 to set the upper left-corner and drag out a rectangle encompassing the area to copy. Release MB1 and move the selected area to the upper-left corner of the new location and click MB1 to complete the copy. The image in the original location is unchanged and a copy is placed in the new location. To cancel a copy operation once the original area has been selected, select the copy icon again.
Similar to the copy operation. However, after moving the area to a new location, the original area is removed by filling it with the currently selected color.
To flood fill an area, choose a location and click MB1. All contiguous pixels of the same color are changed to the current color.
The color bar allows you to select which color each of the previous graphics operations uses.
The color bar, located between the editable pixmap and the control panel, is a bar of rectangles, each of which corresponds to one color in the pixmap. The (+) button at the top of the bar allows you to add colors to the bar.
The current color is denoted by a check mark. When you selecting a new color it becomes the current color. To add a new color to the color bar, click on the (+) button at the top of the bar. To change a color, double-click on that color in the color bar. The Color Editor dialog, allowing you to change that color, is displayed.
To resize the pixmap, press MB1 on an edge of the small pixmap display, drag it to a new location, and release the mouse button. The size of the new image is displayed (in pixels) in the upper left corner of the small pixmap. When the image is made bigger all new pixels are set to the current color. When the image is made smaller only the upper left portion of the image that fits on the screen is saved.
The Pixmap Panner allows you to zoom and pan the pixmap. Grabbing the Pixmap Panner with MB1 allows you to move your current view of the pixmap to a new location. For example, dragging the Pixmap Panner to the extreme top right of its bounding area allows you to see the extreme top right corner of the pixmap. If the Pixmap Panner completely fills the area, then the entire pixmap is currently shown and the Pixmap Panner cannot be moved. When the Pixmap Panner has the keyboard focus, it can also be moved by using the arrow keys.
To zoom the image in and out, use the up and down arrow buttons. This changes the magnification of the drawing pixmap. A magnification of 8x means that each pixel in the real pixmap is represented by an 8x8 rectangle in the pixmap editor. Zooming in and out does not change the image in any way, it only affects your view of the image.
This document assumes that you are familiar with the X Window System and OSF/Motif. If you are developing with Java AWT and/or ViewKit objects, this document assumes that you are familiar with these toolkits. Consult the following documentation lists for recommended references.
For detailed descriptions of OSF/Motif and X, refer to the following documentation:
· OSF/Motif Programmer's Reference. Prentice-Hall, 1993.
(ISBN 0-13-643115-1)
· OSF/Motif Style Guide. Prentice-Hall, 1993.
(ISBN 0-13-643123-2)
· OSF/Motif Programmer's Guide. Prentice-Hall, 1993.
(ISBN 0-13-643107-0)
· Asente, Paul, Donna Converse, and Ralph Swick. X Window System Toolkit. Digital Press, 1997. (ISBN 1-55558-178-1)
· Scheifler, Robert W. and James Gettys. X Window System-Core Library and Standards. Digital Press, 1996. (ISBN 1-55558-154-4)
· Scheifler, Robert W. and James Gettys. X Window System-Extension Libraries. Digital Press, 1997. (ISBN 1-55558-146-3)
· Scheifler, Robert W. and James Gettys. X Window System-Core and Extension Protocols. Digital Press, 1997. (ISBN 1-55558-148-X)
For information about the AWT object set, we recommend the following document:
· Flanagan, David. Java in a Nutshell . O'Reilly and Associates, 1997. (ISBN 1-56592-183-6)
For more detailed information on the Java language, refer to the following documentation:
· Zukowski, John. Java AWT Reference . O'Reilly & Associates, 1997. (ISBN 1-56592-240-9)
· Grant, Mark. Java Language Reference. O'Reilly and Associates, 1997. (ISBN 1-56592-326-X)
· Deitel and Deitel. Java: How to Program. Prentice-Hall, 1998.
(ISBN 0-13-899394-7)
For information about the Common Desktop Environment (CDE) widgets, refer to the following documents:
· CDE 1.0 Programmer's Guide. Addison-Wesley, 1995.
(ISBN 0-201-48954-6)
· CDE 1.0 User's Guide. Addison-Wesley, 1995. (ISBN 0-201-48951-1)
For a description of ViewKit (VKit) classes, refer to the following documentation:
· ViewKit ObjectPak1.3 Programmer's Guide. Integrated Computer Solutions, 1996. (Included with the purchase of BX PRO .)
· IRIS ViewKit Programmer's Guide. Silicon Graphics, Inc. 1994. (Document Number 007-2124-002)
For a description of EnhancementPak (EPak) widgets, refer to the following Integrated Computer Solution's documentation (included with BX PRO):
· EnhancementPak 3.0 Programmer's Reference. Integrated Computer Solutions, 1997.
· GraphPak Programmer's Reference. Integrated Computer Solutions, 1995.
Allows you to define, view, and manipulate procedures available in your interface. Select Procedures from the Browser Manager menu to display the Procedure Manager:
The Procedure Manager displays the procedure name, parameter type, and procedure type of every procedure defined for your interface. The procedure name is preceded by a lock symbol if the procedure is pre-defined. Callback routines are referenced from the Callback Editor; creation routines from the Creation Routine dialog.
By default, the Procedure Manager displays all of the Builder Xcessory pre-defined callbacks. These callbacks are designated on the Procedure Manager by a lock icon, since they cannot be deleted from Builder Xcessory.
When you specify a procedure, parameter, or type in the Callback Editor or Creation Routine dialog, Builder Xcessory adds it to the Procedure Manager.
Select File from the Procedure Manager menu bar to display the Procedure Manager File menu:
Select Edit from the Procedure Manager menu bar to display the Procedure Manager Edit menu:
The following sections describe the options available from the Procedure Manager Edit menu.
Cuts the currently selected procedure and places it in the procedure buffer. You cannot Cut a procedure referenced in your interface.
Select Edit Procedure from the Procedure Manger Edit menu to display the Procedure Editor:
Specify whether the Parameter Type is Predefined or User Defined using the radio boxes to the right of the Type label.
If the type is Undeclared, Builder Xcessory allows the user to declare the procedure parameter to be either no parameter or a parameter of any type. Otherwise, Builder Xcessory checks that the parameter passed to the procedure call is of the correct type. If the parameter type is None, Builder Xcessory will not allow the user to specify a procedure parameter when the procedure is added to a callback list or used in the Creation Routine editor. Refer to Creation Routine for more detailed information.
When you click the arrow button to the right of the Parameter Type text field, you view all types which are either predefined or user-defined (depending on the toggle setting).
User Defined types are all other types which you have specified in the Type Manager, Procedure Manager, Callback Editor, or Creation Routine dialog.
Set the Procedure Type as either Creation Routine or Callback. Creation Routine procedures may be referenced in the Creation Routine dialog. Callback procedures may be used in callback lists which are assigned as callback resource values.
A procedure's Parameter Type and Procedure Type fields may not be changed if the procedure's Reference Count is greater than zero. To decrement the count to zero, remove all references to the procedure from the current interface.
The Reference Count enumerates the number of times the procedure is referenced in the current interface.
The Output File Option Menu allows you to specify the file to which the procedure will be written when Builder Xcessory generates UIL. See File Placement for more detailed information.
Builder Xcessory allows you to view and edit the procedures available in your interface, by using the Procedure Manager and Procedure Editor.
The following sections describe the text fields displayed in the Resource Editor when you select a class instance or a class.
When updated for a class instance, the Resource Editor displays the following text fields:
Displays the class instance name, by default the UI Class Name, with the first letter of the name in lowercase.
Displays the base name to which the C++ Source and Header suffixes will be appended. The File Base Name is set to the Class Name by default.
Displays the Builder Xcessory class name. By default, the Instance Name appended with Derived.
Below the text fields, the Resource Editor displays the Class Widget Resources. That is, any resources in a constituent widget of the class which have been set as Expose. These resources are identified as follows:
For example, assume Class1 is composed of a main window with one child, a button box that has four push button children. In Classes View you set the backgrounds of the first two push buttons to red and blue, respectively, and set the button box's fill option to XiFill None. The resource setting of each resource is Code, but you also select Expose so that the values will be modifiable within a given instance of the class.
When you update the Resource Editor for class1, an instance of Class1, the following class widget resources are displayed:
In Classes View, when you select a class, the Resource Editor displays the following text fields:
Name of currently selected Builder Xcessory class. Builder Xcessory enforces convention of single name with a capital letter.
Name of currently selected Builder Xcessory derived class. Builder Xcessory enforces convention of single name with a capital letter.
Builder Xcessory generates and displays derived files only if you set Generate Derived Files on the Code Generation tab of the C++ Language Settings dialog (from the Browser Options menu).
Base name to which the derived class C++ source and header files will be appended. The default value is the Derived Class. For example, files generated from Derived Class File "foo" will have the default names FooDerived.C (for the source file) and FooDerived.h (for the header file). By default, not displayed.
When you select multiple widget, the Resource Editor displays the same text fields and resources as described in Instances View. The following sections describe the differences between views.
Note: These text fields are always automatically updated for the currently selected widget, regardless of whether resource information has been updated.
The following sections describe the text fields displayed in the Resource Editor for multiply-selected object instances.
Displays a "!=" button to the left of the Instance Name text input field. Because multiple object instances are selected, each instance has a different name and all of the names cannot be displayed in this field. Click on the "!=" button to display the Multiple Header Editor, which lists the name of every object instance that is currently selected in the Instance column.
The Class to which the object instances belong, if all of the selected instances belong to the same Class. Otherwise, a "!=" button is displayed to the left of the Class Name text input field.
If each instance belongs to a different Class, all of the Classes cannot be displayed in this field. Click on the "!=" button to display the Multiple Header Editor for a list of widget instance names currently selected in the Instance column, and each associated Widget Class in the Value column.
Displays the name of the resource style applied to the object instances, according to the following conditions:
· If a resource style has not been applied, this field is empty.
· If the selected objects have different styles, a "!=" button is displayed to the left of the Style text input field.
· If each instance uses a different Style, all the Styles cannot be displayed in this field. Click on the "!=" button to display the Multiple Header Editor for a list of widget instance names currently selected in the Instance column, and each associated resource style in the Value column. See Styles for more detailed information about resource styles.
The value specified in Style is set in the appropriate resource in the objects which compose the class instances in your interface. Such a value might be overridden in the class instance, depending on its resource setting.
The option menu to the far right of each resource text field enables you to change the resource setting for each resource. The following table list and describes the available resource settings:
The resource value is hard-coded and cannot be overridden by the application defaults or the X Resource Database. |
|
The resource value is written to a defaults file and can be |
|
The resource takes a constant as its value. Selecting this |
|
The resource takes an identifier, chosen from a displayed combination box, as its value. The value is hard-coded and cannot be overridden by the application defaults. Selecting "New" displays the Identifier Editor with a new constant. |
|
The resource takes an expression as its value. The value is hard-coded and cannot be overridden by the application defaults. See Expressions for more information. |
|
The resource is one of a set of resources in the style that has been applied to the widget. Unless the resource has been set with a style, this option is not present on the option menu. |
|
For some resources in Java and ViewKit, the expose option is insensitive |
You can view and modify a widget instance's resource when the Resource Editor is updated for the class instance in Instances View. This resource can be used in conjunction with any other setting except None and Style. |
When you set a resource value either directly or through an extended editor (see Extended Editors ), the app-defaults value is set to the appropriate resource type as set on the Default Resource Placement dialog. For further details, refer to the section Default Resource Placement (Ctrl + M) .
When you select a widget instance, the Resource Editor displays the text fields and resources described in the following sections.
When updated for a widget instance in Instances View, the Resource Editor displays the following text fields:
Displays the name of the resource style applied to the widget instance. If no resource style has been applied to the widget, this field is empty. See Style and refer to Style Editor for more detailed information about style resources.
The option menu to the far right of each resource text field enables you to change the resource setting for each resource. The following table lists and describes the available resource settings:
The resource for this widget is set to the default value of that widget class. When a widget instance is first created, all of its resources have a resource setting of None. |
|
The value is hardcoded, and the user cannot change the value. |
|
The resource has been set as an app-default. When the app-defaults file is written, it includes all resources whose app-defaults value is set as App. The user can change an app-default resource value by editing the app-defaults resource file or by overriding it from a local resource file or from the command line (with the toolkit option "-xrm"). Typically, the app-defaults file is shipped with your finished application so that the application user can run your application without having specified anything on the command line. |
|
The value is set to a constant, selected by clicking the arrow button to the right of Const and selecting a constant from the pull-down menu. The menu contains all constants defined for the interface. Selecting "New" displays the Constant Editor with a new constant. |
|
The value is set to an identifier, selected by clicking the arrow button to the right of Ident and selecting an identifier from the pull-down menu. The menu contains all identifiers defined for the interface. Selecting "New" displays the Identifier Editor with a new constant. |
|
The resource takes an expression as its value. The value is hard-coded and cannot be overridden by the application defaults. See Expressions . |
|
The resource is one of a set of resources in the style that has been applied to the widget. |
|
For some resources in Java and in ViewKit, the expose option is insensitive. |
You can view and modify a widget instance's resource when the Resource Editor is updated for the class instance in Instances View. Use this resource in conjunction with any other setting except None and Style. The Expose setting is available only to widget instances which are members of a class. |
If the selected widget is a Motif or ViewKit object, the Resource Editor displays the Widget Instance resources and callbacks.
Children of some container widgets add constraint resources at the end of the resources list (the word "Constraint" precedes these resource names). For example, if you place a Button in a Form container, additional resources are displayed which allow you to control the layout of the Button within the Form. However, if you place a Button in a BulletinBoard container, no resources are added to the Resource Editor.
If the selected widget is a Java object, the Resource Editor displays a list of attributes and events associated with the selected object. Relevant layout attributes are also displayed.
For example, when you set the object's layout to GridBagLayout, the Resource Editor also displays resources associated with the GridBag constraint object. The GridBag constraint object is part of the code generated by Builder Xcessory, but is not displayed on the Palette. The layout resource appears with the container if the attribute controls the overall layout and with the child if the attribute controls the placement of a particular child.
Silicon Graphics Incorporated (SGI) Sgm widgets are included on the Palette when you run Builder Xcessory on an SGI platform. The following sections provide descriptions of each SGI widget in alphabetical order (refer to your SGI documentation for more detailed information):
The SgDial widget allows the user to specify or change a value in a given range. Users change the current value by direct manipulation of the dial (dragging or clicking on the appropriate tick mark that represents the desired value). The appearance and the behavior of the dial can be modified. For example, the angular range in degrees through which the dial is allowed to rotate and the color of the dial and tick marks can be changed.
· Use dials as an alternative to scales for setting parameters. Dials are best for numeric parameters where the range of allowable values is small and the values are discrete.
· In a group of dials, place each dial label in the same position relative to its dial (that is, either all the labels should be below the dials, or all the labels should be above the dials).
The SgGraph widget allows you to display any group of widgets as a graph, with each widget representing a node. The graph can be disconnected, as well as contain cycles. Arcs used to connect the nodes are instances of an SgArc widget, developed specifically for use with the SgGraph widget. Can arrange all nodes either horizontally or vertically according to an internal layout algorithm, and supports an edit mode in which arcs and nodes may be interactively repositioned as well as created.
· Arcs may be undirected, directed, or bi-directed.
· Does not understand arc direction semantics (for layout and editing purposes, an arc always has a parent and a child regardless of direction).
· In read-only mode, all events are passed directly to its children.
· In edit mode, SgGraph takes all device events for editing commands.
SgGrid is a container widget that has no input semantics of its own. Arranges its children in a two dimensional grid of arbitrary size. Each row and column of this grid may be separately designated as having a fixed size or as having some degree of stretchability. Each child may be resizable in either or both directions, or forced to a fixed size. If a child is a fixed size, and smaller than the cell that contains it, the child's position within the cell is determined by an XmNgravity resource.
· The position of each child must be set using the XmNrow and XmNcolumn resources. If no position is specified, the child is placed in an unspecified free cell.
· The resizability of each row and column must be set using convenience functions SgGridSetRowResize and SgGridSetColumnResize. The default is for all rows and columns to be resizable. All widgets are resized according to their relative natural size.
SgHorizontalPanedWindow is a composite widget that lays out children in a horizontally tiled format and allows the user to horizontally resize various portions of the application interface. The first child is inserted at the left side of the Horizontal Paned Window and each successive child is inserted to the right.
The Horizontal Paned Window grows to match the height of its tallest child and all other children are forced to this height. The width of the Horizontal Paned Window is equal to the sum of the widths of all its children, the spacing between them, and the size of the left and right margins.
Depending on whether you are using the IRIS GL proprietary 3-D graphics standard or the Open GL non-proprietary 3-D graphics standard, the following widget is displayed on the Palette:
· GlxMDraw--Displayed when running the IRIS GL standard. This is the default, and you can also explicitly set it with the +openGL flag on the bx command line.
· GLwMDrawingArea--Displayed when running the OpenGL standard. You can also explicitly set it with the -openGL flag on the bx command line.
· Note the state of the openGL flag is preserved between sessions.
· If you are unsure of which object to load and use, the Open GL Draw is recommended. The IRIS GL Draw object is really only included for backwards-compatibility purposes.
· OpenGL and IRIS GL cannot be used in the same application.
The SgIconGadget widget displays a labeled pixmap. Does not accept any button or key input, and the help callback is the only callback defined. Receives enter and leave events. Can be displayed in colors other than that provided by its parent, a restriction that limits the usefulness of gadgets in many situation.
SgLEDButton is an SGI enhanced XmToggleButton that allows the user to set an on/off choice. The LED Button adds two new indicator types to those of the standard Motif Toggle Button: Xm3D_N_OF_MANY and Xm3D_ONE_OF_MANY. These types cause the indicator to be drawn like an LED with on/off state indicated by a "lit/unlit" color selection.
SgRubberBoard allows the user to set up initial and final layout states for an interface and interpolates any intervening layouts.
Exercise caution when using this manager. Adjustments are not made by the Rubber Board for any changes initiated by its children. Therefore, changes to a child's size due to localization, and so forth, are not taken into account when the Rubber Board recalculates child size and location when the Rubber Board itself is resized.
SgSpringBox is a container widget with no input semantics of its own. Arranges its children in a single row or column based on a set of spring constraints assigned to each child. Allows layouts similar to those supported by the XmForm widget, but usually easier to set up. Possible to create some layouts that cannot be achieved with the XmForm widget (for example, centering a column of widgets is very easy to do with the SgSpringBox widget, but nearly impossible using the XmForm).
· Each child of an SgSpringBox widget has six constraints associated with it.
· The resources XmNverticalSpring and XmNhorizontalSpring control the degree of "springiness" in each child. A value of zero means the child cannot be resized in that direction. For non-zero values, the values are compared to the values of other springs in the overall system to determine the proportional effects of any resizing. The default value of both resources is zero.
· Each child has a spring between its left, right, top, and bottom sides and whatever boundary it is adjacent to.
The SgThumbWheel widget allows users to specify or modify a value from within a range of values or from an infinite range. Users change the current value by clicking and dragging (spinning) the wheel. Can also include a home button that returns the thumbwheel to a default value. Thumbwheels can be oriented horizontally or vertically.
· Use to change the values of continuous variables.
· Use with finite ranges for zooming operations.
· Use with an infinite range for rotating objects.
· Use when screen real estate is limited.
· Update the object or value as the user moves the thumbwheel to imply direct, continuous manipulation.
Selecting objects
To select an object, use one of the following methods:
· Click on the instance name in the Browser.
· Click on the object itself on your display.
· Use the Browser Search/Select Bar.
In the following figure, the DrawingArea widget is selected:
Selected Widget
The selected object is highlighted on the Browser display of the object instance hierarchy. The selected object is surrounded by a darkened selection outline on your interface. The selection outline is broken into corners and edges to aid in resize operations.
Selecting multiple objects
To select multiple objects, use one of the following methods:
· Hold down Ctrl and click on each object or instance name.
· Hold down Shift and MB1 and drag the cursor to draw a square around the objects (or their instance names). Release Shift and MB1. All objects completely within the square are selected.
· Hold down Shift and click on an object. The object and all objects descending from it are selected.
· Use the Browser Search/Select field.
This section helps you decide which nodes to use as license server nodes.
This section discusses the resources used by the license server. When you select a server node, you may need to take into account the system limits on these resources. For small numbers of licenses (under about 100), most of these items should not be a problem on any workstation.
When you run lmgrd
, it automatically starts up one copy of each vendor daemon specified in the DAEMON line(s) in the license file. Each time a client connects to the server it uses a process file descriptor. If a vendor daemon runs out of file descriptors, it automatically starts up another copy of itself. The process file descriptor limit on most systems is at least 128, so the vendor daemon does make a copy of itself until at least 120 to 125 clients are simultaneously connected (a few file descriptors are used for other things).
For small numbers of licenses the number of processes used is D+1, where D is the number of vendor daemons specified in the license file. For a license file specifying one vendor daemon and a large number of licenses, the number of processes used is approximately 1+(N/P), where N is the number of simultaneous clients and P is the maximum number of file descriptors allowed per process.
Each client connected to a license server uses one socket. The total number of sockets used by the license server programs is slightly larger than the total number of simultaneous clients. If you have a very large number of licenses (a few hundred), you should confirm that the system limit on the number of sockets and file descriptors is adequate to handle all of the licenses. On some systems, such as SCO " , the default number of sockets may be set fairly low; if you choose to run a server on such a machine, you may need to reconfigure your kernel to have more sockets.
For small numbers of clients, the license servers use very little CPU cycles. The servers might have only a few seconds of CPU time after many days.
For a large number of clients (who are each exchanging heartbeat messages with the server), or for high checkout/checkin activity levels (hundreds per second), the amount of cpu time consumed by the server may start to become significant. In this case, you might need to ensure that the server machine you select has CPU cycles to spare.
The only output file created by the license server is the log file. The log file contains one line for each checkout and one line for each checkin. If you have a lot of license activity, the log file grows very large. Consider where to put this file and how often to delete or prune it.
The daemon log file output can be switched after the daemons are running. This involves piping the stdout of lmgrd
to a shell script that appends a file for each line, as follows:
The daemon log file output can be switched after the daemons are running. This involves piping the stdout of lmgrd
to a shell script that appends a file for each line, as follows. Instead of the "normal" startup:
With this startup method, the output file "LOG" can be renamed and a new log file is created. You can make "LOG" a symbolic link and change the value of the link to switch the log file.
The FLEX lm daemons use little memory. Typically, lmgrd
uses approximately150 kB and the vendor daemons use approximately 200 kB each.
FLEX lm sends relatively small amounts of data across the network. Each transaction, such as a checkout or checkin, is typically satisfied with less than 1Kbyte of data transferred. This means that FLEX lm licensing can be effectively run over slow networks (such as dial-up SLIP lines) for small numbers of clients.
For large number of clients (hundreds), each of which exchanges heartbeat messages with the vendor daemon, the network bandwidth use may start to become significant. In this case you should run client and server on the same local area network.
Globetrotter Software recommends that you do not use remote mounted disks when you run the license server. We recommend that lmgrd
, the vendor daemons, the license file, and the log file are all on locally mounted disks. If any of these files is on a remote mounted disk, the points of failure which could lead to a loss of all of your licenses doubles. When all files are mounted locally, the licenses are available as long as the server machine is up; but when the files are on a different machine, then the loss of either the license server machine or the file server machine causes the licenses not to be available.
Diskless nodes are the extreme case of not using local disks. We recommend that you do not use diskless nodes as license servers, since the files are necessarily accessed from a remote disk. In addition, FLEX lm sometimes (at the option of the vendor) makes a security check, which fails on a diskless node. If you find that you are having problems with a lock file, one possibility is that you are attempting to run on a diskless node. The simplest solution is to select a different node for your license server.
With FLEX lm , you can set up redundant license servers to operate as a single logical license server. This feature is controlled solely by the SERVER lines in the license file. The software vendor is not required to change anything in his application or in his vendor daemon to enable this capability.
Redundant servers help ensure the availability of your licenses in the event of a system crash. The cost is some additional administration. If you are willing to deal with the extra overhead, and you want to ensure that all of your licenses are available even if one machine crashes, then you may want to use redundant servers.
Alternatively, working with your software vendor you may be able to split up your licenses among multiple independent servers. This is easier to administer, and allows you to have at least some of the licenses available, even if one machine goes down.
To set up redundant servers, you must provide the hostid for three machines to your software vendor, who will provide you with a license file with three SERVER lines. You need to make sure that each license server has lmgrd
, the vendor daemon program and the license file on a local file system. (For some caveats on remote file systems, seeDiskless Nodes and Remote Mounted Disks ). You then start lmgrd
on each license server.
In a redundant server configuration, no licenses are available until there is a quorum of servers. A quorum of servers is defined as a strict majority of the servers listed in the license file, so a quorum in a three-server configuration is two. In other words, if only one server in a three server configuration is running, then no licenses are available. As soon as two of the three servers are running and communicating with each other, then all of the licenses are available.
After installing Builder Xcessory on your system, enter the following command at the command line:
where {BX} is the directory where you installed Builder Xcessory.
If your system administrator copied the bx50 script to a location in your search path, enter the following command at the command line:
Note: Refer to the BX PRO Installation Notes for complete installation instructions.
The Startup Panel appears each time you start a Builder Xcessory session. As Builder Xcessory initializes, status messages are displayed at the bottom of the window, and a random tip is displayed in the "Did You Know" field. The "Next Tip" button is active only when the Builder Xcessory finishes loading ("System Ready" is displayed at the bottom of the window).
Once Builder Xcessory is loaded, the Builder Xcessory main windows are displayed, with the Startup Panel in the foreground. Click on the Next Tip button to read more tips, or click on Dismiss to close the Startup Panel.
To dismiss the Startup Panel automatically when the system is ready, enable the Auto Dismiss Startup Panel toggle on the Behavior tab of the Browser Users Preference dialog.
In your first Builder Xcessory session, the following Language Dialog also appears in the foreground:
You must select a default language before proceeding. The language you select determines the available UI objects and the contents of the Builder Xcessory menus and dialogs. The selected language is saved in your.bxrc file, and becomes the default language for all subsequent BX sessions.
You can change the language for each application or change the default language at any time by selecting Choose A Language from the Browser options menu. For more detailed information, refer to Choose A Language .
The Exit button exits Builder Xcessory without saving a default language with your .bxrc file. The Language Dialog will appear the next time you start Builder Xcessory.
The setup
script asks if you want to start the license manager. If you do not start the lmgrd
during installation, you must start it manually.
If you put the license file in /usr/local/flexlm/licenses
, enter the following to start the license manager daemon:
If you decide to put the license file somewhere other than /usr/local/flexlm/licenses
, you will need to use one the following methods enabling the daemon to locate the license file.
Start the license daemon as follows:
where license_file_path
is the full pathname to the license file.
-c
option to locate the license file if the default location cannot be used.
Use the environment variable LM_LICENSE_FILE
to override /usr/local/flexlm/licenses/license.dat
as the location of the license file.
To receive your activation key, you must provide ICS with the following information:
· Support number (six digit number) affixed to the back of your Builder Xcessory CD.
· For each server on which you plan to run the license manager: the server host name (that is, your machine name) and the server host id. To obtain the host id for a machine, open a window for that machine and enter the following to return the host id:
Once you receive the activation key, run the addbxkey
. lm
script to install the key on your system:
1. As root, enter sh {BX}/admin/addlmkey
on the command line.
When you enter bx
on the command line, Builder Xcessory compares your activation key with an encryption of the data in license.dat
which describes the following:
· Names, hostids, and TCP/IP ports of your license servers
· Location of the ICS license daemon ICSBX
· Your number of licenses for each version of the Builder Xcessory
license
. dat
is available on every system that will run the Builder Xcessory and on any system acting as a license server.
If the activation key matches the encryption of the license.dat
data, the license manager checks to see if any licenses are available. If a license is available, the fully functional Builder Xcessory starts. If a license is unavailable, the Builder Xcessory sends the message that all available licenses are issued, and lists the holders of those licenses. The Builder Xcessory also offers the opportunity to run in demo (that is, non-saving) mode. If the activation key does not match the encryption of this data, a message is displayed and the Builder Xcessory will exit.
Allows you to view, add and edit styles, and to apply a set of resource values quickly and consistently across a number of widgets.
Select Styles from the Browser Managers menu to display the Style Manager:
The style hierarchy is displayed within the window. Clicking MB1 on a style selects that style. The currently selected style is highlighted on the hierarchy. Double-click MB1 on a style to display the Style Editor. Double-click MB3 on a style to select that style and pop up an Edit menu identical to the Style Manager Edit menu.
System styles are designated on the Style Manager with a "lock" icon. Although you can use the Style Editor to review the contents of these styles, you cannot edit their resource values.
Styles referenced in Palette collections are designated with an "L" icon. You can edit these styles, but you cannot delete them.
The style hierarchy is displayed on the Style Manager as either an outline or a tree. Styles, like widgets, are related to one another as parents and children. Substyles inherit the resource values of their ancestors. A style includes not only the resource values defined in that style, but also any resource values defined for the style's ancestors. A value specified in the widget itself takes precedence over a value for the same resource specified in an ancestor.
For example, assume that you have a style hierarchy containing the BaseStyle and substyles BaseStyle1, BaseStyle2, BaseStyle3, and BaseStyle4.
BaseStyle, a system style that serves as the root of the style hierarchy, is always locked. You cannot define resources for BaseStyle. In the sample style hierarchy, BaseStyle1 and BaseStyle2 are the children of BaseStyle, while BaseStyle3 is the child of BaseStyle1, and BaseStyle4 is the child of BaseStyle3.
Assume that the resource background is set as red in BaseStyle1, blue in BaseStyle2, and is undefined in BaseStyle3 and BaseStyle4. Applying BaseStyle1 to a widget applies the value red to that widget's resource background. Applying BaseStyle2 applies the value blue because the resource is defined specifically for BaseStyle2. Applying BaseStyle3 or BaseStyle4 applies the value red because, although the resource is not set specifically in either style, it is set in their ancestor, BaseStyle1.
Assume that BaseStyle4 has been applied to a widget, and you change BaseStyle3 to specify a new value, green, for background. The background of the widget changes to green because BaseStyle4 is automatically updated to reflect the resource values that are part of its ancestor style, BaseStyle3.
The following sections describe the Style Manager menu bar options.
Select File from the Style Manager menu bar, with the mouse or with a mnemonic, to display the following menu:
Select Edit from the Style Manager menu bar, either with the mouse or with a mnemonic, to display the Style Manager Edit menu
The following sections describe the options available from the Edit menu.
Removes the currently selected style and its descendants from the style hierarchy and places them in the style paste buffer, overwriting any existing contents of the buffer. Use Cut in conjunction with Paste to move a style and its descendants to a new location within the style hierarchy. If you do not select Paste before another Cut or Copy operation, the Cut styles will be permanently removed.
Places a copy of the currently selected style and its descendants in the style paste buffer, overwriting any existing contents of the buffer. Use Copy in conjunction with Paste to copy a style and its descendants to a new location within the style hierarchy.
Reparents the contents of the style paste buffer as descendants of the currently selected style. Use Paste in conjunction with Copy to copy a set of styles, or with Cut to move a set of styles within the style hierarchy. Paste does not clear the style paste buffer, so you may perform multiple Paste operations.
Allows you to display the style hierarchy as a tree or outline. Select View from the Style Manager menu bar, either with the mouse or with a mnemonic, to display the Style Manager View menu:
Displays the style hierarchy in tree form. The display window has horizontal and vertical scrollbars. Within the window, children appear to the right of their parents, connected by lines. A toggle to the left of each parent displays either an open or closed folder. If no folder appears to the left of a style, then that style has no children. When a parent's folder is closed, its descendants are not displayed. Clicking on a parent's closed folder expands the display to include all of the parent's children, while subsequent generations remain hidden. Clicking on a parent's open folder hides all of the parent's descendants. By default, the style hierarchy is displayed as a tree.
Displays the style hierarchy in outline form. The display window has horizontal and vertical scrollbars. Within the window, successive generations appear under their parent, indented from the left margin. Siblings are indented to the same level. A toggle to the left of each parent displays as either an open or closed folder. If no folder appears to the left of a style, then that style has no children. When a parent's folder is closed, its descendants are not displayed. Clicking on a parent's closed folder expands the display to include all of the parent's children, while subsequent generations remain hidden. Clicking on a parent's open folder hides all of the parent's descendants.
Allows you to apply the currently selected style to various combinations of objects within your interface. Select Apply from the Style Manager menu bar, either with the mouse or with a mnemonic, to display the Style Manager Apply menu:
Apply style to currently selected instance and each of its descendants. If multiple instances are selected, this applies the style to each instance and its descendants.
Apply style to currently selected instance, overriding any resource values previously defined for the object. You can also apply a style to a selected group of instances and override any previously-defined resource values for each instance.
You can also apply a style to an object and override its resource values using drag and drop. Depress MB2 over the style, drag over the object, and release the mouse button.
Apply style to currently selected instance and each of its descendants, overriding any conflicting resource values defined in each object. If multiple instances are selected, the style is applied to each instance and its descendants, and any conflicting resource values are overridden in each selected instance and its descendants.
You can also apply a style to an instance tree and override the resource values of each object in the tree using drag and drop. Depress MB2 over the style, drag over the object and, while pressing the Ctrl key, release the mouse button.
The Style Editor allows you to assign a set of resource values to a style name. Use one of the following methods to display the Style Editor:
Select Styles from the Browser Managers menu to display the Style Manager (if it is not already displayed). With BaseStyle as the currently selected style, select Create Substyle from the Style Manager Edit menu to create a new style. The new style, BaseStyle1, is created as the child of BaseStyle. Double-click MB1 on BaseStyle1 to display the Style Editor:
Displays the name of the parent of the edited style. Clicking on the arrow button to the right of the text field displays a list of all valid styles to which this style may be parented. Selecting a different style in this field reparents the edited style. This is identical to performing a drag and drop operation on the Style Manager.
Lists the resources selected for the edited style. Click the arrow button to the right of this text field to display a combination box containing a list of all resources recognized by the Builder Xcessory.
The file placement option menu (default value uil.uil) specifies the UIL file to which style information is written when UIL is generated. Refer to File Placement for more detailed information.
The Edit drop target is represented by a pencil and paper icon. Use the Edit drop target as follows:
· Drop a style onto the Edit drop target to update the Style Editor for that style.
· Drop a widget or its Browser widget instance name onto the Edit drop target to update the Resource Editor for that widget.
Make multiple selections from the combination box by clicking MB1 on each resource name in turn. Each selected resource is highlighted in the combination box. Deselect a resource by clicking on its highlighted name in the combination box.
Press the arrow button again to remove the combination box and display the names of all selected resources in the Resources text field.
The resources you selected are displayed in a list in the Style Editor main display area, directly under the Resources text field. Assign values to these resources by entering the value directly into the resource text field, or by calling up any of the extended editors by clicking the (...) button to the right of the resource text field. The Builder Xcessory editors are described in Extended Editors .
The resource placement of each resource is displayed to the right of the resource (refer to Resource Settings for a Widget Instance for more detailed information).Below the resource window, the Style Editor displays the three pushbuttons, Apply, Reset, and Dismiss.
Clicking Apply on the Style Editor assigns the resource values displayed in the Resources window to the edited style.
To apply a style to a widget, use one of the following methods:
· Select the widget and choose the appropriate item from the Style Manager's Apply menu.
· Drag the style name from the Style Manager and drop it on the widget or the widget name on the Browser.
Applying a change to the style by clicking the Apply button on the Style Editor will immediately change the resource values of any widgets to which the style, or one of its descendants, has previously been applied.
Click Reset to read the resource values last applied to the edited style into the Style Editor.
Click Dismiss to remove the Style Editor window. The values in the resources window are lost unless they have been previously applied.
When you write out UIL, style information is included in the uil.uil file, or one of its include files.
When the Builder Xcessory attempts to Open or Read the selected file, it may display a warning dialog with the message "Name conflict between loaded style and new style" The warning indicates that a style currently in the Builder Xcessory Style Manager has the same name as a different style defined for the file you are attempting to open. The warning dialog has these push buttons:
Builder Xcessory desensitizes all Resource Editor resources to which a system style is currently applied. System styles are created in the same manner as normal styles, but are written to the system file. These styles are denoted by a lock icon on the Style Hierarchy display, indicating that you cannot edit these styles. System styles allow the user to force consistent styles across a range of resources.
Styles specified in {BX}/xcessory/styles/styles.uilare included on the Style Manager when you start the Builder Xcessory. You can add styles to this file with the following procedure:
1. Select New from the Browser File menu, and clear everything including existing styles.
2. Create the styles you want to add to the Builder Xcessory.
4. Load the new uil.uil file into a text editor. For each style, two structures are specified in the uil.uil file:
5. Append this to {BX}/xcessory/styles/styles.uil. Ignore the remainder of the uil.uil file.
To edit the hierarchy of styles specified in the styles.uil file, change the parent styles in both the resource and callbacks structure.
A style is a set of resource values assigned to a particular name. When the style name is applied to a widget, the set of resource values is applied to that widget. Builder Xcessory styles are flexible, and provide options such as applying a given style to an entire widget tree or forcing the style resource values to override resource values previously defined for a widget.
The Builder Xcessory allows you to set resource values quickly and consistently through the application of styles. You can apply a single style, or a related family of styles, to the objects in your interface to achieve a consistent look for your application. You can also apply the same styles over a set of applications to achieve a similar look and feel.
You can access styles from the following two windows:
Styles are defined, viewed, and manipulated using the Style Manager.
Allows you to construct tables of translations (mappings of user actions to widget functions) for the widgets in your interface:
Type your translation table into the editor. Do not include "\n" for line breaks; they are inserted automatically.
This section provides more detailed debugging information about specific areas of FLEX lm . We hope it helps you debug problems you experience at your site.
Use the following tips for debugging:
· When you start the license server ( lmgrd
) be sure that you direct the output into a log file where you can examine it. The log file often contains useful information. You should examine it when you have a problem, and be prepared to answer questions about it when you talk to a support person.
· If the license server appears to have started correctly (which you should be able to determine from the log file), try running lmstat -a to see if that program has the same problem as your application.
When you talk to a support person, be prepared to answer the following questions:
· What machine is your license server running on? What version of the operating system?
· What machine and operating system is the application running on?
· What version of FLEX lm does the program use? Use the lmver script, or execute the following command on yourlmgrd
, vendor daemon, and application:
strings <program> | grep -i copyright | grep -i flexlm
· What error or warning messages appear in the log file? Did the server start correctly? Look for a message such as:
· What is the output from running lmstat -a ?
· Are you running other products which are also licensed by FLEX lm ? Are you using a combined license file or separate license files?
· Are you using redundant servers (multiple SERVER lines in your license file)?
When I run the application (or lmhostid ) on an HP platform, I get a hostid of 0.
Some HP machines do not have a built-in hostid; they require an external ID module (in FLEX lm v2.1 and earlier), which is a small box that plugs into the keyboard cable.
In FLEX lm v2.2 the ethernet address can be used as the hostid on an HP system. To get the ethernet hostid, use the FLEX lm command lmhostid ether (note there is no dash before ether ). For FLEX lm v2.1 and earlier, the simplest solution is to purchase an HP ID module and attach it to the system. Call your HP representative for details. Note that 0 is a valid ID number. You can ask your software vendor for a license file with an ID of 0 and a short expiration date (perhaps good for a few days or one week) to give you some time to get an ID module.
When I run the license manager on my machine, it tells me it is the wrong hostid.
The vendor daemon checks the hostid listed on the SERVER line in the license file; if it does not match the hostid of the machine it is running on, this message will be printed. Possible causes include 1) you are trying to run the license server on a different machine from the machine the file was made for; 2) the hostid of the machine you are running on changed (for example, the HP ID module was moved, or the cpu board was replaced); 3) the hostid in the license file was modified.
Verify that the hostid of the machine on which the vendor daemon (or node-locked client program) is being run matches the hostid specified in the license file (on the SERVER line for the vendor, or on the FEATURE line for a node-locked client). You can run the lmhostid program to see what FLEX lm thinks the hostid is. You may not modify the hostid in the license file. If the hostid of your server machine changes, you must get a new license file from your software vendor.
Application program (or lmstat ) can't connect to the server to check out a license.
The FLEX lm routines in the application are unable to make a TCP connection to the server and port specified in the license file. Possible reasons for this include the following:
· Wrong license file referenced by the application program.
· Server machine specified in license file is down.
· Vendor daemon specified in license file is not running.
· Hostname in license file is not recognized by system.
· Network between client machine and server machine is down.
· You are mixing FLEX lm v1.5 (or earlier) and v2.1 (or later) vendor daemons in one license file, and have run lmgrd
without the -b command line option.
Verify that the application is using the proper license file. Verify that specified server machine is up and reachable by executing another command that uses TCP, such as rsh or rlogin , from the client to the server. Verify that the vendor daemon is running (you can use ps on the server to look for it). Examine the license log file to see if any problems are reported, particularly messages indicating that the vendor daemon has quit. Run lmstat -a from the server machine to verify that the vendor daemon is alive. Run lmstat -a from the client machine to verify the connection from client to vendor daemon across the network. Try using telnet <hostname> <portnum> where hostname and portnum are the same as on the SERVER line in your license file.
The application program is able to connect from some machines but not from others.
There is a bug in FLEX lm v1.5 in which the license server only listens to the ethernet address associated with the primary hostname on the system. The simplest solution is to get an upgraded license server from your software vendor (you can run a new license server and still keep running the old application software). Alternatively, you can ask your software vendor for a different license file and run your license daemon on a different machine with a single ethernet board. If this is not possible, you may be able to modify your host tables to direct all FLEX lm requests to the active port on the machine.
The application program (or lmstat) gets the error can't read data when attempting to connect to the license server.
When I run my application program (or vendor daemon), I get the error bad code .
Possible causes for this are 1) the license file was modified (either the hostid on a SERVER line or anything on the FEATURE line was changed); 2) the vendor used the wrong version of his license creation program to generate your license file (or there is a bug in that process).
You may not modify the license file (except for specific fields, see License File ). If you need to change something in your license file, you must get a new license file from your software vendor.
When the second user tries to check out a license, the vendor daemon prints an error concerning Parameter mismatchin the log file and refuses the license.
The most likely cause of this problem is that you are simultaneously trying to run two different versions of the application program, and the software vendor has not specifically set up the new version for this kind of compatibility. Check the license server log file for a comm version mismatch warning message; this indicates that someone is running a v1.5 client with a v2.1 or later license server.
When I run the vendor daemon on my VMS system, I get the error message socket bind: permission denied (13) .
When I start up lmgrd
, it says execl failed on my vendor daemon.
lmgrd
uses execl to start each vendor daemon running. If there is a problem starting the vendor daemon, this message is output to the log file. This error is typically caused by one of the following: 1) there is no executable at the location referred to by the license file (and printed out in the log file); 2) the executable does not have the proper protection to be run (the file does not have the "x" bit set, or one of the directories in the path is not readable); 3) there was an error building the executable, and it can not be run; 4) the executable is for a different machine architecture.
Verify that the path to the vendor daemon is absolute (i.e. starts with a slash character, "/",) and that it points to the executable program itself, not the containing directory (for FLEX lm v1.5). Ensure that the file exists by doing an ls -lof the vendor daemon filename(s) specified in the log file. Make sure you do this as the same user that started lmgrd
. Verify that the file is executable. Note that if you are running as root and using an NFS-mounted filesystem, the relevant protection bits are the "other" bits ( not the "user" bits), even if the file is owned by root. Do a whatis on the file (if your system has that program). whatis should tell you the file is an executable for the machine you are trying to run it on. Run the vendor daemon directly from the command line. If the vendor daemon is properly linked, it will tell you that it must be run from lmgrd
; if it crashes or fails to execute, then it is not properly linked.
The license server keeps reporting "lost lock" errors in the log file and exiting.
The lockfile (normally placed in /usr/tmp ) is being removed by someone else. There could be another daemon running, or the system administrator (or a script he set up) could have deleted the file.
Check to see if there is more than one copy of the daemon running: use a command like ps -aux | grep vendorname to search for it. Check for more than one lmgrd
running as well, since it will restart your vendor daemon when it is killed. If more than one lmgrd
is running, kill them all (using simple kill commands, not kill -9 etc.), then kill any remaining vendor daemons (try a simple kill, if that fails then try kill -9 ) and start one fresh copy of lmgrd
. Check to see if there is a shell script running that cleans out /tmp (or /usr/tmp ). If so, try modifying it so that it does not delete zero length files.
This section presents a troubleshooting guide for the license manager. Use the topic questions as guidelines. For example, for installation problems, begin at topic 1 and follow the directions in topic 2.
Continue to Topic 2 .
You can find the setup
script in your Builder Xcessory system directory 1 . Consult the BX PRO Installation Notesand continue to "Did you receive a full feature license key from ICS?" . We recommend that you run this script as root. Running the setup
file creates a license.dat
file. When you examine the license.dat
file, you will notice a SERVER line.
The DAEMON ICSBX should contain a pathname to the location of the ICSBX vendor daemon. This is usually{BX}/bin/ICSBX
. On Solaris 2, it is {INSTALL}/ICS/bin/ICSBX
. The SERVER lines contain the hostnames and hostids (and port numbers) on which you have to run the license manager software in order for you to be able to run Builder Xcessory.
"Did you receive a full feature license key from ICS?"
Continue to Topic 3 .
If you have not purchased a key from ICS for BX, then you will only be able to run in demo mode. If you cannot run the demo of BX, continue to "Did you start the license manager daemon?" . If you have purchased a key but have not received it contact ICS at 617.621.0060. Please have ready the hostname, the value returned by {BX}/bin/lmhostid
, and your Builder Xcessory registration number, which can be found on a white sticker on the front of the tape. If you have purchased a license we will be glad to fax you a full feature activation key for Builder Xcessory. Once you have received the fax from ICS, continue to Topic 3 .
"Did you run the addbxkey.lm script and install the full feature BX activation key?"
Check that the license
. dat
file contains the new line:
FEATURE BuilderXcessory ICSBX
3.000 01-jan-00 numberoflicenses
youractivationkey "ICS Builder
Xcessory"
Continue to "Did you start the license manager daemon?" .
Go to the {BX}
directory and run the addbxkey
. lm
shell script. Consult the Builder Xcessory PRO Installation Notes. We recommend running this script as root. Continue to Topic 4 .
"Did you start the license manager daemon?"
You can check and see if the lmgrd
is running by running the lmstat
command found in {LM}/bin/lmstat
. Iflmgrd
is up and ICSBX
is up continue to Topic 5 . If lmgrd
or ICSBX
is not up, then refer back to Topic 1 and check your system.
Do a ps
command and make sure no lmgrd
or ICSBX
processes are running. If you see an lmgrd
process running, use the {LM}/bin/lmdown
command to stop it. If the lmdown
command fails for any reason you may kill lmgrd
with a -15
signal (signal 15 stands for sigterm
and will cause lmgrd
to shutdown gracefully and cleanly). Remove the log file for the current lmgrd session. If you have the license.dat
file in /usr/local/flexlm/licenses
then go to {BX}/
bin
and type:
If you have the license
. dat
file in another location set the LM_LICENSE_FILE
environment variable (consult theBuilder Xcessory PRO Installation Notes ) and then start lmgrd
as described. If you have the LM_LICENSE_FILE
environment variable already set (do a printenv
command) make sure it is correct (on a single line):
lmgrd
on each machine specified on each SERVER line in the license.dat
file. There can only be one lmgrd
and ICSBX
process running on each machine using the same license.dat
file and TCP/IP port. Continue to "Examine the contents of the log file." .
"Examine the contents of the log file."
Go to the directory where your log file exists (if you have followed the above directions, that should be /tmp
) and type:
The file <logfilename>
should be lmgrd.log
. Look to see if any error messages are reported in the file. The next few topics discuss the most common errors.
"Is there an entry in the log file that says ICSBX cannot establish lock /usr/tmp/lockICSBX?"
Go to /usr/tmp
and remove lockICSBX
. Using ps
, check for any lmgrd
processes running, use the{LM}/bin/lmdown
command to stop them. If the lmdown
command fails for any reason you may kill lmgrd
with a -15
signal (signal 15 stands for sigterm
and will cause lmgrd
to shutdown gracefully and cleanly). Refer to Topic 2 , No .
Continue to Topic 7 .
"Is there an entry in the log file that says port address already in use?"
Edit the port number in the license
. dat
file for the server on which you are trying to run. The default is 1700. You can change this value to be any port number you are not using. Consult the /etc/services
file or the equivalent NIS services file to find the list of ports in use. Remember that port numbers less than 1024 are privileged port numbers and thus not usable for the license manager since all users must be able to access the port. After you edit the license.dat
file, save it. Do a ps
, check for any lmgrd
processes running, use the {LM}/bin/lmdown
command to stop them. If thelmdown
command fails for any reason you may kill lmgrd
with a -15
signal (signal 15 stands for sigterm
and will cause lmgrd
to shutdown gracefully and cleanly). Remove /tmp/lmgrd.log
. Refer to topic Topic 2 , No .
Continue to Topic 8 .
"Is there an entry in the log file that says bad code for BuilderXcessory?"
Basically the key you have installed is incorrect. Using ps
, check for any lmgrd
processes running and kill them with a -15
signal ( kill -15 lmgrdpid
). Go to /tmp
and remove lmgrd.log
. Go to the license.dat
file and compare the key on your fax to the key in the license.dat
file.
Verify also that the SERVER information in license.dat
matches the information your fax.
You can manually edit the license.dat
file to correct the activation key. Refer back to No . If the key on the fax is identical to the one in your license
. dat
file and you continually get this message in your log file please call ICS at 617.621.0060 and ask for ICS Technical Support.
Continue to Topic 9 .
"Is there an entry in the log file that says no licenses found?"
If you do not have license.dat
in /usr/local/flexlm/licenses
you must make sure the LM_LICENSE_FILE
environment variable is set to {pathname}/license.dat
. After you set the environment variable correctly (check this by doing a printenv
and looking for the LM_LICENSE_FILE
variable), do a ps
, check for any lmgrd
processes running, use the {LM}/bin/lmdown
command to stop them. If the lmdown
command fails for any reason you may killlmgrd
with a -15
signal (signal 15 stands for sigterm
and will cause lmgrd
to shutdown gracefully and cleanly). Refer to Topic 2 , No .
Continue to Topic 10 .
"Is there an entry in the log file that says not a valid server host?"
Do a ps
, check for any lmgrd
processes running and kill them with a - 15
signal ( kill
-15
lmgrdpid
). Check the SERVER lines in the license
. dat
file. Each server should be spelled correctly and each should have the correctlmhostid
for the appropriate SERVER hostname. You may want to compare SERVER lines listed on your fax with what is actually in your license.dat
file 2 . Also make sure that the hostname is in the /etc/hosts
file (or NIS equivalent) and that the hostname is spelled the same in both the hosts
file and license.dat
file. You may want to check the IP address of the hostname and make sure the value is valid. After you verify all of this, refer to No .
Continue to Topic 11 .
"Is there an entry in the log file that says cannot find ICSBX?"
Do a ps
, check for any lmgrd
processes running and kill them with a -15
signal ( kill
-15 lmgrdpid
). Removelmgrd.log
. Go to your license.dat
and examine the DAEMON ICSBX line. Go to where ICSBX
exists (identified on the DAEMON line). In the same directory as ICSBX
there should be a link called lmgrd
. This lmgrd
link should point to {BX}/bin/lmgrd
. If the DAEMON line is wrong, correct it. Refer to No .
Continue to Topic 12 .
"Is there an entry in the log file that says adding full feature license for Builder Xcessory?"
It seems that you are ready to run Builder Xcessory. Go to {BX}/bin
and type:
A process id will be returned. If the Palette window appears with the Motif widget set inside and there are no error messages in the Browser's message window then everything is fine. If a dialog box saying Can't Run Demo or Full Feature BX
appears, refer to "When starting BX does a dialog appear with the message: Cannot Run Demo Or Full Feature BX?" . If a dialog box saying No Full Feature Licenses Found - Do you wish to continue in Demo mode?
appears, refer to Topic 13 . If a dialog reading " All Licenses In Use (with a detailed description of who is using which Builder Xcessory license at which workstation
" appears, then refer to Topic 13 . If no BX windows come up when you start the application, then refer to Topic 16 . If when you start BX you receive the error message Cannot open display
, refer to Topic 17 . If you have started BX and theBrowser messages window displays " Cannot find app-defaults file
", then refer to Topic 18 .
You may have installed your activation key improperly. Refer to Topic 2 and review diagnostics.
"When starting BX does a dialog appear with the message: Cannot Run Demo Or Full Feature BX?"
If you are running Builder Xcessory and lmgrd
on the same machine, this means the license manager software is not running. Check the lmgrd.log
file for any errors and go to the appropriate topic heading in this document. If anylmgrd
processes are running, use the {LM}/bin/lmdown
command to stop them. If the lmdown
command fails for any reason you may kill lmgrd
with a -15
signal (signal 15 stands for sigterm
and will cause lmgrd
to shutdown gracefully and cleanly). If there are no familiar errors, refer to No and try restarting the license manager daemon. If you still get this error when starting BX, refer to "I'm still having trouble getting the software to work." .
If you are trying to run Builder Xcessory off a machine which is not one of the workstations listed on the SERVER lines in the license.dat
file, then the problem is likely that you cannot access the license.dat
file from the workstation on which you are trying to run BX. Builder Xcessory, therefore, cannot find a license server. Either NFS mount the directory where the license.dat
file exists on the workstation trying to run BX or copy the license.dat
file to a directory local to the workstation trying to run Builder Xcessory and set the LM_LICENSE_FILE
environment variable on that workstation to {pathname}/license.dat
. Then refer to Yes .
"When starting BX, does a dialog appear with the message: No Full Feature Licenses Found - Do You Wish To Continue In Demo Mode?"
The license software is running. If you do not have a full feature license to run Builder Xcessory you will always get this message and you will only be able to run the product in demo mode. If you wish to purchase a key after running the demo please contact your ICS sales representative at 617.621.0060 to purchase a full feature activation key.
If you have a full feature license, make sure you can get to the license.dat
file from your workstation. If you cannot get to the license.dat
file, follow the second part of Topic 13 or else continue on in this topic. If you have a full feature license, verify that the contents of the feature line in your license.dat
file are the same as the contents of the fax. You will see a section on the fax saying this line should now appear in your license.dat
file. Try running{BX}/bin/lmreread
. When you run lmreread
it should tell you that the nodes on the SERVER lines in thelicense.dat
file were informed. If this is true, than refer to topic 12.1 and follow those directions. If lmreread
tells you that it cannot connect to the license server, then the license manager daemon software is not running. Do a ps
and kill any lmgrd
processes running, use the {LM}/bin/lmdown
command to stop it. If the lmdown
command fails for any reason you may kill lmgrd
with a -15
signal (signal 15 stands for sigterm
and will cause lmgrd
to shutdown gracefully and cleanly). Then refer to No .
"When starting Builder Xcessory, do you get a dialog box that says: All Licenses In Use?"
This means that the license manager software is running and all of the full feature licenses are currently in use by the people specified in the list. When one of the users is finished using BX, the license will be freed up allowing you to run Builder Xcessory.
Continue to Topic 16 .
"I've read my license.dat file and I see the line which tells me a full feature Builder Xcessory license was added. I've started Builder Xcessory but no windows come up and no messages appear. What am I doing wrong?"
If your workstation is a stand-alone and is not connected to a network you might try setting the hostname on the SERVER line in the license.dat
file to be localhost
and then save the license.dat
file. After changing this in the license.dat
file do a ps command and if any lmgrd
processes are running, use the {LM}/bin/lmdown
command to stop them. If the lmdown command fails for any reason you may kill lmgrd
with a -15
signal (signal 15 stands forsigterm
and will cause lmgrd
to shutdown gracefully and cleanly). Refer to No and work forwards.
If you repeatedly get the same results after trying the above, refer to Topic 22 .
` "I've started Builder Xcessory and I receive an error `cannot open display'. What should I do?"
Type setenv DISPLAY <hostname>:0.0
Restart Builder Xcessory by following the directions provided under Yes . If you still get the message that you cannot open display when starting Builder Xcessory, refer to Topic 22 .
"The Palette comes up but Builder Xcessory can't find my app-defaults file."
If you are running under Open Windows, copy the Builder Xcessory app-defaults
file which is found in the directory {BX}/BuilderXcessory.<hostname>
into the file /usr/openwin/lib/app-defaults/BuilderXcessory
.
If you are running under X, copy the Builder Xcessory app-defaults file found in {BX}/BuilderXcessory
to/usr/lib/X11/app-defaults/BuilderXcessory
.
Restart the Builder Xcessory application. Refer to Yes .
"The Palette comes up empty and Builder Xcessory tells me it can't find the motif.wml file."
In the Builder Xcessory application defaults file, change the systemDirectory
resource to be the directory where you have installed the Builder Xcessory files. You will notice that in {BX}/wml
there is a file called motif.wml
. This file contains the widget descriptions for the OSF/Motif widgets on the Palette. If BX cannot locate this file, the Palette will be empty when you start BX.
"I want to check the resources that are being used when I run Builder Xcessory. Is there a quick way to do this so that I can make sure they are being read and that their values are what I believe them to be?"
If you are running under X11R4 or higher you can run:
If you are running under Open Windows Version 3.0 or higher you can run :
"I have multiple license.dat files or I'm running two programs that use lmgrd. What do I do?"
You may combine the license
. dat
files into one license file. Append the contents of each license
. dat
file into one master file called license.dat
. Make sure all of the licenses in the file use the GLOBEtrotter Software Flexible License Manager. Make sure you run the newest version of the Flexible License Manager. Version 3.0 is shipped with the Builder Xcessory.
"I'm still having trouble getting the software to work."
You can reach the ICS Technical Support staff at 617.621.0060. All users are entitled to one free hour of installation support that covers installation problems and general, non-programming questions. Support hours are from 9 am to 5 pm Eastern Time. Please have your support number ready. If you are placed into the voice mail system please be patient. Our support staff makes every effort to respond quickly and efficiently to all of our customers who need technical assistance.
Allows you to define, view, and manipulate parameter types available in your interface. Select Types from the Browser Managers menu to display the Type Manager:
To add a type, enter the name of the type in the Add Type text field at the bottom of the Type Manager and press return (or click the OK button to the right of the field). The type is added to your interface, and appears in the Type Manager. UIL names cannot be declared for User Defined types.
Select File from the Type Manager menu bar, either with the mouse or with a mnemonic, to display the Type Manager File menu:
Select Edit from the Type Manager menu bar, either with the mouse or with a mnemonic, to display the Type Manager Edit menu:
Builder Xcessory has the following types:
Note: You cannot delete user-defined types from the Type Manager if they are referenced in the current interface.
Note: User-defined types must be entered in ASCII text exactly as they should be output in C/C++ files. For example, you should enter "unsigned int" in the Add Type text field to declare an unsigned integer type for use in C/C++ procedures. Legal characters include alphanumeric characters, "_", "$", and "*".
The Type Manager lists all predefined and user defined types that exist in the interface. You can update this list immediately from the following locations:
Allows you to view and manipulate files used for output file placement and to create and edit a hierarchy of UIL output files.
Note: With the UIL File Manager, you can use the UIL files in conjunction with Builder Xcessory File Placement to save different parts of your interface in different UIL files. This is especially useful when you are localizing an internationalized application.
Icons appear to the left of a given file name if that file is Read/Only and/or modified. Select UIL Files from the Browser Managers menu to display the UIL File Manager:
Read-Only files are preceded by a lock icon. Builder Xcessory does not allow you to Save to a Read/Only file. You can change the File Name field (as described below) to write the file to a different path or file name that is not Read/Only.
The names of files modified since the last Save or Save As operation are preceded by a star icon. A Save or Save As operation clears the icon.
Select File from the UIL File Manager menu bar, either with the mouse or with a mnemonic, to display the following menu:
Select Edit from the UIL File Manager menu bar, either with the mouse or with a mnemonic, to display the following menu:
Displays the Path, in which the paths of all files in the Include File Hierarchy are displayed.
To change a file path, click on the file in the hierarchy, type the new path in the UIL File Manager Directory text field, and press return or click the Apply to File button.
This applies the currently selected (highlighted) path to the selected file. This feature provides an effective method to easily move files to different directories. For example, a Read/Only file can be made Read/Write by moving it to another directory.
Creates a new output file, referenced in an include statement in the file currently selected in the Include File Hierarchy.
To change the directory of the currently selected file to a new directory, edit the file name or the Directory text field and press return. If you change the value in the Directory text field, all files in the old directory will move to the new directory.
To change the directory of the currently selected file to another directory in the Path, select the appropriate entry under Path and press Apply to File.
In each case, the File Name text field will be updated for the currently selected file.
Displays a file selection box. Select the name of an existing file in this dialog and press return. The file will be referenced in an include statement in the UIL file currently selected in the Include File Hierarchy.
Select View from the UIL File Manager menu bar, either with the mouse or with a mnemonic, to display the UIL File Manager View menu:
Displays any logical names used when you enter a file name. Allows you to simultaneously view the data contained in the Include File Hierarchy and Directory Hierarchy view options.
The Include File Hierarchy illustrates which output files are included in which other files. For example, if file bar.uil is referenced in an include statement in the header of file foo.uil, then bar.uil is displayed to the right of foo.uil, connected by a line.
The Directory Hierarchy is a tree diagram of the directories to which the output UIL files are written. If you edit the path of a file, its relative position on the Directory Hierarchy changes. More than one "root" (left-most path) can be on this hierarchy.
The Path consists of the directories in which the output files will be searched for, with the top-most member searched first. Shuffle the position of the selected directory path in the Path by using the up and down arrows, and delete paths that are not referenced with the Delete button.
To change a file path, perform the following steps:
1. Click on the file in the hierarchy.
2. Enter the new path in the UIL File Manager Path field.
3. Press return or click the Apply to File button.
Select Apply from the UIL File Manager menu bar, either with the mouse or with a mnemonic, to display the UIL File Manager Apply menu:
The Apply menu options allow you to apply the UIL file placement described in the following sections.
To update the Resource Editor, use one of the following methods:
· Double-click on the object in the Browser.
· Click on the Update icon in the upper right corner (just below the menu bar) of the Resource Editor.
· Select Update from the Resource Editor View menu.
The Resource Editor displays different information depending on whether the update is for a widget instance, class instance or a class, as described in the following sections.
The final section of this appendix reprints the man pages of the several license manager user commands, courtesy of GLOBEtrotter Software, Inc.
lmdown
sends a message to every license daemon asking it to shut down. The license daemons write out their last messages to the log file, close the file, and exit. All licenses which have been given out by those daemons will rescinded, so that the next time a client program goes to verify his license, it will not be valid.
-c license_file Use the specified license file. If this switch is not specified, lmdown
looks for the environment variableLM_LICENSE_FILE
. If that environment variable is not set, lmdown
looks for the file/usr/local/flexlm/licenses/license.dat
. If no -c
option is specified, lmdown
looks for the environment variable LM_LICENSE_FILE
in order to find the license file to use. If that environment variable is not set, lmdown
looks for the file /usr/local/flexlm/licenses/license.dat
.
-q Quiet mode. If this switch is not specified, lmdown
asks for confirmation before asking the license daemons to shut down. If this switch is specified, lmdown
will not ask for confirmation.
lmgrd
is the main daemon program for the FLEXlm distributed license management system. When invoked, it looks for a license file containing all required information about vendors and features.
-c license_file
Use the specified license_file
. If this switch is not specified, lmgrd
looks for the environment variable LM_LICENSE_FILE
. If that is not set, lmgrd
looks for the file /usr/local/flexlm/licenses/license.dat
.
-t timeout Specifies the timeout interval, in seconds, during which daemons must complete their connections to each other. The default value is 10 seconds. A larger value may be desirable if the daemons are being run on busy systems or a very heavily loaded network.
-s interval Specifies the log file times tamp interval, in minutes. The default is 360 minutes.
lmstat
provides information about the status of the server nodes, vendor daemons, vendor features, and users of each feature. Information can be optionally be qualified by specific server nodes, vendor daemons, or features.
lmlist
lists the users of a specific feature, in much the same way as lmstat -f. lmlist
does not accept any command line options. In particular, it does not accept the -c
option; you must use the LM_LICENSE_FILE environment variable if you want lmlist
to use a license file other than/usr/local/flexlm/licenses/license.dat
.
-c license_file Use the specified license_file
. If this switch is not specified, lmstat
looks for the environment variable LM_LICENSE_FILE
. If that environment variable is not set, lmstat
looks for the file/usr/local/flexlm/licenses/license.dat
.
-f [feature] List all users of the specified feature(s).
-l [regular_expression] List all users of the features matching the given regular expression.
-s [server] Display the status of the specified server node(s).
-S [daemon] List all users of the specified daemon's features.
-t timeout Specifies the timeout interval, in seconds, during which daemons must complete their connections to each other. The default value is 10 seconds. A larger value may be desirable if the daemons are being run on busy systems or a very heavily loaded network.
lmremove
allows the system administrator to remove a single user's license for a specified feature. This could be required in the case where the licensed user was running the software on a node that subsequently crashed. This situation will sometimes cause the license to remain unusable.
lmremove
allows the license to return to the pool of available licenses.
-c license_file Use the specified license_file
. If this switch is not specified, lmremove
looks for the environment variable LM_LICENSE_FILE
. If that environment variable is not set, lmremove
looks for the file/usr/local/flexlm/licenses/license.dat
. If no -c
option is specified, lmremove
looks for the environment variable LM_LICENSE_FILE
in order to find the license file to use. If that environment variable is not set, lmremove
looks for the file /usr/local/flexlm/licenses/license.dat
.
lmreread
allows the system administrator to tell the license daemon to reread the license file. This can be useful if the data in the license file has changed; the new data can be loaded into the license daemon without shutting down and restarting it.
lmreread
uses the license file from the command line (or the default file, if none specified) only to find the license daemon to send it the command to reread the license file. The license daemon will always reread the original file that it loaded. If you need to change the path to the license file read by the license daemon, then you must shut down the daemon and restart it with that new license file path.
You can not use lmreread
if the SERVER node names or port numbers have been changed in the license file. In this case, you must shut down the daemon and restart it in order for those changes to take effect.
lmreread
does not change any option information specified in an options file. If the new license file specifies a different options file, that information is ignored. If you need to reread the options file, you must shut down the daemon and restart it.
-c license_file Use the specified license_file
. If this switch is not specified, lmreread
looks for the environment variable LM_LICENSE_FILE
. If that environment variable is not set, lmreread
looks for the file/usr/local/flexlm/licenses/license.dat
. If no -c
option is specified, lmreread
looks for the environment variable LM_LICENSE_FILE
in order to find the license file to use. If that environment variable is not set, lmreread
looks for the file /usr/local/flexlm/licenses/license.dat
.
The license.dat
file contains the information used by the FLEXlm network licensing package to determine what licenses are available at a particular site. The license.dat
file contains the following information:
· list of features enabled for this site
· list of featureset lines for this site
Some of the information in the license file is changeable by the system administrator at the end-user site, allowing him or her to configure the licensed software to fit into the appropriate environment.
FLEXlm programs and routines find the license file by an algorithm. See Finding the License File .
Each line in the license.dat
file starts with a keyword which identifies the information on that line. The keyword is one of SERVER, DAEMON, FEATURE, or FEATURESET.
The SERVER line is of the form:
The hostids from all of the server lines are encrypted into the FEATURE lines, so they can not be changed by the site administrator. The optional port-number field can be changed at any time. This allows the site administrator to select a port number which does not conflict with the other services, software packages, or FLEXlm vendors on his system. The site administrator can also change the nodename if he wishes, as long as the hostid does not change. On sites with multiple redundant servers, one of the servers is selected as the master node. If the order of the server lines is the same in the license files for all of the redundant servers, then the first server in the list will be the master; otherwise, the server whose name is alphabetically first will be the master.
The DAEMON line is of the form:
The site administrator can change the path field, which allows him to place the vendor daemon in any convenient location. The site administrator can also change the location of the options-file, which describes various options that the site administrator can modify (see l icense.opts(5)
).
The FEATURE line describes the features that are enabled for this site. None of the information in the FEATURE line is changeable by the site administrator.
The FEATURESET line is a vendor-optional line; some vendors may choose to use this line, some may choose not to use it. The FEATURESET line encodes the encryption codes of all of the features for the specified vendor. This line is not changeable by the site administrator.
Most programs which read the license.dat
file accept a command line option (typically -c
) which can be used to specify the location of the license file if other than /usr/local/flexlm/licenses/license.dat
. If no command line switch is given, then the value of the environment variable LM_LICENSE_FILE
will be used to find the license file. If neither of these is specified, the default location, /usr/local/flexlm/licenses/license
. dat
, will be used.
The LM_LICENSE_FILE
environment variable can be used to specify a number of different license files. Set the environment variable to a single string that contains all of the license file paths separated by colons.
Here is an example of a license.dat
file:
This example illustrates the license file for a single vendor with two features, and a set of three server nodes, any two of which must be running for the system to function.
The license.opt
file contains optional information supplied by the system administrator at the end-user site. This information can be used to tailor the behavior of the license daemons. The options file can contain the following information:
· reserved license information
Lines beginning with an octothorp (#) are ignored, and can be used as comments.
There is no default location or name for the options file; it is only active if it has been specified in the license
. dat
file as the fourth argument on the DAEMON line. Note that if there are multiple DAEMON lines in the license
.dat
file, then there can be multiple options files, one for each DAEMON line. Not all of the lines in an options file refer to a feature, so the site administrator MUST set up separate options files in order to use the NOLOG and REPORTLOG features.
Each line in the options file starts with a keyword which identifies the information on that line. The keyword is one of RESERVE, NOLOG, GROUP, INCLUDE, EXCLUDE, TIMEOUT, or REPORTLOG.
The RESERVE line is of the form:
The RESERVE command reserves the specified number of licenses for the specified user, host, display, or group.
The NOLOG line is of the form:
NOLOG causes messages of the specified type to be filtered out of the daemon's log file. Specifying a NOLOG option will reduce the amount of output to the log file, which can be useful in those cases where the log file grows too quickly.
The GROUP line is of the form:
The GROUP command is used to define collections of users, which can then be used in RESERVE, INCLUDE, or EXCLUDE commands.
The INCLUDE and EXCLUDE commands are of the form:
INCLUDE and EXCLUDE are used to specify which users (or hosts, displays, or groups) are allowed to use a particular feature. Any user who is EXCLUDEd from a feature will not be able to use that feature. Specifying an INCLUDE line has the effect of excluding everyone else from that feature; thus, only those users specifically INCLUDEd will be able to use that feature.
The TIMEOUT line is of the form:
The TIMEOUT command is used to set up a minimum idle time after which a user will lose his license if he is not using it. This allows the site administrator to prevent users from wasting a license (by keeping it checked out when they are not using it) when someone else wants a license.
The REPORTLOG line is of the form:
REPORTLOG tells the daemon that to create a log file suitable for use with the FLEXlm report writing tools. This log file maintains more detailed information than the standard log file, but is not meant to be human readable. If the filename starts with a plus character (+), the file will be opened in append mode.
The Builder Xcessory extended editors allow you to modify resources and apply values for the same resource to any number of widgets or objects. Before using an editor, confirm that the currently selected object is the widget you want to set.
Each extended editor has some subset of the following resource placement options:
Value hardcoded and cannot be overridden by application defaults or X Resource Database. |
|
Value written to a defaults file and can be overridden by the X Resource Database. |
|
Takes a constant as its value. This setting displays a list in which every existing constant of the appropriate type is displayed. Value is hardcoded and cannot be overridden by application defaults. |
|
Takes an identifier from a displayed combination box as its value. Value is hardcoded and cannot be overridden by application defaults. |
|
Takes an expression as its value. The value is hardcoded and cannot be overridden by the application defaults. See Expressions for more detailed information. |
|
Resource is one of a set of resources in the style that has been applied to the widget. Unless the resource was set with a style, this option is not present on the option menu. |
|
Allows you to view and modify a widget instance's resource when the Resource Editor is updated for the class instance in Instances View. Can be used in conjunction with any other setting except None and Style. |
The resource that you are setting or changing is identified in the title bar of the editor. As long as the editor for this resource is displayed, you cannot type a value into the resource field on the Resource Editor.
If you select a new widget instance and press Apply, the Resource Editor sets the value for the new instance.
For example, assume you used the Color Editor to set the background of one widget to red. You can then select another widget, click Apply on the Color Editor, and set the background of that widget to red.
The View menu allows you to update the Resource Editor for the selected object, change the order in which resources are displayed, and display or hide the Resource Editor Toolbar, Search Bar, and Header Data text fields, as well as change the set of resources displayed on the Resource Editor.
Select View from the Resource Editor menu bar to display the View menu:
The following sections describe how these toggle settings customize the set of resources displayed in the Resource Editor.
Updates the Resource Editor to display the resource values for the selected object. Double-click on the instance name in the Browser or on the object in the application to update the Resource Editor.
Adds or removes a panel at the bottom of the Resource Editor, containing the Find Resource text field and two arrow buttons.
In the Find Resource text field, specify the string you wish to search for in the Resource Editor resource list. Once you establish a search direction by clicking an arrow button or pressing enter, the list is searched dynamically as you enter text. When you type "text" the search begins by finding the first instance of "t", then "te", and so forth.
The search is case insensitive, wraps around the list, and is terminated with a beep and a message posted to the Browser Message Area in the event that the string is not found.
Displays the Resource Editor Toolbar. The Resource Editor Toolbar is displayed just below the Resource Editor menu bar.
Add a menu item to the Toolbar by pressing the Shift key and selecting the item from its menu. For example, to add Update to the Toolbar:
1. Confirm that the Toolbar is being displayed. If not, select Show Toolbar from the Resource Editor View menu.
2. Hold down the Shift key and select Update from the Resource Editor View menu.
The Resource Editor resource list contains all resources supported by the currently selected object.
The Resource Editor resource list contains all simple resources for the currently selected object. Simple resources are the minimum resources necessary to set when creating a prototype (such as, foreground, background, and labels).
The Resource Editor resource list contains all programmer resources for the currently selected object. Programmer resources are the resources you are most likely to set when creating an interface (such as, callbacks and labels).
When set, the Resource Editor resource list contains all resources for the currently selected object which have been modified from the default resource value for the class.
When set, the Resource Editor resource list contains all "not-equal resources" for the currently selected objects. If you have selected two or more instances, the Resource Editor will display only the resources for which the multiply-selected instances have different values.
ViewKit ObjectPak classes are added to the Palette when you select ViewKit as the current language. Initially, ViewKit ObjectPak classes are grouped in the following folders:
· Dialogs
· Menus
· Components
The following sections provide descriptions of each ViewKit ObjectPak class in alphabetical order (refer to the ICS ViewKit ObjectPak Programmer's Guide for more detailed information):
Busy Dialog
Description
The VkBusyDialog class supports a busy dialog (also called a working dialog in OSF/Motif) that is displayed when the application is busy. Used by the VkApp object to display a busy dialog when you place the application in a busy state.
Notes
· By default, does not display any buttons because the busy dialog is intended to lock out user input during a busy state.
· Does not provide any additional functions other than those offered by the VkDialogManager.
Completion Field
Description
The VkCompletionField class provides a text input field component that supports name expansion. While typing in the field, if the user types a space, then the component attempts to complete the current contents of the field based on a list of possible expansions provided by the application.
Notes
Derived from VkComponent.
Error Dialog
Description
The VkErrorDialog class supports standard OSF/Motif error dialogs. Use to inform the user of an invalid action (such as entering out-of-range data) or potentially dangerous conditions (such as the inability to create a backup file).
Notes
· Messages required in the error dialogs should not require any decision by the user.
· Does not provide any additional functions other than those offered by the VkDialogManager
Fatal Error Dialog
Description
The VkFatalErrorDialog class supports an error dialog that terminates the application when the user dismisses it. Use for those errors from which your program cannot recover, such as when an application terminates because it cannot open a necessary data file.
Notes
· Messages required in the error dialogs should not require any decision by the user.
· Does not provide any additional functions other than those offered by the VkDialogManager
Generic Dialog
Description
The VkGenericDialog class provides a convenient interface for creating custom dialogs that use the ObjectPak interface. Custom dialogs that you derive from this class automatically support caching and all other features supported by VkDialogManager. Creating an instance of this class automatically creates a subclass of VkGenericDialog.
Notes
· An abstract subclass of VkDialogManager.
· You can post and manipulate your custom dialogs using the functions provided by VkDialogManager.
· By default, ObjectPak dismisses your dialog when the user clicks on either the OK or Cancel button and continues to post the dialog when the user clicks on Apply.
Graph
Description
The VkGraph class displays and manipulates complex arc-and-node graphs. The graph can be disconnected and contain cycles.
Notes
· Can arrange the nodes horizontally or vertically.
· Can change the orientation interactively.
· Provides controls for interactive zooming, node repositioning, and node alignment.
Help Pane
Description
The VkHelpPanel class provides a simple user interface to a help system. A subclass of VkSubMenu, automatically provides five standard menu items. You must link an external help system to your application to use Help Pane.
Notes
· You can create a VkHelpPane object and add it to another menu.
· You can use the functions provided by VkSubMenu to add custom Help menu items and delete predefined Help menu items.
Info Dialog
Description
The VkInfoDialog class supports standard OSF/Motif information dialogs. Use to display useful information, except error messages.
Notes
· Messages required in the error dialogs should not require any decision by the user.
· Does not provide any additional functions other than those offered by the VkDialogManager.
Interrupt Dialog
Description
The VkInterruptDialog class supports an interruptible busy dialog that you can substitute for the normal busy dialog. Posts a dialog that includes a Cancel button that the user can click on to cancel the current action.
Notes
· You are responsible for cleanup operations required by your application if the user interrupts a process before it is finished.
· Do not directly post and unpost the interruptible busy dialog.
Menu Action
Description
The VkMenuAction class provides a selectable menu item that performs an action. Implemented as a PushButtonGadget. Associated with a callback function that performs an operation and, optionally, a callback function that undoes the operation.
Notes
Provides public functions in addition to those implemented by VkMenuItem.
Menu Bar
Description
The VkMenuBar class provides a menu bar designed to work with VkWindow and some member functions for installing a VkMenuBar object as a menu bar.
Notes
Supports all functions provided by VkMenu class.
Menu Confirm First Action
Description
The VkMenuConfirmFirstAction class provides a selectable menu item that performs an action. When the user selects this menu item type, the application posts a question dialog requesting confirmation. Performs the action only when user confirmed.
Notes
· Derived from VkMenuAction.
· Intended for irrecoverable actions, such as deleting a file.
· Does not support undo callback functions.
Menu Label
Description
The VkMenuLabel class provides a non-selectable label as a menu item. Implemented as a LabelGadget.
Notes
Does not provide any public functions other than those implemented by VkMenuItem.
Menu Separator
Description
The VkMenuSeparator class provides a non-selectable separator as a menu item, and is implemented as a SeparatorGadget.
Notes
Does not provide any public functions other than those implemented by VkMenuItem.
Menu Toggle
Description
The VkMenuToggle class provides a two-state toggle as a menu item. Exhibits simple checkbox behavior unless you add a group of toggles to a VkRadioSubMenu object to enforce radio behavior.
Notes
· Derived from VkMenuAction.
· Provides functions for setting and retrieving the toggle state in addition to the public functions provided by VkMenuItem.
Menu Undo Manager
Description
The VkMenuUndoManager class provides an easy method for users to undo commands that they issue to you application. You add a single menu item to one of your application's menus to create a user interface to Undo Manager. You can use the undo manager to support undoing any command, whether the user issues the command with a menu or with other interface methods.
Notes
· By default, provides multi-level undo support.
· Keeps commands on a stack.
· Must exist in an application if undoCallback is set on any menu item.
Option Menu
Description
The VkOptionMenu class supports option menus that can be used anywhere in your interface.
Notes
Automatically visible when created.
Outline
Description
The VkOutline class displays a textual outline and automatically indents items according to their depth in the outline.
Notes
· Derived from VkComponent.
· If space is insufficient to display the entire outline, automatically displays a scrollbar.
· Displays control icon to the left of each outline item that contains sub-items.
Pie
Description
The VkPie class displays data as a pie chart.
Notes
· Derived from VkMeter.
· Can be fixed size or attempt to resize itself dynamically as it requires more or less room to display the items it contains.
Popup Menu
Description
The VkPopupMenu class supports popup menus that you can attach to one or more widgets in your application. Will pop up automatically when the user clicks on any of those widgets with the right mouse button.
Notes
· Has four different constructors.
· Can also pop up the menu programmatically if you have not attached the popup menu to a widget.
Progress Dialog
Description
The VkProgressDialog class displays a progress meter with a percent complete scale.
Notes
Derived from VkDialogManager.
Prompt Dialog
Description
The VkPromptDialg class supports standard OSF/Motif prompt dialogs that allow the user to enter a text string. Use when you must prompt the user to enter a single piece of information.
Notes
By default, displays only the OK and Cancel buttons. Displays the Apply button only when you provide a callback for that button.
Question Dialog
Description
The VkQuestionDialog class supports standard OSF/Motif question dialogs that allow the user to select among simple choices by clicking on push buttons.
Notes
· By default, displays only the OK and Cancel buttons. Displays the Apply button only when you provide a callback for that button.
· Does note provide any additional functions other than those offered by VkDialogManager.
Radio Sub Menu
Description
The VkRadioSubMenu class supports pull-down menu panes, and intended to support one-of-many collections of VkToggleItem objects. Use as menu panes within a menu bar, or as cascading, pull-right menu in a popup or other pull-down menu.
Notes
· Derived from VkSubMenu.
· Can add to any VkMenuBar, VkPopupMenu, or VkSubMenu by calling their addRadioSubmenu() member functions.
Repeat Button
Description
The VkRepeatButton class provides an auto-repeating push button. Activates when the user clicks on the push button, and begins repeating at a given interval. Deactivates when the user releases the push button.
Notes
· Constructor takes three arguments.
· Derived from VkComponent.
Simple Window
Description
The VkSimpleWindow class supports a top-level window that does not include a menu bar along the top of the window and creates a popup shell as a child of the invisible shell created by your application's instance of VkApp. Also creates an XmMainWindow widget as a child of the popup shell. Sets up various properties on the shell window and provides simple hooks for window manager interactions.Registers its windows with the application's VkApp instances to support application-wide services (for example, setting the cursor for all application windows).
Notes
All top-level windows in a ViewKit application must be instances of VkSimpleWindow, VkWindow, or a subclass of one of these classes.
Note: The Make Class dialog is automatically displayed when you click on Simple Window from the Palette.
Sub Menu
Description
The VkSubMenu class supports pull-down menu panes that can be used within a menu bar, or as a cascading, pull-right menu in a popup or other pull-down menu. You can add a sub menu to any type of menu by calling the menu's addSubmenu() member function.
Notes
· Typically does not require instantiation.
· Provides additional public member functions.
Tabbed Deck
Description
The VkTabbedDeck class is a manager class that displays only one child at a time. Each child has an associated tab. Selecting a tab displays the associated child. Set the Generate VkTabbedDeck Source Code toggle on the Classes tab of the ViewKit Generation Preferences panel (Browser:Options:Code Generation Preferences) to cause Builder Xcessory to generate this code. See Toggle options for more detailed information.
Notes
· This class was added to ViewKit as of version 1.3.
· Build Xcessory provides source code to this class for users of ViewKit prior to version 1.3.
Tab Panel
Description
The VkTabPanel class displays a row or column of overlaid tabs horizontally. The tab can contain text, a pixmap, or both. Allows the user to click on a tab with the left mouse button to select the tab.
Notes
· Derived from VkComponent.
· One tab is always selected and appears above the others.
· You can register callback functions to perform actions based on the tabs selected.
Tick Marks
Description
The VkTickMarks class displays a vertical set of tick marks. Most frequently used next to a vertical Motif XmScale(3) widget. By default, right-justifies its tick marks and displays its labels to the left.
Notes
· Derived from VkComponent.
· Can be configured to left-justify its tick marks and display its labels to the right.
VuMeter
Description
The VkVuMeter class is a component for displaying a segmented meter and presents a vertical set of segments as a meter display.
Notes
· Value ranges from 0 to 110, with 0 showing the most segments and 110 showing the least.
· Can have a fixed size or attempt to resize itself dynamically.
Window
Description
The VkWindow class supports a top-level window that includes a menu bar along the top of the window and creates a popup shell as a child of the invisible shell created by your application's instance of VkApp. Also creates an XmMainWindow widget as a child of the popup shell. Sets up various properties on the shell window and provides simple hooks for window manager interactions. Registers its windows with the application's VkApp instances to support application-wide services (for example, setting the cursor for all application windows).
Notes
· Derived from VkSimpleWindow.
· All top-level windows in a ViewKit application must be instances of VkSimpleWindow, VkWindow, or a subclass of one of these classes.
Note: The Make Class dialog is automatically displayed when you click on Window from the Palette.
· The subclass created in Builder Xcessory includes several common menu entries in the menu bar, which you can delete or change as necessary.
Warning Dialog
Description
The VkWarningDialog supports standard OSF/Motif warning dialogs. Use to warn the user of the consequences of an action, such as warning the user that an action will irretrievably delete information.
Notes
· By default, the dialogs contain only an OK button.
· Does not provide any addition functions other than those offered by the VkDialogManager.
Some resources, particularly many of the constraint resources, take a widget instance name as a value. The Widget Editor displays a list of valid widgets.
Widget Editor
Above the widget list is a label describing the relationship between the selected widget and the widgets in the list. To choose a widget, click on the widget name.