ReleaseNotes:Planimate 4.26 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search

Release notes, bug fixes and misc enhancements to Planimate 4.26


  • Added routine operation for track networks which returns the number of roads a section is representing
  • fixed model save/load bug introduced in


which would cause model file containing section stat views to not load if saved in 


or later.
  • Planimate properly detects a disk becoming filled as a model is saved and reports an error message. Previous versions did not perform the test properly since I rewrote file saving many versions ago.


  • attribute report is properly written (was only writing 3 lines)
  • New Feature for Gantt Graph

I've added the option to place lines which connect the blocks in a gantt graph display. These can be used to indicate flow or relationships between the blocks.
To use this feature, the gantt table needs a couple of new columns:
This specifies the row index to which a link should be formed.
Planimate will link to the most recent block on that row (which must appear earlier in the table).
This sets the colour of the link line, default (if column not present) is black.
This sets the thickness of the line, default (if the column is not present) is 1.


  • clicking on a broadcast entry in paused-model editor mode now prompts user to produce an item (ie: act like a click entry)

This can be very useful when debugging a specific flow without sending the broadcast to everyone.

  • sub label lists "Sort By Name" option is now implemented

If on, the popup of labels from a sub label list is sorted alpha. If OFF the list is sorted in the order that the SUB LABELS WERE ADDED.
This enables a customised "menu" to be dynamically created with the items in a specific order.
Double check any existing sub label lists to make sure this option is ON if you want their lists to continue to pop up as sorted.

  • BUGFIX in _Page Printed broadcast sending

A bug in the way this broadcast was looked up was fixed, this bug has been there for a long time and caused Planimate to send the wrong broadcast for older model versions.
(this broadcast is used when printing from a change object, enabling the model to control the printing of multiple panels and multiple scrolling of a table view on one panel)

  • internal clean up of dial code (split up separate chart module)


  • reworked the ODBC code to clean up handle management particularly in error cases


  • If all data sets have empty names and file names and the "Save all data sets" option is not selected, the "Load Data Set" and "Save Data Set" options will not be displayed in User/Interdyne mode.
  • Added new option to tables "Clear Rows Before Saving"

This discards data in the table whenever the model is saved. This may be useful with output and log tables as it can reduce the saved model size substantially.


  • _borderstyle and _bordercolor columns can be used for log driven graphs to set the bar border in horizontal bar, histogram and gantt modes.
  • reworked graph vertical and horizontal bar clipping


  • removed the password clearing hack in


If you dont use "s" to convert models saved in Q and R, you will not be able to access the editor and administrator passwords

  • fixed bug which caused third attribute of a dynamic table reference to be remembered when switching back to a standard cell reference
  • Added "_plot modes" label list which is useful for formatting the "_mode' column in a column overlay view
  • ODBC operations have an option to not stop the run on error. A system attribute has been added to return whether an error in the ODBC operation occured, non zero value indicates an error.



This version resets the admin and editor passwords for versions saved with version Q and R.
Future versions will NOT perform the fix. If you load a model saved with version Q or R with later versions than this, you WILL NOT have access to the editor or admin passwords!!!
Reason for the problem in Q and R:
When I added the _borderstyle" list in Q, it screwed up a hash I used to encrypt the passwords, corrupting the password as the model was loaded.


  • Have changed the model format and the way that stat/views are saved

Stat views now retain the order which the modeller has arranged them in. Previous versions rearranged the views according to their type (cell,Table attfibute etc)


  • Fixed bugs in the directed message dispatcher with specific named entries
  • wrongly named function wasn't being invoked
  • memory allocation for name not properly checked before deallocation
  • Added "_border styles" label list
  • Gantt blocks now recognise two new optional columns

"_borderstyle": Specifies a value from the "_border styles" label list and determines the style of border the gantt block is drawn with
"_bordercolor": Specifies a colour and determines the colour of the border used when drawing the gantt block (note: indent/shadow borders do not use this color


  • Fixed grid views which were totally broken when displaying icons in their cells instead of RGB values
  • properly handle keystrokes when a popup/viewport has the focus
  • Directed Message dispatchers can now send messages to a message entry with a specific name rather than their own name or the default name, (When the message is directed to a portal). This will simplify the structure of complex message handlers.

The option to set the name is "Message Entry Preferred Name" in the Dispatcher Object Menu.

  • Attribute/Tables and Label lists can now be accessed via the Edit Menu at runtime. I've disabled adding and deleting attributes and tables since this could cause loss of integrity of the model run. Editing other objects should be OK during paused mode - if you find something that crashes the platform, let me know and I'll either fix or disable the option at runtime.
  • Attribute reference browser contents can be exported to a tab delimited file
  • Label references list can be exported to a file
  • graph border for log driven and overlay graph is properly computed when the scale is visible but the title is hidden
  • Added time-system attribute "Time Zone Correction (Minutes)" which may be used to adjust calendar times for the local time zone. The idea is that the internal calendar times/offsets are set in UTC then this variable can be used to shift the displayed (and entered) times from UTC to the local timezone.

The value can be changed during a run, upon the next redraw all table and item calendar times will be displayed with the new offset. NOTE: The internal value does NOT change, its an offset applied at the TimeToString and StringToTime level.
Example Values: +570 (Adelaide Time), +630 (Adelaide Daylight Time)
NOTE: If importing data or reading TCP/IP tuples with formatted times, then the current TimeZone will be applied in converting the times to seconds from the current time reference that the model stores internally.

  • TimeZone can be specified manually in the Display->Time Field Format time dialog or Run Start Date dialoge.
  • Model Edit and Simulation Calendar time reference is reset to 0 when a new model is loaded or created.
  • "Breakpoint Control" system attribute is now in the "Other" flyout
  • Internal cleanup work on Table Views and Graph Views, removed "read_only" during run flags since tables no longer use fixed structures at runtime.


  • scenarios can now be loaded along with a model in /BATCH mode

Done using the /SCENARIO=<scenario-name> command line option.
<scenario-name> must be the exact full path to the scenario file, including the file extention.
If the scenario load fails, an error code of 3 is returned by the EXE.

  • Obsolete @script command line options and old support code has been removed, this hasn't been implemented since the DOS days.


  • Paint lines now have options to enable centre and end arrow heads. The arrows can be single or double direction and outline or filled.
  • label references are now described in detail for table cell, column and item label references. Slight increase in memory requirements for specifically formatted label cells.
  • standard message and confirmation dialogs now have a forced "topmost" option to avoid them being lost behind other windows
  • have re-vamped processing of batch model runs. (running models from the command line with the /BATCH option)

The platform logs any errors to planimat.dbg and details in _plerror.txt
The EXE returns a code as follows
0 : Model completed or ran out of events 1 : Error in command line 2 : EXE path too deep 3 : Scenario load error 4 : <unused> 5 : Bad license key 6 : Error loading resources 7 : Error loading command line model spec 8 : Planimate was forced to quit by system 9 : Model run terminated by a model fatal error

  • Object,Attribute,Cell and Table Views have an option to make then "Transparent" to mouse clicks. The transparency is only in effect when the model is running or the system is in Application Mode.

[platform coding notes]

  • did some cleanups of the box/rectangle/line/region drawing code to reduce duplication and modularise the graphics level a bit more. Watch out for any graphical glitches this may introduce.
  • heavy duty internal renaming within the source code to bring internal names for attributes, various object types and other structures up to date with current names modellers know them by.

With the new names, the code is MUCH easier to read with PL experience. Now to update the module names...
This should not impact the EXE at all. Look out for any errornous names, strings etc. which were accidently caught up in the replace.


  • added extra test to check for close of "advance to time" dialog when iterating
  • Views and Paint Object Control Attribute is Now A Condition

This means a condition can be used to specify whether a view/paint object should be visible rather than just an attribute
Old models are translated to a "not equal to zero" test so they should be compatible.
The "Always true case" of "1 = 1" is used by default when no control is required and should be used if disabling an existing control condition, to ensure the significant memory used by the condition object is released. Whilst using "2 = 2" would yield the same result in the run, it means Planimate wont purge the condition object and it uses memory for no reason.


I've significantly reworked several of the "base" classes that Planimate is built on, hopefully to try get more speed out of it. ' Tests of model load/execute speed vs. previous version would be appreciated.
Tech details:

  • No longer use Singly Linked Lists for anything
  • Tables are used for master model hierarchy/panel lists
  • Table Find() has been reworked to search towards the centre
  • LinkedList Find() has been tweaked to search end points first
  • Large tables are allocated in much bigger steps to avoid fragmentation and wasted time.
  • deallocation order of panel and stat objects reversed
  • added extra test to avoid re-search for a panel when deleting them and their sub-contents


  • Have done some cleanups and optimisations to improve portal delete speeds
  • Path manager more efficient when deleting objects from paths
  • Paths for subsystems are purged before their content objects
  • Objects/Subsystems are removed from the hierarchy before their contents are deleted since their contents have no need to be updated during the delete (the contents are also being deleted)
  • Assemblers no longer get object delete messages (not needed)
  • Obsolete Event timer object deleted


  • New table colunm option enables a column to accept and display arbitrary text. This is stored separately to the underlying numerical value/format and overrides the value on display and editing.

Most routine operations (row/col insert/delete/shifting/copy) have been updated to also move the text.
Free text cannot be tupled via items at this time
Copy out is supported but not import in (yet)
Cell stats dont work properly

  • option to hide title on column overlay view


  • Popup panel buttons have another option in their click action context menu enabling the popup co-ordinates to be specified, the default of (-1,-1) uses the current mouse co-ordinate to position the popup
  • Help buttons can now have a specific help file specified as well as a section name. If a specific help file is not specified (help file name left blank) then the default help file is used - named the same as the model and with a .HLP extention.
  • Stat Views and Paint Objects now have a flyout in their edit menu "View Order" which enables them to be positioned to the back/front or before/after the previous/next object.

Currently paint objects cannot obscure attribute/table views - this will be addressed by adding a "foreground paint" layer.

  • /maximise works in interdyne mode
  • popups hide code has been reworked. Popup windows are explicitly hidden before they are destroyed to prevent them lingering


  • table selection strictly validated when a row edit occurs, this could have left a selection with an empty table, leading to a crash if the context menu copy-selection option was chosen
  • new system-other attribute "Lock Portals From Drags" enables the modeller to lock portals from being dragged at runtime even though their options setting enables this. This gives the modeller more control over when users can reposition portals in their display.
  • New Click action for buttons - "Popup Panel"

This sets a button up like a screen change except that the panel is opened as a popup rather than the main window being directed to it.
Existing buttons can have this option enabled/disabled using the "Popup panel in window" option which is a new option on the button link properties.


  • fixed bug which caused focus to point to nonexistent hidden tables when they were dynamically hidden from a panel using attributes.
  • reworked the operation of the master simulation event loop. Fixed the bug which prevented the system being paused before an event time when the advance-to time was specifically before that event time. This should make debugging time based models easier.

The master event loop is now somewhat simpler, please double check that different system (advance, real time, time scaling) are OK.

  • message items will also have info panels if the original item had one. If the original item has a hidden info panel, the message item's will also be hidden but it can be shown using the "Item Show Info Panel" item-system attribute.
  • Implemented HH:MM time of day time format


  • fixed a bug preventing the right clicks getting where i wanted them to


  • Portals and spatial links can now be right clicked when the system is in InterDyne mode


  • Changed portal click/drag broadcasts to clear all current zero time events (eg: sideeffects of the broadcast) before pausing the model again. This makes them more consistent with the other broadcasts such as table cell clicks.


  • spatial link clicks now sensed in user mode and include "_buttons" attribute
  • object palette doesn't stay at front after model run
  • Pop up panels without a titlebar now get the focus when displayed


These enhancements are intended to add more control over user interactions.

  • New Options for panels displayed as pop up windows:
  • "Auto Close When Focus Lost" Closes the popup if the user clicks on another window
  • "Ensure Visible On Display" Ensures the popup is initially displayed within the screen area
  • Change to _Portal Moved and _Portal Clicked broadcasts

These now send the following tuples - be aware that if your item had these attributes already defined, they will be now overwritten.
(General rule: Any item attribute named with leading _ may be used by a system tuple broadcast in future versions of Planimate.)
The attributes now set are:
_x : x position of mouse _y : y position of mouse _buttons : which button was clicked, 1 = left, 2 = right _panel : panel ID of panel where the interaction occured.


  • New routine operation "Formatted Width" (in the Labels submenu) will return the width in characters that the target attribute/cell would take to display. This works for label and numerically formatted values.
  • Added a new system broadcast "_link clicked") which gets sent when the user clicks on a spatial link line and the Panel Option to send spatial link clicks is enabled (suppressing the normal link information menu).

The broadcast includes the following tuple attributes:
_x,_y : The screen co-ordinate clicked _ratio : The ratio along the line where the user clicked, from near 0 (start of) approatching 1 (end of link) _from : Object label identifier of the "from" portal for the link _to : Object label identifier of the "to" portal for the link

  • In Flow Edit Mode, pressing control now causes flow arrowheads to ignore the mouse click, making it much easier to reposition an object sitting under an annow head (ctrl-drag the object)
  • Added a new optional column to gantt displays

IF this column is present in the table, it controls how thick each bar is drawn, value of 100 is maximum (normal), 1 = hairline, 0 = not drawn (hidden bar)

  • Mapper editing now will not prompt for and insert new rows when points are dragged if the table option "User Cannot Insert/Delete Rows" is selected. In this case existing points can only be dragged up and down
  • CTRL-C is a shortcut to copy for the table with the keyboard focus
  • No longer support reverting to the original values of a column when a table is set up as fixed length (not variable length) and the (now obsolete) "Retain Simulation Values" option is OFF.

This has occured because I no longer implement fixed length tables using a separate memory store. Fixed length functionality is still implemented though.
All table ops should be slightly faster.

idkbase note 148