|
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.