ReleaseNotes:Planimate 5.05 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search


CHANGE Positioning an already visible popped up panel now uses co-ordinates consistent with creating it (see 5.05p).
CHANGE Reading the Top and Left Window co-ordinate of a panel window has been updated to reflect the positioning changes.
Popped up panels (either child or popup) now return the relative offset to the top left corner of the active work area.
NEW The main planimate window can have its co-ordinates read and set.
This is done using the same routine operations as for popup panels,
ie: PanelWindowLeft and PanelWindowTop read position ShowPopupPanel to set the position (with panel already visible in the main window)
In this case the co-ordinates are returned as Windows screen co-ordinates. This enables a model to reposition the main PL window.
Doing this may be very user unfriendly so make it optional


NEW Option on attribute and cell views "Repaint Panel After Edit"
This causes the view to schedule a panel repaint after a user clicks and edits the field.
This is useful where a panel display has fields and objects which indirectly depend on the attribute (eg: visibility control) and avoids need for a broadcast to be set up just for a repaint.
This option should be used only where required as it will introduce some lag or flicker on panels with complex displays, images or graphs.
NEW Value formats
Calendar Day Month Day Month HH:MM
These are for cases when the year is unimportant
Modeller beware:
Columns formatted with this format cannot be imported from formatted files or datasets. The dataset will give an error on load and abort the load. (Datasets 2.0 will work).
Clear values for these columns cannot be edited once this format is selected. Select a normal calendar format first to change the clear value, then change the format back.
The date/months can be edited with the calendar picker but the user may need to expand the calendar to chose a leap year if they want February 29th.
The spatial link run/stop control has been changed:

  • The value now matters and is used to scale the item time. eg: 1.0 uses the nominal time, 0.5 doubles the time, 2 halves the item time.
  • The minimum "on" value is now 0.01. Any lower value and the spatial link is considered stopped.

The scaling occurs only once, as the item enters the spatial link and changes will not affect that item whilst its on the link
CHANGE Made a global change to the dialog code which will attempt to position a dialog so that it does not get covered up by the task bar (on systems which do not have "auto-hide" on.
Look out for any side effects particulary on small screen systems with a multi-line taskbar.

CHANGE Popup panels (popup, palette and child window styles) are now all positioned upon creation relative to the top left corner of the Planimate work area instead of the overall window or the screen.
This should help in more accurate window positioning when the Planimate window is on a second display or when there is margin around the active area due to a large display.
Have not changed the reading or updating of co-ordinates at this stage, will wait for feedback on the current change first.
FIX Paint button hover broadcasts now support the "send broadcast to global scope" paint button option.
FIX The condition editor was displaying portal attribute scope (if enabled) in the buttons, where they should have not been.


CHANGE Gantt block click popup now auto-sizes to the width of the longest string
FIX Maximising a table window now updates its window properly
FIX In the routine editor, the attribute name suggestion popup responds properly to a line being double clicked. This did not work before as it was originally only a keyboard accellerator
NEW Right clicking in an open field in the routine editor open the full attribute reference dialog. This is an alternative to F2
FIX Gantt block click popups (and other similar popups) now get the correct number of rows shown in the window
FIX Panel title updated after a dataset operation within a routine
FIX The "Include Scope In Portal Attributes" option no longer messes up the routine list or the routine step editor


NEW Rewrote the track loop delay mechanism to support modeller interfacing to the section hold mechanism from a portal.
Selecting the portal option "Track:Does Loop Delays" enables loop delays for a portal. The delays used are set by the references in the Track menu, just as for Track Loop objects.
It works as follows:
A train entering the portal starts a loop entry delay on the section it entered on.
If the train immediately leaves the portal (within 0.1 seconds of its entry time) then the delay is cancelled and there is no entry or exit delay.
If the train cannot leave the portal (eg: next section prevents it) or it is held in the portal (eg: in a multiserver) then the inbound section will undergo the loop entry delay (being unavailable to other trains during that period).
When the train eventually tries to leave the portal, the following occurs:

  • if the loop entry delay hasn't finished yet, the train will be blocked from leaving (and the incoming section continues to be held)
  • once the loop entry delay finishes, the train is further blocked from leaving for the loop exit delay (and the outgoing section is held in loop delay)
  • once the loop exit delay finishes, the train can leave the portal onto the outgoing section.

Apart from being blocked from leaving, a train is free to move about inside the portal while the loop entry delay is under way.
Portals with loop delays require a capacity for the train to wait at. This can be a standard dispatcher or a multiserver configured for items to not block each other (the default). A queue is not recommended unless the trains must leave in a specific order.
If a train enters a loop delay portal and the item is subsequently destroyed (eg: in an exit) then any section with a loop entry delay is immediately released.
Loop delays are not compatible with portals set to "Act As Junction
CHANGE The portal "Route step lookthrough" option is obsolete and is removed; any use of it is replaced by "Act As Junction" which has the same effect.


FIX Menu bar hide option fixed
FIX Appropriate title for data set selection when selecting a dataset for a load


NEW 'i' also inserts line in the routine editor CTLL-D deletes the current line in the routine editor
NEW INI file option for developers:
[Routine] UseFullAttrefEdit=0
IF you set this to 1, PL will always edit attributes using the full dialog editor instead of in-place.
CHANGE Routine Step Editor Changes
Instead of <TAB>, <F2> now opens the full dialog attribute reference editor. This is in line with other popular spreadsheet applications.
<TAB> key now advances to the next row in the step editor

FIX Routine Step Editor now enables opening the full editor if the field is empty, instead of displaying an error and forcing some text to be in the field
FIX Startup code for standalone EXEs now starts the model after the about box has finished. This is to avoid the model start broadcasts popping up dialogs before the about box had been experienced.
FIX Resolved a co-ordinate issue in the window manager that prevented panel updates being performed. This affected redraws when transparent paint objects were used, for example transparent hover buttons AND there were margins around the work area.
CHANGE Rewrote the popup-at-mouse positioning code to account for the taskbar when positioning a popup (eg: inital position for the routine step editor)
FIX Pop up list windows were not getting sized properly. Have reworked this code to improve things; they have many combinations and options and are affected by the system window scheme; they will need some verification. This was evident in the size of the gantt click popups.
FIX Potential crash after a gantt or train graph click-popup due to the nodes being regenerated after a redraw
FIX Window bug where all Form based windows (dialogs, info popups) were forcing the main window to unnecessarily redraw. This fix will reduce flicker and make PL graphs much more responsive when they are clicked.
(all windows were causing parent windows to recompute their margins when this is only required for child windows such as the Planimate work area in its container window).
CHANGE Update to change in 5.05d
Popup windows set to close on loss of focus will now close even if they are caption bar less (child windows) however such windows will close if they contain fields.
Hence a caption-bar less popup window set to auto close should not contain fields the user will click in.
Popup windows with a caption bar are not affected.


NEW Loops have a new option "Act As Transparent Junction In Lookahead"
This option only takes affect if the loop is currently setup for zero roads otherwise it is ignored.
It tells the track system to not perform lookahead tests from the point of view of this loop but rather step to the next object and continue lookahead tests there.
It also makes the loop "transparent" to oncoming train checking (as would be expected for a 0 capacity loop acting as a junction) so trains on the other side of the loop will be "visible" when capacity lookahead (CheckNext) tests are being done.
With this option on, it should avoid situations where distant trains are "released" when another train passes a 0 capacity loop acting as a junction (ie: an optional loop that is currently disabled and shouldn't be logically affecting the network)
NEW Help menu has an option enabling another key file to be selected. If the key file is useable, it will automatically be copied to PL's settings folder.
CHANGE Time formats
The format
no longer hides the seconds if they are 0 nor hides the HH:MM if they are zero. This is to increase consistency for end users.
CHANGE If the current key file is unuseable, PL will give the error message then offer the file browser so another can be selected. This is useful when key files expire
CHANGE No longer disable/re-enable main window at startup as it causes flicker
FIX Time format "Time HH:MM (no seconds)" now properly "sticks" when selected.
FIX For some routine operations (eg: Sort) the incorrect routine operation was selected in the field if the modeller selected the routine operation browser for an existing routine line.


FIX The UI state was getting confused if a dataset was loaded that required the model's Run Date to be changed. This occured because changing the date requires the engine to be stopped and started, the latter was changing the state unexpectedly.
This would not have been noticed in models that processed the "dataset loaded" broadcast.


NEW System attributes (prefix "s.') are now suggested and handled in-place in the routine attribute field and browser
FIX Tuple copy of matching columns where the original and destination table is the same table should now be supported


This release adds a browser to assist in typing in attribute names in the routine step window. It signifies the completion of new UI capabilities to improve the editing of routines.
NEW This adds a dropdown list which suggests attribute names as portal, item or routine attributes are typed into the routine step details window.
The list drops down after the type of attribute has been specified (eg: "p." or "i." or "r.") and updates as text is typed.
Names with spaces are handled (they get quoted when inserted)
The list only appears after the initial "type" of the attribute and the "." is typed and is not part of another name or within quotes. You can use the list even in an existing expression to choose a different attribute by selecting the "old" name you wish to replace (but not the space after it) then typing say "p." for a list of portal attributes.
Up and down arrow keys can be used to select an attribute and pressing SPACE or ENTER will insert the highlighted attribute name (if eny)
An upcoming release will add support for system attributes, labels and cell references in expressions.
FIX Fixed precedence of / over * in expressions. This was causing brackets to disappear in cases like a / (b * c) which then evaluates as (a / b) * c.
Now / and % share a higher precedence than *
This affects modellers who use the expression capability to type in formulas.


NEW Added context help buttons and idkbase content for the new routine editors
NEW Routine step editor supports pressing TAB on a line to go directly to the attribute reference editor rather than in-place edit. This is useful if you know that a table needs to be selected for a line
FIX Small negative numbers no longer display as "-0". This is a display change only and if your code is testing against 0, then you will need to account for roundoff.
FIX Routine Delete-All (from the menu) didn't set the Undo state
FIX Z-order of portal state edit dialog was not properly maintained and it could be lost behind the main window
FIX PL now disables the main window at startup while the "about" box is up to prevent the click that closes the about box being interpreted as a region select
FIX 2 routine operations had the same name (FormatIntoLabel)


Further progress on routine editing:
NEW The routine editor now supports direct editing of attributes and mathematical expressions in the routine step details window.
When an attribute reference is selected for edit (eg: the "target" in many operations), the following types can be entered directly "in-place":

  • constant numbers eg: 12345
  • portal attributes eg: p.attributename
  • routine attributes eg: r.attributename
  • item attributes eg: i.attributename
  • an expression eg: p.attribute + i.attribute * 2 + 1
      • Once this field is open, you can press <TAB> to use the *!* full attribute reference dialog. If the field contents are valid, *** it will transfer them to the dialog.

If the reference does not support editing in place (ie: not one of the above) then the attribute reference dialog opens immediately.
An upcoming PL version will include a data browser/dropdown to enable attributes to be quickly entered in the field.

NEW The '/' key can be used to edit the comment of the currently selected routine line in the routine list. After an edit, it auto-advances to the next line.
This makes it easy to add comments to existing code
"/" was chosen because in C and Java, "//" signifies a comment.
NEW The '/' key can be used to edit the comment of the currently open routine step window.
FIX Multiple highlighted routine lines when debugging with a routine window open
FIX Attribute References in Object Property or Expression mode were not discarding of any previous table reference string
FIX Icon picker and mover realigned for new form code
FIX Column title clicks no longer sort the step editor fields
FIX Formatting of breakpoint statements in a routine has been cleaned up
FIX Dont show extra formatting commands in the routine operation comments field


This version addresses a number of requests on the BZ list
CHANGE Pressing ENTER in the routine list no longer closes the window but rather edits the current line. (it was too easy to accidently close the editor after closing a step editor).
CHANGE A Loop Up/Down Decision is now considered "not in use" if there are no decision tests made, regardless of the "default" value of the decision. This change should not affect any models.
CHANGE If a breakpoint occurs during the "advance to time" mode, Planimate will now drop out of that mode while the breakpoint dialog is open to make it easier to inspect the model.
FIX multiple step columns appearing when the routine window is minimised and restored.
FIX A different subsystem can no longer be selected in the hierarchy explorer while graph points are being examined.
FIX Added an interlock to prevent routine list commands being executed while the routine step window is active. This could lead to crashes if the routine window was closed whilst a step was being viewed
FIX Non-floating viewports have their co-ordinates udpated properly when the main window is resized; this was causing them to lose their position temporarily when the main window was bigger than the required panel area and it was resized.
FIX An auto-close popup panel containing a view will no longer close when that view is clicked for editing. This was fixed by making the panel watch for deactivate events rather than killfocus events.
FIX The label option to directly read numbers as label indicies will now do so quietly, without asking any questions about adding labels until an actual label is encountered.


Continuing the rework of the routine editing to reduce cumbersome editing, the routine list and step editor have been rewritten and now have the following capabilities

  • A single level of Undo on editing lines in the routine has been added. This is available via the context menu or using CTRL-Z
  • The "Routine Step" window is now a popup and has no OK/Cancel buttons; it closes when you click outside it or press ESC or ENTER. Changes are now always committed but can be undone with the Undo feature.
  • When the Routine Step window is open, the left and right arrows can be used to step through the details of other routine lines. An "undo" following this stepping will undo all changes to details made while the Routine Step window was open.
  • The routine editor has the following tweaks
  • The selected routine line auto-advances after an edit
  • The initial selected line in the "Routine Step" popup is the one after the "Operation" line
  • More routine colour categories are now supported:
  • "Routine Constants" sets the colour of constant values
  • "Routine Scoped Attributes" sets the colour of attributes that have scope beyond the routine
  • "Routine Local Local Attributes" sets the colour of attributes local to the routine (ie: routine attributes)

If your model was saved with 5.05 or later, you should reset the routine editor fonts if you want to see the new default colours and styles.

  • The step menu has been removed from the routine editor menubar as its functions are available in the context menu and in shortcut keys
  • Mathematical operations (like + and *), comparisons (like <= and >) and logical operations are now shown using the "Routine Control Statements" font style. This helps them stand out from routine attributes which could include these characters.
  • Logical operations have been renamed to make them consistent between routine operations, conditions and expressions.

"Not Equal" is now shown as "!=" "Equals" is now shown as "=="

  • These shortcut keys are supported in the routine list: "[" Jump to start of code block "]" Jump to end of code block "-" Toggle disable/enable of line "A" Edit routine attributes "D" Duplicate the current line "E" Edit details for the current line SPACE Edit details for the current line "M" Show the context menu for the current line CTRL-C Copy selected range CTRL-X Cut selected range CTRL-V Paste copied rows at the current row CTRL-Z Undo the last edit INS Insert a new row at the current row DEL Delete the current selected row range ESC Close editor ENTER Close editor UP Previous line DOWN Next Line
  • These shortcut keys are supported in the step detail popup UP Previous step detail line DOWN Next step detail Line LEFT Previous routine line RIGHT Next routine line ESC Close step popup ENTER Close step popup SPACE Edit details for the selected step line

NEW Value format: "Value with commas, no decimal"
FIX An empty subroutine will no longer cause the parent routine to be deleted
FIX Text displays which included an "&" now display as expected rather than treating the ampersand as an accellerator underline


FIX The routine editor now overrides the custom colours on the highlight line. Otherwise the selected line is difficult to read on a dark text/light background setting.


[new file version]

This version is the result of more heavy development of the new routine editing environment. It adds colour coding of routine code which can greatly enhance readability.
NEW Routine editor now uses multiple colours/fonts/styles to show the lines in a routine.
There are 6 customisable categories:
"Routine Operations" The style used for row numbers, the names of most routine operations
"Routine Control Statements" The style used for code flow-control statements such as IF and ITERATE
"Routine Value References" The style used for values and references to attributes
"Routine Table Reference" The style used for references involving a table
"Routine Label References" The style used for references directly referencing a label list
"Routine Comments" The style used for comments
These may be customised in the Fonts dialog. The styles are saved along with the model. Note that colours set in this dialog are now retained.
For a new model (or one which didn't have any routine fonts defined yet) Planimate will detect if you are using an inverse Windows colour scheme and use an appropriate style.
A new button in the font dialog enables the routine operations styles to be reset to the EXE defaults. This is useful when loading a model created under a different windows colour scheme.
I will someday support styles being put into the INI file; this is challenging due to the large number of parameters which specify a font.

CHANGE The "Routine Operations.txt" file shipped with 5.05 is no longer necessary as its obsolete and I now have a method of compiling it directly into the EXE.
I still manage the "master" routine operations in a spreadsheet. Contact me if you'd like to contribute to the style (eg: better comments on the routine lines).
CHANGE More reformatting of routine operations. Operations which had a table as the "result" now have the table as the first member in the bracketted list. The intention is that "=" should only apply to values.


This is a first release of major rework of Planimate. Appreciate any feedback.
A new routine editing environment is being built. This version includes:

  • a new routine operation selector
  • a new routine step editor
  • a table driven routine definition system

There is more to come; I wanted to get something out so feedback could start coming in.
The release includes a TXT file "routine operations.txt" which must be placed in the same directory as the Planimate EXE. This file contains a database defining the routine operations and is in the process of being populated.
Eventually this file will be rolled into the EXE once it settles down.
For now, you can use this version of Planimate to edit and release using 5.04G as the model format or engine capabilities have not changed.

The routine editor now uses an external database table to drive the editing and display of the routine lines.
A new selector for routine operations has been written to replace the hierarchical menus. This has the following features:

1. Two lists show routine operation categories and operations. Selecting a category will set the operations list with the relevant operations. "ALL" is included as a category.
2. Notes on the currently selected routine operation, how its formatted, its expected parameters and comments are displayed in a field at the bottom of the selector dialog.
3. There is a combo-box field into which routine operations can be typed. As text is typed, the operations list is filled with any matching routine operations (from any category) sorted in order of match depth
4. Some operations such as Set or Inc can be matched either by typing their name or by the notation indicated in brackets, so "=" can be typed for Set, "+=" for Inc etc.
5. If the text typed exactly matches an operation, it gets highlighted and placed at the top of the operations list. Other operations may still be in the list if they contain the entered text.
6. IF an operation is highlighted, the comments field pertains to it. If no operation is highlighted then the comments field pertains to the topmost operation in the operations list
7. Pressing enter/OK selects the highlighted operation. If none is highlighted then it selects the first operation in the operations list. This enables rapid keyboard selection of operations by typing the minimum needed to get it to the top of the operations list
8. Using the up and down arrows on the combo-box field navigates the routine operations in alphabetical order, updating the category, operations and comments areas. This is useful for browsing operations by name when the category is not known by the developer
9. The tab order of the fields is arranged for speed:
Initial: Combo-field, then operations list, then OK button.
ENTER can be used at any time to select the highlighted or topmost operation.
10. TeXt CaSe is not considered in matching routine operations. Generally the following rules are used:

  • Most operations are named in MixedCase (sometimes called CamelCase)
  • Scientifc operations and math functions are in lower case
  • Execution control operations are in UPPERCASE

Increase modeller productivity and speed Assist in becoming aware of related routine operations An in-built cross-reference to the routine operations Support mouse and keyboard users

NEW Routine Line Editor
The editor which appears when a routine line is clicked has been reworked
Instead of buttons, a list enables the operation and parameters to be selected and edited.
Double clicking a line shows the appropriate editor
The comment can be typed in "In place" by selecting its line.
The arrow keys and space bar can be used to select and edit a line. Ehe ENTER key closes the step editor
The extra step editing buttons have been removed

CHANGE Improved the report of a label list's users
CHANGE A major rewrite of the way fields, buttons etc. are positioned in all the Planimate editing and user dialogs. This will affect the layout of all dialogs slightly. The new method embodies the way co-ordinates are measured in the Win32 environment and makes reliable positioning of widgets easier.
Multi-line fields in particular were reworked.

idkbase note 320