https://wiki.planimate.com/index.php?title=ReleaseNotes:Feature_Review_December_2009&feed=atom&action=historyReleaseNotes:Feature Review December 2009 - Revision history2024-03-28T14:36:34ZRevision history for this page on the wikiMediaWiki 1.39.5https://wiki.planimate.com/index.php?title=ReleaseNotes:Feature_Review_December_2009&diff=3388&oldid=prevRick at 10:02, 12 January 20102010-01-12T10:02:01Z<p></p>
<a href="https://wiki.planimate.com/index.php?title=ReleaseNotes:Feature_Review_December_2009&diff=3388&oldid=3387">Show changes</a>Rickhttps://wiki.planimate.com/index.php?title=ReleaseNotes:Feature_Review_December_2009&diff=3387&oldid=prevRick at 09:25, 12 January 20102010-01-12T09:25:23Z<p></p>
<a href="https://wiki.planimate.com/index.php?title=ReleaseNotes:Feature_Review_December_2009&diff=3387&oldid=3386">Show changes</a>Rickhttps://wiki.planimate.com/index.php?title=ReleaseNotes:Feature_Review_December_2009&diff=3386&oldid=prevRick at 07:43, 12 January 20102010-01-12T07:43:58Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en-GB">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 18:43, 12 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">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 </del>a <del style="font-weight: bold; text-decoration: none;">road </del>for <del style="font-weight: bold; text-decoration: none;">a train.<br>Loop Delay control and overrides.<br></del>Planimate <del style="font-weight: bold; text-decoration: none;">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>Retrieving a model's Data Object list which can be used as a data dictionary</del>.<del style="font-weight: bold; text-decoration: none;"><br>Retrieving </del>and <del style="font-weight: bold; text-decoration: none;">setting data objects in the model (tables, labels, attributes).<br>Initiating a broadcast to the model, with tuple attributes.<br>Receiving a broadcast from the model (as a “callback”) </del>with <del style="font-weight: bold; text-decoration: none;">attributes.<br>Embedding the PL window into a window provided by </del>the <del style="font-weight: bold; text-decoration: none;">DLL caller.<br>Creation </del>of <del style="font-weight: bold; text-decoration: none;">PBA DLLs from the PBA creation dialog</del>.<del style="font-weight: bold; text-decoration: none;"><br>Accessible either directly from C++ or under dotNET via an interface which provides higher level management of the PL DLL</del>.<del style="font-weight: bold; text-decoration: none;"><br>Supported for 32 and 64 bit PL versions.<br>Any PL can make itself a DLL, dont 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 </del>of <del style="font-weight: bold; text-decoration: none;">DLLs can be packaged into a PBA </del>in <del style="font-weight: bold; text-decoration: none;">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 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 </del>both <del style="font-weight: bold; text-decoration: none;">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 </del>and <del style="font-weight: bold; text-decoration: none;">application settings</del>. <del style="font-weight: bold; text-decoration: none;">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 </del>on <del style="font-weight: bold; text-decoration: none;">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 </del>this <del style="font-weight: bold; text-decoration: none;">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</del>.<del style="font-weight: bold; text-decoration: none;"><br>D</del><br></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">2009 was </ins>a <ins style="font-weight: bold; text-decoration: none;">busy year </ins>for Planimate<ins style="font-weight: bold; text-decoration: none;">, releases started at 5</ins>.<ins style="font-weight: bold; text-decoration: none;">21k </ins>and <ins style="font-weight: bold; text-decoration: none;">ended </ins>with the <ins style="font-weight: bold; text-decoration: none;">release </ins>of <ins style="font-weight: bold; text-decoration: none;">5</ins>.<ins style="font-weight: bold; text-decoration: none;">25c in late December</ins>. <ins style="font-weight: bold; text-decoration: none;">An exceptional number </ins>of <ins style="font-weight: bold; text-decoration: none;">groundbreaking achievements were made </ins>in both <ins style="font-weight: bold; text-decoration: none;">capability </ins>and <ins style="font-weight: bold; text-decoration: none;">usability</ins>. <ins style="font-weight: bold; text-decoration: none;">These are outlined </ins>on this <ins style="font-weight: bold; text-decoration: none;">page</ins>.<br></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[Category:<del style="font-weight: bold; text-decoration: none;">Release Note</del>]]</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">== Platform Core<br> ==</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">=== 64 Bit Version<br> ===</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">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></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">=== Planimate as-a-DLL<br> ===</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">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></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Retrieving a model's Data Object list which can be used as a data dictionary.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Retrieving and setting data objects in the model (tables, labels, attributes).</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Initiating a broadcast to the model, with tuple attributes.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Receiving a broadcast from the model (as a “callback”) with attributes.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Embedding the PL window into a window provided by the DLL caller.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Creation of PBA DLLs from the PBA creation dialog.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Accessible either directly from C++ or under dotNET via an interface which provides higher level management of the PL DLL.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Supported for 32 and 64 bit PL versions.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">*Recent PL&nbsp;releases can make themselves a DLL, you do not need a separate download.<br></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">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></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">== Track/Train Modelling<br> ==</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">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></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"><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> </ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Category:<ins style="font-weight: bold; text-decoration: none;">Release_Note</ins>]]</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"><br></ins></div></td></tr>
</table>Rickhttps://wiki.planimate.com/index.php?title=ReleaseNotes:Feature_Review_December_2009&diff=3326&oldid=prevRick: Created page with '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 …'2009-12-20T02:37:17Z<p>Created page with '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 …'</p>
<p><b>New page</b></p><div>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>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>Retrieving a model's Data Object list which can be used as a data dictionary.<br>Retrieving and setting data objects in the model (tables, labels, attributes).<br>Initiating a broadcast to the model, with tuple attributes.<br>Receiving a broadcast from the model (as a “callback”) with attributes.<br>Embedding the PL window into a window provided by the DLL caller.<br>Creation of PBA DLLs from the PBA creation dialog.<br>Accessible either directly from C++ or under dotNET via an interface which provides higher level management of the PL DLL.<br>Supported for 32 and 64 bit PL versions.<br>Any PL can make itself a DLL, dont 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 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><br />
<br />
[[Category:Release Note]]</div>Rick