ReleaseNotes:Planimate 5.07 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search


  • NEW Routine operation "ExtractIntoFormat"
    This operation enables a sub string of a label to be extracted and either interpreted as a formatted value or placed into another list. Its parameters specify the reference to format (usually this would be a label) and starting and ending character positions.
    The characters are numbered from 1. If the ending character is 0, the last character in the string is used.
    The result should be an attribute or cell.
    If the result is formatted as a label list then a label for the extracted string will be matched or created if it doesnt already exist and the result set to its index.
    The extracted substring is trimmed to remove leading and trailing spaces and enclosing double quotes. If it ends up being an empty string then the index/value 0 is returned and no label is added.
    If the result is formatted as a value, time etc. then the substring will be parsed using that format.
    If there are any parsing errors (eg: bad data) then the value 0 will be returned.
  • NEW Log driven graphs have a new option "Point Browser On Mousedown" which, when enabled. will show the x and y points in the titlebar upon a mousedown as occurs for the Column Overlay graphs.
  • CHANGE Defaults for Planimate INIs changed. This only affect you if you start without an existing INI file:
    EditorPaletteStatus=1 RoutineEditorRatioW=80 RoutineEditorRatioH=80 TableTitleLines=2 HelpWebSite=""
  • CHANGE Default expiry date for time limited standalone EXEs is now 5 days. Users with an Open PBA license can override this.
  • CHANGE Internal rework of StringToValueErrorStatus handling


  • NEW Dynamic panels have a new option "Show Spatial Links In Background" This is similar to the portal option "Show In Background" and causes the spatial links on that panel to be drawn in the background layer, behind views instead of in front.
    This is useful where portals and links connecting them should be shown behind views which overlay them.
  • NEW New routine operation "GetDocumentName" enables the modeller to read and write files into the "Documents And Settings/user/Application Data" folder for the currently logged in user.
    This is useful for saving user specific defaults and settings for an application.
    It takes 2 parameters, Folder specifies the subfolder within the user's Application Data folder and Filename is the name of the desired file within to read or write.
    The folder will be created as required and ensure it is writeable. If successful, the result attribute is set to a non zero value and the s.LastAccessedDataFilePath system attribute is set to the entire folder/file specification, ready to use in a file operation.
    If the operation returns 0 then either a bad folder name was specified or the system policy does not allow applications to write to their documents and settings area, in which case an application should continue gracefully.
  • FIX Column filters would fail if there were more than 32767 rows in the table. This limitation has been removed
  • FIX Column filters would generate the column filter dropdown list VERY slowly if there were many unique labels in a column (> a few thousand).
    This has been greatly sped up using a binary sort/merge.
    Up to 100,000 unique labels are now displayed in a filter's dropdown list. Wildcards will still select any others not in the list. This is 100x the limit of other table editing applications.
  • CHANGE Speed ups/rework of existing internal string list code
  • CHANGE Removed old PV tokens and merged several source modules, rearranged the code base.


  • NEW Routine operation "ListRoutineCode" will create a text file with the text of the routine code of a given change object (by name)
  • CHANGE The "DescribeRoutineData" and "ListRoutineCode" routine operations will now also look for the change object with the given name in a subsystem with the "Handles Parent Messages/Broadcasts" portal option enabled (and any sub portals within with this option on).
    This enables the modeller to bury the routines out of top level nodes
  • CHANGE Reworked number formatting code.
    Table cells formatted as values are copied to the clipboard with 12 decimal digit precision instead of the default 4 as appears in the table view.
    This affects the "Value" and "Value With Commas" formats ONLY, other formats like fixed, times and money are written to the clipboard as shown.
  • CHANGE Handling of the "Display Rounding" column option
    Columns formatted with a fixed number of decimal places eg: "Fixed xxxx.xx" will not have the display rounding value (specifiable in a column) applied, since the rounding is already implied by the number of decimal places that the mode is fixed to.
    For columns formatted as "Value" and "Value With Comma", +ve values of "Display Rounding" set the number of decimal places shown, -ve set rounding to units/tens etc and 0 rounds to whole.
    This does not affect the underlying data, cell edits or file/clipboard writes. Its useful for presenting data in summarised or precise form.
  • FIX Arrow keys can be used in a popped down combo list without it closing
  • FIX Notes on 5.07o filter were slightly inaccurate - fixed
  • FIX No longer crash if adding a column overlay to a single column table with act as mapper turned on


  • NEW Tables Views have an option to enable "Column Filters"
    This shows an extra row under the column titles. Clicking cells in this row enables filter text to be entered or possible labels/values chosen.
    Simple wildcards like * and ? can be used to match text strings and individual characters.
    The filter applies/updates when a filter cell is edited. f cells are edited, they remain in the set even if they no longer match the current filter settings. Reselecting any filter column will reapply the filter to the updated data.
    The drop down lists in the filter columns show the possible labels/values for that column that are not "blocked" by any other filtered columns
    If a row is inserted, the filter is cancelled but reselecting any of the filter columns will reapply the filter settings (which remain visible)
    If a column is inserted or removed, the filter columns are reset.
    The "Combo List Width" column option also applies to the filter list, if it is opened.
    Filter settings are not saved
  • NEW Added column option "Edit Labels With Combo" which enables labels to be selected and entered using a dropdown/field "combo" box.
    This avoids the clunky popup for selecting labels that PL has used in the past.
    If the label list has the "Only Modellers Can Add" option on and the system is in "User" mode then the combo will only enable selection of a label in place using a dropdown list, otherwise labels can also be typed.
    Any "new" labels typed are automatically added. If the "Rename Labels Instead Of Adding Labels" column option is enabled, then typed labels cause a rename instead.
    This option overrides "Edit Labels With Field" option; the difference is that there is a dropdown list of possible selections
    The F2 key and alt-down are keyboard shortcuts to dropping down the list.
  • NEW Table columns have a new option "Only Select Existing Labels". This works with the new "Edit Labels With Combo" option and prevents text being typed into a cell, only the list selections can be chosen.
    This augments the label list option "Only Modellers Add", enabling users to add labels in some cases and only select labels in others.
    It doesn't work with the old popup label select dialog.
  • NEW Column property "ComboListWidth" and edit option "Combo List Width" enable the width of the drop down list in the new combo label to be specified. If 0, the width of the cell is used.
  • CHANGE The "default" label lists that PL provides for a number of properties and options are now rebuilt upon load of a model to ensure the latest PL labels are present in them.
    This means any changes made to these lists will not persist.
    The "_colors" and "_external files" lists are excluded from this
  • CHANGE Column option "Edit Labels In-Place" has been renamed to "Edit Labels With Field" to distinguish this option from the new "Edit Lables With Combo".
  • CHANGE ShowPanel routine operation renamed to ShowPopupPanel to be consistent
  • FIX The table scrollbars now do not "jump" if you click within the scroll bar "thumb"
  • FIX Tables will no longer cause a crash if a table view is too small to fit at least one column.


  • FIX Dataset2 did not correctly merge system label list formatted columns. A column formatted for _Model Objects created a new label list eg: _Model Objects2 upon load.
    The merge has been reworked to use the existing system list.
    If a label is in the dataset that no longer is in the system list (eg: a portal deleted) it will be replaced with 0 since the dataset loader cannot modify the system label list.
  • CHANGE standalone exe's now have lowercase "exe" extention
  • CHANGE removed the old "list mode" that cell views would use to select their table cell if the table only had one column.
  • NEW SetPaintImage routine operation enables the image of paint buttons states to be set. SetPaintImage and SetPaintText both work for paint Image objects.


  • NEW Paint Buttons showing images now enable the modeller to set the range of image pixels which are displayed. The image will then be stretched (or shrunk) to fit the paint image objects rectangle.
    The advantage of doing this instead of using a viewport is that it is very fast and efficient; the image is only loaded in memory once and large animation buffers for the entire scrollable area are not required.
    The new functionality is enabled at runtime only using the following paint properties (only useful with a paint button with an image selected). Use the paint property label list and the SetPaintProperty/GetPaintProperty routine operations.
    ImageWidth,ImageHeight: return the size of the current image file, in pixels
    ImageXOffset,ImageYOffset: can set/read the top left pixel of the image to display (normally 0,0)
    ImageUseWidth.ImageUseHeight: set or read the number of pixels to show within the paint image, normally both are 0 which causes the default entire width/height of the image to be used.
    These attributes are not saved and revert to zero when a model is loaded. They do not propogate with inheritance but this may change.

  • CHANGE 5.07l's release note about "Extract Data References" said that references are not repeated. This is not the case, I have decided to repeat references if they are used for both read and write.


  • NEW Routines have a new File menu option "Extract Data References"
    This will extract all references to data in the routine code into a text file and show it.
    The file has 5 tab separated columns: full-reference read or write indicator table name (if any) row reference column reference
    References are not repeated. If a reference is read AND written then it is only shown as "write".
    Constants and expressions are not shown but the fields within an expression will be, if they are non constant.
  • NEW Routine operation "DescribeRoutineData"
    This enables the description described above to be extracted from a change object and written to a file for later processing.
    It takes 3 parameters Panel -> panel or owning portal of a subsystem where the change object is object -> the change object's object name text filename -> file name to write the report to


  • FIX Clicking outside a calendar entry field now accepts the data again (this was broken in the 5.07h table cell handling rewrite)


  • FIX Can now paste replace on the current visible panel again


  • FIX Broadcast Button click handler now clears an internal "pause pending" flag in the engine to enable further animations after an animating item doing a broadcast is interrupted.
    Previously, a "continue" was required to reset the flag

  • FIX If a broadcast button is clicked to start a run and then the animation of that broadcast is interrupted by a pause click, the engine will now not produce errors
  • CHANGE (APPLIED to 5.07h)
    Table scroll bars are bigger to make them easier to grab on modern higher resolution displays


  • NEW Table views have a new "fixed columns" property which enables a number of columns on the left hand side to be held fixed whilst the rest remain scrollable.
  • CHANGE Table editor enhancements CTRL-Z maps to undo
  • CHANGE A new default "Edit Mode" for table cells: "Automatic Enter/TAB advance"
    When a cell edit is completed with a TAB or ENTER then the cell to the right or underneath is selected respectively (only for value or date cells).
    The "Edit Single Cell" option can be selected to prevent the automatic advancement
  • CHANGE Pressing TAB in the table view selects the cell to the right
  • CHANGE Using the shift key with the arrows extends the selection in a table. Using the ctrl key as well selects to the end of the table.
  • FIX Expresisons were not testing for divide by zero


  • FIX Paste Into Replace (<ctrl> + Paste Into) will now work whan using the sidebar treeview context menu. It currently prevents you from doing this when the current visable screen is in the hierachy of the "Paste Replace" root portal.


  • NEW Sidebar Treeview Context Menu The sidebar tree view now has a context menu for Dynamic and Application panels. There is also a new context menu option "Paste Into" for Portal objects (Dynamic and App) that will paste compatible options into the selected Portal. Pasted objects using this option will appear in the top left corner of the target panel
  • CHANGE New Object Selection Behaviour When using the mouse drag multi object selection you can now modify the selection behaviour.
- Clicking on the background will clear the current selection
- ClicknDrag creates a selection group containing the selected objects
erasing any exiting selection groups
- SHIFT+ClicknDrag Adds selected objects to the  current selection
- CTRL+ClicknDrag Subtracts selected objects from the current selection


  • NEW PL no longer prompts the modeller to apply a default width when a column unit mode is changed; this was annoying and the width can be set manually as required.
  • CHANGE pressing 'c' in the routine list view inserts an empty (comment) line
  • CHANGE Removed forced clipping of paint-text objects to the visible work area.
    This caused them to lose alignment with other objects when a panel was resized
  • CHANGE The "Focus" is now cleared when a click in a panel background occurs.
  • CHANGE Basic mousewheel support for table views and dialogs.
    This will only operate if a mouse driver is not installed which translates scroll events into scrollbar events.
    (some mice come with drivers which do this translation to enable x axis scrolling; it might be an option to enable/disable this)
    (scroll wheel support in Windows(TM) is a bit of a dog's breakfast)
  • CHANGE Focus handling in dialogs with icon palettes (icon mover, selector) to facilitate the scrollwheel working as it should
  • FIX Clicking in the subsystem name no longer hides the panel-explorer if it is visible.


  • CHANGE Setting the zoom of a visible viewport will now update the viewport immediately. If zooming in, the zoom is centred on the centre of the current view (as much as possible)
  • FIX The "Hide from Sort" column option introduced in 5.07a was working in reverse - fixed (so the default "off" state for this option allows the column in the sort menu)
  • FIX Dragging windows over the Planimate work area often left bits of garbage in the margins. This was unpredictable and caused by the Windows window manager not consistently sending EraseBackground messages.
    Many applications "fix" this by forcibly redrawing everything all the time but this causes flicker especially when animating panels.
    Have fixed by explicitly clearing the margin areas as part of the panel redraws rather than trusting the windows notification. This seems to have fixed it whilst retaining the clipping of objects within the active panel work area.
  • FIX No longer flash a "default" object when adding a track/pipe/spatial link
    This distracting and caused problems on large networks when scrolling was required.


  • NEW Resource File (PL model databases) administration dialog has a new option that will convert all the ICN format files in the selected DB file into BMPs
    This can be useful for converting icons so they can be edited with modern graphics editors which support > 16 colours
    The old ICN files are removed from the DB
  • FIX Track Portals and the s.LoopExitDelayStart attribute
    The "LoopExitDelayStart" system-item attribute was being set for all on-track portals at the time a train tested the portal exit (to leave).
    Its been changed so it only gets set where the portal is configured to use loop delays.
    This means
- the "Act As Junction" and "Use Loop Delays" portal options
should not be used together
- for code in a non loop-delay portal, the s.LoopExitDelayStart time will properly represent the time the item started leaving the previous object
- for code in a loop-delay portal, the s.LoopExitDelayStart will only be valid up until the last point of capacity in the portal before the portal exit... so you can use it before a queue just before the portal exit but not after the queue (since the item would have "tested" the portal exit which needs to set this attribute as a loop exit delay could potentially be starting.
  • FIX Crash if a missing routine attribute was reported at startup and the modeller tried to use the "Show References" to open the containing panel (half-baked runtime failed during redraw of icons)


  • NEW Support JPG and GIF as "icons". This means they can be selected for object and icon states and as paint button states.
    Unlike paint images, icons are kept cached in memory and are usually rendered by the animation manager if they are object or item icons.
    Transparency for these types used as Icons is not supported. It may come at a later time, as may multiple image GIF loading.
    related rework:
- rewrote icon palette to support multiple types
- reworked icon classes to track icon type for loaded icons
- reworked standalone EXE creation to use the icon type info
- cleaned up image loading code and bitmap classes
  • NEW It is now possible to read and set the columns that a Table View displays dynamically using the routine "GetTableView" and "SetTableView" operations.
    These both expect 3 parameters:
- the table the view is for
- the panel the view is on
- a configuration table.

The configuration table needs to contain a column called "_basecolumn".
For GetTableView, rows in this column will be set to the column indicies of columns in the table view. If the table view does not have customised columns, then there will be one row for each column in the table.
For SetTableView, each row in the configuration table should have a column index from the parent table in the order you want them to appear in the view.
Rows should not be repeated.
If the table has no rows then the table view will be set to its default view of the parent table (without customised columns).
Modellers need to force repaints after customising a view if that view was visible..
  • FIX "Retain on paste" attributes now retain their clear value, min and max value and all their options settings
  • FIX ODBC fix for SQLConnect where a NULL username and/or password were passed - this caused a crash with some ODBC drivers.


  • NEW Routine Operation "BrowseFile" enables a "browse to file" dialog to be presented to the user. A default file extention (eg: *.DAT) with or without path can be provided. A second parameter specifies whether a load-style or save-style file dialog should be used. The return result of the routine operation is non-zero if a file was actually selected by the user (they didnt cancel). In that case, the resulting file spec can be retrieved using:
s.LastAccessedDataFile     : file name only
s.LastAccessedDataFilePath : file name with path
This operation is useful when prompting the user to select a file to use in the dataset operations introduced in 5.07
  • NEW Panels have a new "Child Window Style" popup option to cause them pop up as child windows to the parent window (contained and clipped against the window) rather than popup windows (able to exist outside the parent window).
    Previously this style was automatically enabled for windows without a titlebar or border. By making it explicit, the modeller can have borderless, titlebar less popup windows. These are useful because unlike child windows, they can be partially transparent.
    For older models, this option will be automatically turned on if the popup was set up with no border and no title bar, so they should behave the same.
  • NEW New label list "column properties" used in conjunction with the "GetColumnProperty" and "SetColumnProperty" routine operations enable a number of properties of a table column to be changed in modeller code. This is useful for building and controlling UI tables under program control.
    These routine operations alter the table itself and will not update any customised views of the table.
  • NEW Column option "Hide From Sort Selection" will prevent the column from being selectable in the sort menu for the table. This replaces the hiding of columns when their Width is 0
  • CHANGE Columns with a zero width are no longer hidden from the table sort menu Use the "Hide From Sort Selection" option instead
  • CHANGE The PLDLL interface has been enhanced to support column ordered table data. This is a new option in the DLL SDK and enabling it may reduce the need to reformat data in a DLL's implementation, increasing speed.
    If you are using the Planimate(r) DLL SDK, contact ID for an update.
    Older DLLs built with the previous SDK remain compatible.
  • FIX The expression parser did not handle "-" properly in expressions such as "p.x - (p.y + p.z)" It would accept and process the expression properly but would present the expression without the brackets. A subsequent edit would commit the wrong expression and cause "p.x - p.y + p.z" to execute which was not the desired result.
  • FIX A long lurking bug in track code has been fixed.
    If a train was doing a loop delay at the time a run was stopped, it could cause an application fault.


  • NEW DataSet 2.0 framework
    This adds new routine operations to save and load data. Refer to the attached word doc for more details.
    Old style datasets are not affected and will be eventually phased out.


  • NEW Routine operation "Set table row height"
    Sets the number of lines of text each table row displays. Useful when free-text is being used.
  • FIX Columns formatted as free text now work properly with the "Copy Format" context menu option in the table editor
  • FIX Width of table selector when adding a table view now accomodates the full length of the table name instead of cropping it