GLG 3.1 Release: New Features and Enhancements

Overview
New Product: GLG HMI Configurator
Simplified Choices of Predefined Dynamic Actions
Support for Alarms and Alarm Browser
Export Tags and Public Properties
Enhanced Resource and Tag Browsing
Simplified Access to Attribute Dynamics and Tags
Enhanced Attribute Dynamics Editing Interface
Sticky Mode for Moving Dynamics with the Object
Disable Dynamics for Editing Option
Support for Icons with Transparent Background
New Intermediate API Library
New Run Mode Screen
Enhanced UTF-8 Support
Persistency Support for Multi-Line Graphs
255 Color Entry Option and Custom Color Palettes
Mouse Position Display
Simplified SubDrawing Editing Mode
New Range Transformation Options
Discrete Path Transformation
New OEM and Editor Customization Features
Custom Dynamics, Custom Color Palette and Custom Components
OEM Editor Extensions
Custom Data Browser DLL
Custom Editor Options and Dialogs Extension DLL
Custom Run Mode DLL
New Widgets
Map Server and GIS
Miscellaneous Editor Interface Enhancements
Miscellaneous New Toolkit Features
Performance Improvements
Bug Fixes
Bug Fixes in the Java Version of the Toolkit

Overview

The new 3.1 release of the GLG Toolkit introduces a number of new features, including a new HMI Configurator product, OEM extensions for adding custom functionality to the GLG editors, new Run mode controls, alarms, predefined dynamics options for common dynamic actions, persistency support used for configuring multi-line graphs, an ability to define custom dynamics options and components with exported public properties, as well as many other features and interface enhancements.

New Product: GLG HMI Configurator

The HMI Configurator is a simplified HMI editor intended for use by the end-users. While the GLG Graphics Builder may be used by an application developer or systems integrator for creating elaborate visual components with complex dynamics, the goal of the HMI Configurator is to provide an end-user with an easy-to-use editor to compose custom displays using a library of pre-built components with a minimal learning curve. It can also be used to edit application drawings created in the GLG Graphics Builder.

With the HMI Configurator, an operator can create and configure HMI displays by dragging and dropping pre-built components from the provided component libraries, as well as draw any graphical primitive such as a polygon, arc or text object. An operator can edit the visual appearance of objects in a drawing, browse and select data tags, as well as prototype the resulting HMI and animate it with live real-time data.

The HMI Configurator supports configurable menus and icons; it may be extended via custom DLLs to add custom dialogs with application-specific editing actions and integrate custom data browsing capabilities. The Configurator may be configured to limit editing of visual components to the component's properties exposed by the application designer, use a custom color palette and custom dynamics supplied by the OEM vendor.

The HMI Configurator may be incorporated into an application to provide the end-user with an ability to create and edit HMI displays.

Simplified Choices of Predefined Dynamic Actions

Choices of simplified dynamics for the most common dynamic actions, such as Blinking, Color Threshold and many others, were added to the Builder. Each of the predefined dynamics uses several stock transformations wired together to perform a predefined action. Predefined dynamics allow the user to utilize complex dynamic actions without a need to assemble them from scratch. Predefined dynamics use the newly introduced Public Properties feature to present the user with only the properties that are essential for the selected dynamics type. The choices of the available predefined dynamics may be configured and new predefined dynamics types may be added using the Enterprise version of the Graphics Builder.

The Show Predefined Dynamics First option of the Options, Dynamics Options menu controls the order in which the predefined and stock dynamics options are displayed. It may also be configured via the glg_config file.

The Full Display of Predefined Dynamics option of the menu may be used to toggle the display of the predefined dynamics between the simplified view that shows only the exported public properties, and the complete view that shows the stock transformations used to implement the dynamic action.

Support for Alarms and Alarm Browser

Alarms may be added to any data attribute to notify the application about an out-of-range value. Several types of alarms are provided, including Range alarms with the High and Low parameters and a Change alarm which notifies an application about any change of the attribute's value. An application is notified about alarm conditions via alarm messages received by an alarm listener added in the application code.

The alarms are accessed via the Attribute or Resource Object dialog, as well as the fast access alarm buttons on the right side of an attribute row in the Properties dialog.

An Alarm Browser provided in the Builder allows the user to display alarms defined for the selected object or for the whole drawing.

Export Tags and Public Properties

A concept of public properties was introduced to allow system integrators create components with predefined functionality and simplified list of properties, public properties, visible to the end user. The public properties are implemented via export tags. An export tag is a new type of tag which can be added to any object attribute to mark it as an exported public property. Export tags functionality is available in the OEM mode of the Enterprise Edition of the Builder.

A list of an object's public properties can be viewed in the Public Properties dialog. In the HMI Configurator, the Public Properties dialog is automatically displayed for objects and components that have public properties defined, while the conventional Properties dialog is displayed for the rest of the objects and graphical primitives.

The Palettes, HMI Editor Widget Samples menu option of the Graphics Builder displays a palette with samples of custom components with public properties. The Object, Public Properties menu option can be used to display public properties of the selected component.

The export tags may also used to implement custom predefined dynamic actions, as described in the Simplified Choices of Predefined Dynamic Actions section above. An application can use the GlgQueryTags method to obtain a list of all public properties exported via export tags.

Enhanced Resource and Tag Browsing

The Builder's interface was changed to make resource and tag browsing more convenient. In the new interface, the Resource and Tag Browsers stay open when the user selects new object, showing the object's resources or tags. This allows the user to browse resources and tags of different objects, clicking on an object to see its resources or tags. If no object is selected, the resources or tags of the whole drawing will be shown.

The new browsing interface eliminated the need for two Resource buttons, one for the selected object and one for all resources of the drawing. In the new release, a single resource button serves both cases based on the object selection. The new browsing interface is also used by an alarm browser.

Simplified Access to Attribute Dynamics and Tags

The "X" mark used in the Properties dialog to indicate a presence of attribute dynamics is now a button that brings editing dialog for the dynamics. The button is displayed on the right side of the attribute row if the attribute has dynamics attached.

If the attribute has tags or alarms, the "T" and "A" buttons will also be displayed to indicate a presence of a tag or alarm, and may be used as shortcuts for accessing the tag and alarm directly.

Enhanced Attribute Dynamics Editing Interface

The Edit Dynamics dialog is now modal: when it is open, the Attribute Dialog is disabled and dimmed to better indicate the current editing focus. The caption of the Edit Dynamics dialog shows the type of the attribute dynamics as well as the nesting level of the transformation, to facilitate editing of multi-level attribute transformations.

If dynamics attached to an attribute, such as List or Format, overrides the value of the attribute, the value of the attribute is disabled for editing in all dialogs to indicate the presence of the overriding attribute dynamics, and the current transformed value is displayed in the Properties dialog.

The attributes with the overriding attributes dynamics are also automatically skipped when objects are edited with the Edit Toolbox to preserve dynamically assigned values.

All these new options can be disabled via the glg_config file.

Sticky Mode for Moving Dynamics with the Object

When an object with a rotate, scale or other dynamics is moved, it may be desirable to move the center of the rotation or scaling together with the object. This is the case when the object needs to rotate around its center. The Sticky Mode option may now be used to move the center and other control points of the object's dynamics together with the object.

If the object has rotation dynamics that rotate the object around its center, the Sticky Mode setting will keep the rotation center in the center of the object when the object is moved or resized. The Sticky Mode is set on per object basis and is a default for the newly created objects in the new version. This may be changed via the glg_config file.

The Builder's default for displaying control points of the selected object has changed to display both the control points of the object as well as the control points of any geometrical dynamics attached to the object. This is controlled by the Options, Selection Options, Control Points Display menu and may also be configured via the glg_config file.

Disable Dynamics for Editing Option

This option may be used to disable all geometrical dynamics attached to the object when the object is selected to simplify editing the object's geometry. When the dynamics are temporarily disabled for editing, the object may be edited in its original, untransformed state. For example, a needle of a dial with rotation dynamics may be edited in its original, not rotated position, which makes it easier to resize its length and width.

The option is controlled by the corresponding entry in the Options, Selection Options menu, as well as the options in the glg_config file.

Support for Icons with Transparent Background

Icons and images with transparent background are now supported via the new TransparentColor attribute of the image object. The attribute specifies the color of the image to be rendered as transparent. The transparent color is specified by an RGB value. While the image object automatically detects transparent color of transparent GIF images, a different transparent color may also be specified.

Transparent image background is supported across all platforms, including Windows and X Windows, C/C++, ActiveX and Java, and both OpenGL and GDI drivers. The PostScript level 3 (default) is used to support transparent image background in the PostScript output.

The image transparency is also supported in the OpenGL driver by setting the image object's Visibility attribute to a fractional value.

New Intermediate API Library

In addition to the GLG Standard API and Extended API libraries, the GLG Intermediate API has been added to the release.

The Intermediate API is a royalty-free library that includes all of the functionality of the Extended API for object access and manipulation, except the dynamic object creation.

It includes methods for coordinate conversion and advanced object selection, traversing objects in the drawing, accessing elements of container objects, querying resources and public properties of an object or of the whole drawing, constraining, positioning objects and performing object layout, and many other methods.

The Intermediate API does not include the methods for creating, copying, adding and deleting objects from the drawing.

New Run Mode Screen

The new version uses a new Run Mode screen which displays its own toolbar with the Run Mode controls. The controls allow the user to change the update speed, as well as pause and resume the animation. The toolbar also contains fields that display performance related information, such as number of updates, elapsed time, updates per second and seconds per update statistics.

The toolbar's Update Rate Control changes the animation's update rate in increments, from the slowest (one update every 2 seconds) to the fastest, which updates as fast as possible, taking over all available CPU resources. The speed control makes it easier to test performance and CPU load at various update speeds.

Enhanced UTF-8 Support

In the new release, the UTF8Encoding flag has been added as a property of every S (string) data object. Previously, the encoding of the text string was determined by the UTF-8 flag of the font used to render the text object.

In the new version, the string's UTF8Encoding flag defines the encoding in which the string is stored and may be set regardless of the font used to render the string in the drawing. If the string and font encoding do not match, an encoding conversion will be automatically performed. If a string transformation mixes UTF8 and non-UTF8 strings, all necessary encoding conversions will be performed automatically as well.

If the string's UTF8Encoding flag is changed in the Builder, the string is automatically re-encoded from the UTF-8 to the system locale encoding, or vice versa. Since the string's UTF8Encoding flag does not depend on the font, it greatly simplifies creating and editing UTF8-encoded strings.

On Windows, the UTF8 strings may be rendered using UNICODE fonts, such as Arial Unicode MS. In the X Windows environment, the UTF-8 locale is also supported. In both environments, multi-byte locales are supported, and the settings of the Toolkit's default font table are adjusted according to the detected system locale. Refer to the Internationalization and Localization Support chapter of the GLG User's Guide and Builder Reference Manual for more information.

New API methods for loading drawings saved in an encoding different from the current locale were added to the Java version of the Toolkit. The new load methods have an additional charset_name parameter which specifies the charset to use for decoding the strings when the drawing is loaded. The GlgDefaultCharset global configuration parameter and CharsetName bean parameter were also added to provide an application with a way to set a default charset for decoding strings when loading drawings.

Persistency Support for Multi-Line Graphs

A new persistent mode allows the user to configure line instances of multi-line graphs in the Builder and store the settings with the drawing. This also makes it possible to assign individual data tags to each line's Entry Point in the Builder, while previously it had to be done in the application code.

The new mode is implemented via the new Persistent attribute of the series object. The attribute may have the VOLATILE and PERSISTENT values.

255 Color Entry Option and Custom Color Palettes

In the new version the color RGB values can be entered in either the 0-1 (default) or 0-255 range familiar to the Windows users. The color entry and display mode is controlled by the options in the glg_config file. The 255 Color option controls color display and entry in the GLG Builder. Internally, as well as at the run time, the color RGBs still use values in the 0-1 range.

In addition to the rainbow color palette, a custom color palette can be used for color selection. The palettes can be switched by Ctrl-clicking on the color palette. The custom color palette displayed by default is just a sample; a different custom color palette with an application-specific colors can be supplied.

The mouse can be dragged over the color palette for a quicker color selection.

Mouse Position Display

The mouse position control was added to the Status panel in the lower right corner of the Builder. The control displays the mouse position in both the screen and world coordinates, and may be used as a ruler.

Simplified SubDrawing Editing Mode

The new Silent (Auto-Save) option in the Options, Subdrawing Traversal menu provides a simplified subdrawing editing mode. In this mode, the subdrawing is automatically loaded when the user traverses Down into the subdrawing, and the changes are automatically saved when the Up button is pressed to return to the main drawing. If the Verbose mode is used, the user is prompted to confirm every action, which may be confusing for the beginner users.

The Silent mode may also be activated via the SilentSDTraversing option in the glg_config file.

New Range Transformation Options

The Truncate option was added to the Range transformation to truncate out of range values to fit in the range. The gauge controls were changed to use Truncate=YES setting to make sure the needle does not go beyond the minimum and maximum dial angles. Graphs use Truncate=NO setting by default.

The new RangeCheck transformation may be used to change the state of an object when a value goes out of range. The transformation compares the value to High/Low and HighHigh/LowLow ranges and generates the output value that reflects the result of the comparison.

Support for the EnforceRange option was added to numerical text input objects with the GlgNText handler. If it is set, the out of range value will be truncated to fit in the range.

Discrete Path Transformation

A new Discrete parameter of the path transformation may be used to move an object to the discrete positions corresponding to the control points of the path. When Discrete is set to YES, the transformation's Factor parameter is used as an index of the path's control point at which to position the object. When it is set to NO, the Factor controls the object's continuous movement along the path, with 0 corresponding to the beginning of the path and 1 to the path's end.

New OEM and Editor Customization Features

Several new editor customization features were added to better support system integrators that need to customize the editor's appearance as well as extend the editor by adding custom data connectivity and application-specific dialogs. The editor customization is accomplished via the custom plugins implemented as DLL on Windows and shared libraries in the Linux/Unix environment.

The new editor customization features described below are supported on all platforms for all editions of the GLG Graphics Builder as well as the new GLG HMI Configurator product.

Custom Dynamics, Custom Color Palette and Custom Components

Predefined choices of custom dynamic actions may be added to both the Builder and HMI Configurator by editing the custom dynamics template drawing (custom_xform_templates.g) provided with the release.

A custom color palette with a predefined color scheme may be defined by editing the custom_color_palette.g template drawing provided with the release.

An OEM vendor can supply palettes of pre-built custom components with predefined functionality and simplified editing properties for use with either the Graphics Builder or HMI Configurator. The public properties are defined using the OEM mode of the Enterprise Edition of the Graphics Builder.

Refer to the OEM Customization chapter of the GLG User's Guide and Builder Reference Manual for more information on using these features.

OEM Editor Extensions

There are three OEM editor extensions supported via the plugin DLLs:

- Custom Data Browser DLL may be used for connecting to custom data and browsing available tags

- Editor Option DLL may be used to add or delete editor icons and add custom dialogs to the editor

- Run Mode DLL is used by the Run mode to animate the drawing with real data and handle user interaction. It may be used to implement a complete application and embed it inside the Graphics Builder or HMI Configurator.

Custom Data Browser DLL

A custom Data Browser DLL may be provided to connect to proprietary data sources, such as a process database, to browse available tags in the GLG editor. The DLL supports hierarchical browsing which allows connecting to different controllers and tag groups.

The Browse button in the Data Tag dialog opens a Data Browser that will use the supplied custom data DLL for selecting data tags. When a tag selection is made, the selected tag is inserted into the TagSource field of the data tag. The DLL is also used by the Data Browser widget available at the application runtime.

A sample of a Custom Data Browser DLL is provided in the editor_extensions/data_browser_example directory together with a run script.

Custom Editor Options and Dialogs Extension DLL

A custom Editor Options DLL may be provided for adding custom icons, menu options and dialogs with application-specific logic to the GLG editors. The DLL module may also be used to verify the drawing against a set of custom rules before saving it into a file, as well as remove unwanted editor icons and menu options.

The DLL has access to both the GLG Standard and Extended API methods to implement custom functionality. The API methods may be used to access properties of the selected object as well as other objects in the drawing.

A sample of a Custom Editor Options DLL is provided in the editor_extensions/custom_option_example directory together with a run script. The sample adds a custom toolbar icon, a few menu options, a custom dialog and implements custom actions for the added items.

Custom Run Mode DLL

A custom Run Mode DLL may be used to animate the drawing with real data in the Run mode of the GLG editor, as well as handle user interaction, object selection and custom run-time dialogs with an application-specific logic.

The module has access to a complete GLG API, both the Standard and Extended, making it possible to implement a complete application integrated with the GLG Graphics Builder or HMI Configurator. The application will function in the editor's Run mode, while the Edit mode may be used for editing the application's drawing.

For even further customization, the -run command-line option or the StartRun configuration file variable can be used to start the GLG editor in the Run mode. The -run-window command-line option or the RunWindow configuration file variable can be used to start the Run mode in a separate window, hiding the GLG editor's menus and toolbars. The Custom Editor Options DLL described above may be used to add custom menu options to the Run mode.

Since the module uses the GLG API supplied by the GLG editor's executable, it may use both the GLG Standard and the Extended API with no additional GLG libraries required. When the module is used with the GLG Graphics Builder or HMI Configurator, the editors provide the module with the Run-Time license for the Extended API.

A sample of a Custom Run Mode DLL is provided in the editor_extensions/custom_proto_example directory together with a run script. The sample animates tags and resources defined in the drawing, displays a custom run-mode dialog and shows an example of handling user interaction.

New Widgets

A new alarm level indicator, round button and flip switch were added to the Controls widget set.

A flow line template with an OpenGLMode parameter was added to the special widgets. The template can be used for both the OpenGL and GDI versions of the driver by setting the OpenGLMode parameter.

A FillDirection parameter was added to all valve widgets in the Process Control widget set to control each valve's fill direction.

The -sleep option was removed from all widget's animation commands to use the new integrated speed controls in the Run mode. Animation commands were added to the controls; the Run mode animation may be paused to test user input.

Map Server and GIS

Added the GlgGISGetDataset method to query a dataset object used by the GIS Object. The dataset object is used to dynamically change the attributes of the GIS layers displayed in the GIS Object as shown in the AirTraffic demo (the Toggle Layer Color toolbar icon).

Added an overflow detection for unreasonably huge zoom factors to improve real-time response. If the condition is detected, an error message is generated without increasing the map generation time.

Miscellaneous Editor Interface Enhancements

Added configuration file parameters to control various aspects of the Builder's behavior and default settings of various options.

Added version number support for environment variables and configuration files, making it more convenient to use multiple versions of the Toolkit on the same computer.

Changed Undo handling to make it a global action that does not require closing the currently open modal dialogs. More descriptive labels are now used to describe Undo actions for attributes and resources.

Added an ability to add, edit and delete dynamics of default attributes via resources, as well as to constrain and unconstrain them.

Enabled the use of value spinners for entering values of attributes and resources of D (double) type which were not covered previously.

Provided more descriptive captions for the dynamics, custom properties and other dialogs and added tooltips to all dialog elements.

Grouped Option menu choices using submenus.

Added support for browsing global configuration resources in the Builder's resource browser using the $config resource name.

Added -glg-editor-layout and other command line options to control editor dimensions, color palette, etc. Use -help option to print all available options to the terminal (or to the glg_error.log file on Windows).

Changed Snap To default to 20; disabled grid display in the Run mode.

Restored the original values (color, etc.) after deleting an attribute's list transformation.

Added button repeat to value and object rotation spinners on Windows, as well as to the directional buttons for the control point movement. Changed the buttons' type to ActOnPress to support button repeat.

Used pixel size for palette size and positioning, instead of making it relative to the Builder size, to better handle the case when the Builder is maximized. Made dialogs use pixel size as well, added the DialogScaleFactor configuration file variable that may be used to adjust (increase or decrease) the size of all dialogs according to the user preferences.

Miscellaneous New Toolkit Features

Added the GlgSetEditMode method to the Extended API to disable input objects for editing. Added the SetTraceViewport method to the GLG ActiveX Control on Windows; the method allows tracing events for a particular viewport (and its children) instead of the whole drawing.

Added the GlgTranslatePointOrigin method to the Extended and Intermediate APIs to translate screen coordinates of the pointer from one viewport to another.

Added a new LoadObject method for loading objects and drawings from a stream to the Java API.

Added support for the tooltip dynamics. A transformation may now be attached to the tooltip string to change it based on the state of the controlling parameter. Disabled an object tooltip if the tooltip string is NULL or an empty string.

Enabled multi-line tooltips based on HTML tags in the Java version of the Toolkit by using the Swing label to display the tooltip. Added GlgSwingTooltip global configuration resource to control the use of the Swing label. The resource may be set to 1 to use multi-line tooltips with HTML tags, or set to 0 to handle tooltips with dynamic transformations.

Added an automatic conversion of the "\" separator to "/" on Linux/Unix and Java, as well as a conversion of "/" to "\" for the file browser on Windows to simplify the cross-platform deployment of the GLG drawings.

Added the HEADER mark to the export file for strings and tags to avoid problems with the BOM (Byte Order Mark) added at the beginning of the file by Notepad on Windows.

Added support for setting the selected item in the menu with a radio style by setting the SelectedIndex resource of the GlgMenu interaction handler. Added InitSelectedIndex parameter to the GlgNOption interaction handler to define the item to be selected on the initial appearance.

Added RepeatStart and RepeatEnd button messages. When a spinner's value is adjusted using a button with a button repeat, the messages enable the application to handle only the final value change after the button is released.

Added Start/Stop/Reset messages to the GlgClock interaction handler to enable the application to start, stop or restart the timer programmatically.

Added the -font_size_change option to the gconvert drawing conversion utility. The option may be used to adjust the size of all text objects in the drawing. The new -set_utf8 and -reset_utf8 options may be used to set or reset the UTF8Encoding flag of all string attributes in a drawing.

Added -white_background and -black_background command line options to the DXF converter to set white or black background (default: gray). Improved handling of the DXF's auto color (#7), which is set to be the inverse of the background color.

Changed error message dialogs on Windows to use timers to avoid threading problems. Added the GlgSyncError global configuration variable to aid debugging.

Performance Improvements

Increased performance of the gradient rendering and filled dynamics in OpenGL by clipping the slow buffer clearing operations. For a scrolling bar graph, it increased the performance by a factor of 4.

Improved performance of the OpenGL rendering of scaled images.

Bug Fixes

Fixed SaveImage, WinPrint and SavePostscript actions to include images of native widgets.

Stored subdrawing filename as a recent drawing to avoid overwriting the drawing with the content of the subdrawing file on Save or Save All operations.

Enabled line graphs with 1 point.

Fixed reordering of children viewports in Java.

Fixed persistency of global configuration settings when using the GLG wrapper widget in X Windows. The settings are now preserved even if they are set before the widget is created.

Fixed PostScript printing of end caps of closed polygons and rectangles.

Improved handling of the MouseOver Highlight for invisible objects coinciding with visible objects, as well as for objects invisible due to their parents' Visibility set to OFF.

Enhanced handling of MouseOverState so that it can be used for making viewports visible on the MouseOver event.

Fixed erasing of a viewport when the visibility of its composite parent (such as a group) changes.

Fixed the problem of interfering between the GlgButton's tooltip and MouseOverState: previously, activation of the button's tooltip erased the button's MouseOver Highlight.

Improved mapping of fonts with the size=8 on Windows.

Fixed initial appearance of integrated native scrollbars with lesstif in X Windows environment: added a workaround for the lesstif's bug.

Made it possible to access named resources of a resource which itself was accessed via the default attribute name, such as Polygon1/FillColor/ColorIndex.

Changed viewport's hierarchy setup to reorder scrollbars to the front. This ensures that the scrollbars always appear on top of all children viewports.

Fixed the history object not to advance when the TagName or TagSource of a tag attached the history's EntryPoint changes.

Fixed error messages in a Font Browser in some X configurations related to using 0 in unused size fields. Improved handling fonts with the size field set to 0.

Fixed a problem of wrong viewport size in a widget after a hierarchy reset.

Fixed clipping problems when saving image and full image. Fixed rendering of text and images in children viewports when saving image using the OpenGL driver.

Improved pixel mapping fixed mapping of text objects and images in the OpenGL driver.

Fixed Print Configuration, Page Layout option for non-resizable drawings.

Added an overflow detection and correction when loading double values (Nan, 1.#QNAN, -1.#IND) for the Extended and ASCII save formats.

Bug Fixes in the Java Version of the Toolkit

Fixed round line caps for open polygons with coinciding end points and even line width.

Fixed rendering of objects with GradientColor being the same as FillColor.

Fixed drawing of viewports with cyclical linear gradient background.

Fixed propagation of the LineWidth and EdgeColor viewport attribute changes.