ReleaseNotes:Feature Review December 2009: Difference between revisions

From Planimate Knowledge Base
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
2009 was a busy year for Planimate, releases started at 5.21k and ended with the release of 5.25c in late December. An exceptional number of groundbreaking achievements were made in both capability and usability. These are outlined on this page.<br>
2009 was a busy year for Planimate. Releases started at 5.21k and ended with the release of 5.25c in late December. An exceptional number of groundbreaking achievements were made in both capability and usability. These are outlined on this page.<br>  


== Platform Core<br> ==
== Modularity And Platform<br> ==


=== 64 Bit Version<br> ===
=== 64 Bit Version<br> ===


Planimate compiles as a 64 bit Windows application. This enables enormous tables and network model sizes, well beyond the 2GB limitation of the 32 bit version.<br>
Planimate compiles as a 64 bit Windows application. This enables enormous tables and network model sizes, well beyond the 2GB limitation of the 32 bit version.<br>  


=== Planimate as-a-DLL<br> ===
=== Planimate as-a-DLL<br> ===


A programming interface has been created enabling Planimate to be embedded in other applications with mechanisms to access the Planimate model's data and engine. Capabilities include:<br>
A programming interface has been created enabling Planimate to be embedded in other applications with mechanisms to access the Planimate model's data and engine. Capabilities include:<br>  


*Retrieving a model's Data Object list which can be used as a data dictionary.
*Retrieving a model's Data Object list which can be used as a data dictionary.  
*Retrieving and setting data objects in the model (tables, labels, attributes).
*Retrieving and setting data objects in the model (tables, labels, attributes).  
*Initiating a broadcast to the model, with tuple attributes.
*Initiating a broadcast to the model, with tuple attributes.  
*Receiving a broadcast from the model (as a “callback”) with attributes.
*Receiving a broadcast from the model (as a “callback”) with attributes.  
*Embedding the PL window into a window provided by the DLL caller.
*Embedding the PL window into a window provided by the DLL caller.  
*Creation of PBA DLLs from the PBA creation dialog.
*Creation of PBA DLLs from the PBA creation dialog.  
*Accessible either directly from C++ or under dotNET via an interface which provides higher level management of the PL DLL.
*Accessible either directly from C++ or under dotNET via an interface which provides higher level management of the PL DLL.  
*Supported for 32 and 64 bit PL versions.
*Supported for 32 and 64 bit PL versions.  
*Recent PL&nbsp;releases can make themselves a DLL, you do not need a separate download.<br>
*Recent PL&nbsp;releases can make themselves a DLL, you do not need a separate download.<br>


Planimate calling a DLL<br>Planimate has had the ability to call external code. This API now includes support for sending text and label list data to and from the DLL.<br>Certain types of DLLs can be packaged into a PBA in such a way that they are never exposed to the end user, giving security for valuable IP they may contain.<br>DLLs can directly refer and work with PL tables, avoiding copying/duplication of data across the interface.<br>DLLs can persist / hold state between runs of the engine.<br>
=== Planimate calling DLLs<br> ===


== Track/Train Modelling<br> ==
Planimate has had the ability to call external DLLs for a few years. The API now includes support for sending text and label list data to and from the DLL.<br>


Exposing more internal track management constructs to the modeller.<br>Support multiple track roads (up to 6 for now).<br>Modeller can determine roads a train is allowed to use at lookahead time.<br>Modeller can explicitly reserve a road for a train.<br>Loop Delay control and overrides.<br><br>
DLLs can now also directly refer and work with PL tables, avoiding copying/duplication of data across the interface.<br>


<br>Planimate calling an EXE<br>Wait for called EXE to complete option enables PL to wait but still look “alive” until another process it calls completes.<br>Option to “keep called EXE front” ensures PL stays behind another process window it has invoked.<br>Command lines can be built up from separate strings using '&amp;' to combine them, avoiding having to use label lists.<br>Standalone Applications (PBAs)<br>Can build 32/64 bit application/DLL from a 64/32 bit version if you have both PL EXEs<br>Can customise the icon an end user sees for an application beyond the default PL icon<br>Corporate environment support<br>Platform gives access to directories for user data and application settings. New OS versions and corporate environments can be very restrictive.<br>Temporary folder used for copy/paste as default might be read only.<br>PL can retrieve username / location information available on LDAP managed networks.<br>Existing ability to login as different user for PL and to map drives under that different user credential.<br>Model Editing<br>Consolidated View Panels, Dynamic Panels and Application Panels into one panel type.<br>Enable any panel to contain views to out-of-scope data.<br>Panels/portals can be moved around the model without having to copy them.<br>Sidebar menu more consistent.<br>New option editor and initial support for editing multiple objects simultaneously.<br>Dynamically resized panels and simple anchoring supported (for viewports as well now).<br>Planimate Help menu getting more quick references as more of PL's internals are becoming table defined. Assistance needed writing some descriptions which can be embedded as context help.<br>Runtime Engine Changes<br>Realtime timer broadcast has been replaced with a mechanism where a modeller can request a broadcast after a real period of time. This enabled internal cleanup and helps prevent runaway situations.<br>View properties can be set in code for different view types (table, log driven graphs etc).<br>Button “Check Parents For Broadcast” option introduced a new broadcast method into PL, in addition to scoped, panel only and global. In this mode PL tries to send the broadcast as scoped to the destination panel. If no listener is found, then the scope is “raised” to the parent and it tries again, and so-on. This is useful for modular models where a handler is in a sibling to the portal where the broadcast initiates.<br>Click and drag broadcasts can be received by the model (map display).<br>Free Text has been extended to attributes. Together with new routine operations for assigning and appending strings plus over 15 text manipulation functions, Planimate is more adept at processing textual data which in the past required messy label list operations.<br>Multi-line text display/editing in table views.<br>Column filters support multiple match terms.<br>Item table references can be assigned to a data object reference which is a table.<br>Rewrote the table view code for more consistent display and operation.<br>Partially transparent icons<br>Ability to intercept table cell click broadcasts before and after an edit; the edit can be blocked or allowed.<br>Dynamic combo list updates contents as text is typed.<br>Routine operations to access, clear and reapply column filters.<br>A new random number generator is now on by default.<br>Many speed optimisations; better uses of caches, recycling data structures and binary trees for lookups<br>Dataset 2<br>External files can be bundled into a dataset2 file. They will be compressed and encrypted along with the rest of the data and can be extracted on demand by the modeller.<br>A dotNET Dataset2 API is being developed.<br>A new label list option, settable at runtime, enables a modeller to determine whether labels are loaded by name or by index.<br>Name Space<br>Label list names were the first names to have new naming rules imposed. This exposed a number of issues which have discouraged further progression.<br>It is recommended that the new naming conventions be followed in any case where possible.<br>D<br>  
They can slso persist / hold state between runs of the engine, enabling the DLL&nbsp;to be more than just a stateless callable function.<br>
 
Certain types of DLLs can be packaged into a Planimate compiled application EXE&nbsp;in such a way that they are never exposed to the end user, contributing to security for valuable IP they may contain. This is achieved by loading the DLL&nbsp;directly from a memory image instead of a disk file.<br>
 
=== Calling EXE / Processes<br> ===
 
Command lines can be built up from separate strings using '&amp;' to combine them, avoiding having to use label lists.<br>
 
Planimate can now wait for a called EXE to complete, whilst still appearing “alive” until the called process completes. A new option to keep the called process at front ensures PL stays behind another process window it has invoked.<br>
 
=== Standalone Planimate Based Applications (PBAs) ===
 
Planimate has the capability to create a single executable (or callable DLL)&nbsp;that contains a model, the platform runtime and the resources (eg graphics) that it needs, all&nbsp; in one file. This has been enhanved to support building both 32 and 64 bit applications/DLLs from a 64/32 bit version, so long as you have both corresponding PL EXEs.
 
You can customise the icon an end user sees for an application beyond the default PL icon.
 
=== Corporate Environment Support ===
 
New references give access to the paths the operating system prefers for user data and application settings, particularly important with newer operating systems like Windows 7.
 
The system's temporary folder is used in more circumstances since the program directory is typically read only on corporate installs.
 
ght be read only.<br>PL can retrieve username / location information available on LDAP managed networks.<br>Existing ability to login as different user for PL and to map drives under that different user credential.<br><br>
 
<br>
 
== Track/Train Modelling<br>  ==
 
Exposing more internal track management constructs to the modeller.<br>Support multiple track roads (up to 6 for now).<br>Modeller can determine roads a train is allowed to use at lookahead time.<br>Modeller can explicitly reserve a road for a train.<br>Loop Delay control and overrides.<br><br>
 
<br>Model Editing<br>
 
=== Panel Consolidation<br> ===
 
View Panels, Dynamic Panels and Application Panels are now consolidated into one panel type. Any panel can contain views to out-of-scope data.<br>
 
Panels/portals can be moved around the model without having to copy them, preventing problems with copied object labels. <br>
 
The sidebar hierarchy view enables editing and moving of the portals and their subsystem panels.<br>
 
=== Option Editing<br> ===
 
A new option editor is now in place, replacing the 2 column left/right picker.<br>
 
Some initial support for editing multiple objects simultaneously.<br>
 
=== Dynamically Sized Panels<br> ===
 
Dynamically resized panels and simple anchoring is now supported for views (including viewports) enabling a panel layout to accomodate different window sizes/screen resolutions.<br>
 
=== Help Menu<br> ===
 
The Planimate Help menu is getting more quick references which are also used to feed content into this wiki.<br>
 
== Runtime Engine<br> ==
 
*Realtime timer broadcast has been replaced with a mechanism where a modeller can request a broadcast after a real period of time. This gives far more control over real time activities.
*View properties can be set in code for different view types (table, log driven graphs etc).<br>
*New “Check Parents For Broadcast” scope option for broadcasts, in addition to scoped, panel only and global. This enables broadcast handlers to be in a parent or sibling to a network node, reducing replicated code.<br>
*Click and drag broadcasts can be received by the model, very useful for creating interactive map displays.<br>
 
=== Text Handling<br> ===
 
Attributes and table columns can now be formatted for "Text". Together with new routine operations for assigning and appending strings, plus over 15 text manipulation functions, Planimate is more adept at processing textual data which in the past required messy and slow label list operations.<br>
 
<br>Multi-line text display/editing in table views.<br>Column filters support multiple match terms.<br>Item table references can be assigned to a data object reference which is a table.<br>Rewrote the table view code for more consistent display and operation.<br>Partially transparent icons<br>Ability to intercept table cell click broadcasts before and after an edit; the edit can be blocked or allowed.<br>Dynamic combo list updates contents as text is typed.<br>Routine operations to access, clear and reapply column filters.<br>A new random number generator is now on by default.<br>Many speed optimisations; better uses of caches, recycling data structures and binary trees for lookups<br>Dataset 2<br>External files can be bundled into a dataset2 file. They will be compressed and encrypted along with the rest of the data and can be extracted on demand by the modeller.<br>A dotNET Dataset2 API is being developed.<br>A new label list option, settable at runtime, enables a modeller to determine whether labels are loaded by name or by index.<br>Name Space<br>Label list names were the first names to have new naming rules imposed. This exposed a number of issues which have discouraged further progression.<br>It is recommended that the new naming conventions be followed in any case where possible.<br>D<br>
 
<br>  


[[Category:Release_Note]]
[[Category:Release_Note]]


<br>
<br>

Revision as of 20:25, 12 January 2010

2009 was a busy year for Planimate. Releases started at 5.21k and ended with the release of 5.25c in late December. An exceptional number of groundbreaking achievements were made in both capability and usability. These are outlined on this page.

Modularity And Platform

64 Bit Version

Planimate compiles as a 64 bit Windows application. This enables enormous tables and network model sizes, well beyond the 2GB limitation of the 32 bit version.

Planimate as-a-DLL

A programming interface has been created enabling Planimate to be embedded in other applications with mechanisms to access the Planimate model's data and engine. Capabilities include:

  • Retrieving a model's Data Object list which can be used as a data dictionary.
  • Retrieving and setting data objects in the model (tables, labels, attributes).
  • Initiating a broadcast to the model, with tuple attributes.
  • Receiving a broadcast from the model (as a “callback”) with attributes.
  • Embedding the PL window into a window provided by the DLL caller.
  • Creation of PBA DLLs from the PBA creation dialog.
  • Accessible either directly from C++ or under dotNET via an interface which provides higher level management of the PL DLL.
  • Supported for 32 and 64 bit PL versions.
  • Recent PL releases can make themselves a DLL, you do not need a separate download.

Planimate calling DLLs

Planimate has had the ability to call external DLLs for a few years. The API now includes support for sending text and label list data to and from the DLL.

DLLs can now also directly refer and work with PL tables, avoiding copying/duplication of data across the interface.

They can slso persist / hold state between runs of the engine, enabling the DLL to be more than just a stateless callable function.

Certain types of DLLs can be packaged into a Planimate compiled application EXE in such a way that they are never exposed to the end user, contributing to security for valuable IP they may contain. This is achieved by loading the DLL directly from a memory image instead of a disk file.

Calling EXE / Processes

Command lines can be built up from separate strings using '&' to combine them, avoiding having to use label lists.

Planimate can now wait for a called EXE to complete, whilst still appearing “alive” until the called process completes. A new option to keep the called process at front ensures PL stays behind another process window it has invoked.

Standalone Planimate Based Applications (PBAs)

Planimate has the capability to create a single executable (or callable DLL) that contains a model, the platform runtime and the resources (eg graphics) that it needs, all  in one file. This has been enhanved to support building both 32 and 64 bit applications/DLLs from a 64/32 bit version, so long as you have both corresponding PL EXEs.

You can customise the icon an end user sees for an application beyond the default PL icon.

Corporate Environment Support

New references give access to the paths the operating system prefers for user data and application settings, particularly important with newer operating systems like Windows 7.

The system's temporary folder is used in more circumstances since the program directory is typically read only on corporate installs.

ght be read only.
PL can retrieve username / location information available on LDAP managed networks.
Existing ability to login as different user for PL and to map drives under that different user credential.


Track/Train Modelling

Exposing more internal track management constructs to the modeller.
Support multiple track roads (up to 6 for now).
Modeller can determine roads a train is allowed to use at lookahead time.
Modeller can explicitly reserve a road for a train.
Loop Delay control and overrides.


Model Editing

Panel Consolidation

View Panels, Dynamic Panels and Application Panels are now consolidated into one panel type. Any panel can contain views to out-of-scope data.

Panels/portals can be moved around the model without having to copy them, preventing problems with copied object labels.

The sidebar hierarchy view enables editing and moving of the portals and their subsystem panels.

Option Editing

A new option editor is now in place, replacing the 2 column left/right picker.

Some initial support for editing multiple objects simultaneously.

Dynamically Sized Panels

Dynamically resized panels and simple anchoring is now supported for views (including viewports) enabling a panel layout to accomodate different window sizes/screen resolutions.

Help Menu

The Planimate Help menu is getting more quick references which are also used to feed content into this wiki.

Runtime Engine

  • Realtime timer broadcast has been replaced with a mechanism where a modeller can request a broadcast after a real period of time. This gives far more control over real time activities.
  • View properties can be set in code for different view types (table, log driven graphs etc).
  • New “Check Parents For Broadcast” scope option for broadcasts, in addition to scoped, panel only and global. This enables broadcast handlers to be in a parent or sibling to a network node, reducing replicated code.
  • Click and drag broadcasts can be received by the model, very useful for creating interactive map displays.

Text Handling

Attributes and table columns can now be formatted for "Text". Together with new routine operations for assigning and appending strings, plus over 15 text manipulation functions, Planimate is more adept at processing textual data which in the past required messy and slow label list operations.


Multi-line text display/editing in table views.
Column filters support multiple match terms.
Item table references can be assigned to a data object reference which is a table.
Rewrote the table view code for more consistent display and operation.
Partially transparent icons
Ability to intercept table cell click broadcasts before and after an edit; the edit can be blocked or allowed.
Dynamic combo list updates contents as text is typed.
Routine operations to access, clear and reapply column filters.
A new random number generator is now on by default.
Many speed optimisations; better uses of caches, recycling data structures and binary trees for lookups
Dataset 2
External files can be bundled into a dataset2 file. They will be compressed and encrypted along with the rest of the data and can be extracted on demand by the modeller.
A dotNET Dataset2 API is being developed.
A new label list option, settable at runtime, enables a modeller to determine whether labels are loaded by name or by index.
Name Space
Label list names were the first names to have new naming rules imposed. This exposed a number of issues which have discouraged further progression.
It is recommended that the new naming conventions be followed in any case where possible.
D