![]() |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.