ReleaseNotes:Planimate 5.03 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search


BUGFIX The number separator introduced in 5.03 defaulted to a "." instead of ",".

      • IMPORTANT *** If you saved your model using 5.03n, you'll have to change it manually, (settings->system parameters->number separator)


CHANGE Relaxed a restriction preventing icons being loaded from an external file in a standalone EXE. IF the icon name contains a "\", PL will now look in an external folder for the icon before searching its database for the image. This is useful for the Table Grid View where icons can be referenced with a label list. The list can name the icons as say "images\my_image.bmp". PL will then look in a subfolder called "images" to the directory where the EXE is from.
BUGFIX Fixed the now famous "Attref scan count" issue. Thanks to the numerous people who reported how to reproduce it.
Copied conditions were not being properly cleared at the start of a run due to the magic that occurs to enable the condition editor to view the attribute states when a switch is clicked at runtime.
This caused the copied conditions to leak into the ether and trigger consistency/safety checks.
NEW The number separator character can be changed from the default ","
This is set under Settings -> System Parameters -> Number Separator


BUGFIX Graph scales would lockup when the graph consisted of a single -ve Y value and the option to extend the y-range was on. It was messing up the yrange. The scale code is protected against this and the y-range extender has been fixed.


BUGFIX Scenario option in previous release was busted


NEW Option Settings->End User->Ask DataSet Type On Load
This causes PL to put up the dataset type selection dialog before a dataset is loaded. This is useful where the user is dealing with a lot of dataset files with different extentions and wants to load a particular type.
BUGFIX Paste condition is cleared before an attref scan to prevent scan count errors during editing/renaming of attributes when there is a condition in the copy/paste buffer


NEW New option in Setting->Engine to unblock trains in FIFO order instead of the default LIFO order


BUGFIX routine editor and multiple screens. Show the step editor before editing the initial target attribute to ensure it has correct co-ordinates
BUGFIX About box positioning tracks monitor main window is on
BUGFIX Panels popped up by the model now appear on the monitor containing the PL main window (if they are independent floating popups)
NEW Added a debug option to report whenever an object (Exit or Dispatcher) initiates a restart of the run engine
Note that automatic restart-after-stops are not reporting, this option can be turned off in the settings
BUGFIX After an exit restarts a run, it was possible that some zero time unblock events could be posted to the FEC, giving the user errors when they attempted to interact with the model.
After the engine restarts, the engine now clears zero time events before returning to the user.
This might break old models which expect the run to pause after a restart from an exit but I think the new behaviour makes more sense. It will pause after the zero time events are processed.


[new file version]

NEW Routine operation: Iterate Table Rows
This makes it easy to iterate an attribute over every row in a table, from the first to the last. The modeller specifies an iterator attribute (routine attributes are most efficient) and a table.
Apart from the convenience, it is also faster.
Unlike the standard iterate operation, setting the iterator variable will NOT affect the loop; the change will be ignored when it comes around to doing the next iteration. This helps gain a bit more speed.
NEW Debugging for switches in Attribute, Condition or Multiple Condition mode.
Clicking on the switch in run pause will show the attribute/condition including the last values of the attribute reference.
This should assist debugging condition logic and switches which are not acting as expected.
In all cases, the value shown is the last value the attref returned (including during lookahead) and not the current value of the data that the attref refers to.
BUGFIX Run In Realtime now works again (was using the wrong FEC) It got broken during the V5 updates when a second FEC was added for async network events.
CHANGE Run In Realtime will now still advance the simulation clock if there are no pending events on the FEC. This is useful where an incoming broadcast or a conditional test in the _Run_continue broadcast will generate activity and the clock should be moving.
CHANGE When an attribute, cell, table, column overlay, gantt, traingraph, log driven or grid view was in a portal copy and pasted to a new location in the model (eg: through a paste-replace) it would update its reference only if the data object it referenced was copied along with it. otherwise it would remain pointing at the original data, even if that data became out of scope in its new location and there was new data to replace it.
I've redone it so when an attribute, cell, table, column overlay, gantt, traingraph, log driven or grid view gets pasted, it will re-bind itself to the "closest" data object to it matching the name of the original data object. If none exists, it will remain pointing to the original (now out of scope) data object.
This only applies to views in dynamic panels; the ones in view panels dont update, for now. This might change one day.
CHANGE Rework how attribute values are read. This is to allow the previous read value of an attref to be retained as efficiently as possible, needed for item attributes. We all hope I haven't broken anything here.
CHANGE Reworked the way table scrollbars are handled so they are more intuitive to users.
Clicking outside the thumb area now scrolls instead of jumping to the position clicked, like the OS scrollers do.
If "3d Proportional Scrollbars" is enabled, the scroll amount is a page of rows, otherwise it is 10 rows.
If the mouse is held down over a second, it autoscrolls.
NEW Table views have a new option "No Cell Menu" which totally disables the cell click menu.
If a cell click broadcast is enabled, it will be sent instead when the cell is right clicked, with the "_contextclick" item attribute set to 1.
NEW System attribute "Model Needs Saving"
The modeller can set/reset this to control whether PL will prompt to save the model upon exit. This is only useful for models used by editors, obviously a standalone EXE isn't going to be saving any models.
BUGFIX Left handed mouse XP option should be now supported. One of the Win32 functions wasn't consistent when the mouse buttons are switched.
NEW A warning message given if some objects in a multi-select could not be deleted
CHANGE Improved dialog for changing column width after a format change; dont bother showing it if the width is not changeling.


BUGFIX Data file close check was reversed after a lockfile/dataset file open error
BUGFIX TCP server sockets write to multiple connected clients. Reading from multiple clients is supported but may cause problems if packets are fragmented and they overlap. This would more likely happen with packets > 1KB over the internet. Probably wont happen over a LAN.
BUGFIX Removed the 5.03c ODBC error 12 hack. Its not necessary if the "Local Table" attref is set to s.Null Attribute for ODBC operations which Insert or Update data rather than retrieving data.
BUGFIX Restoring a hidden Table Editor window now redraws properly. (the hidden window was still setting the window's client rect, causing it to exclude the entire client from redraw as a minimised window has no client area.)


BUGFIX Major bug in subroutine/attribute management would cause platform crash particuarly if the platform was attempting to report an error in the model


NEW Support for recursion in SubRoutines.
SubRoutines can have "local" routine attributes defined. Each call of a subroutine gets a new copy of these attributes, meaning that if a subroutine calls itself (recurses) then the recursed instance will not overwrite the attributes of the instance calling it.
The local attributes of a subroutine are always cleared when it is called.
Since we dont have parameter passing to routines yet, inputs and outputs to subroutines will have to be via routine attributes defined in the main routine. These remain "global" to all instances of a recursed subroutine.
The included demo model demonstrates using recursion to derive the n'th value of the fibonacci sequence.
SPEED: String comparison has been sped up where testing for a match. This should speed up models with many item attributes
SPEED: Now avoid keeping unnecessary "undo" information for routine attributes. This should speed up routine attributes accessed during lookahead.
Note: accessing a routine attribute is faster than accessing an item attribute
CHANGE Have doubled size of gantt block click window so longer labels are OK
CHANGE formatting of routine export text cleaned a bit


NEW Expression parser rewrite
Numerical expressions are far more powerful, include logical operators, comparisons, references to table cells (with column label) and labels.
See idKBase note 316 for a reference on expressions.


CHANGE ODBC Error 12 is no longer reported to temporarily get around using the "fetch" operation to insert.


BUGFIX Tracks system unblock fix
An unblock was not occuring after a train went through a loop with a loop entry delay set but no loop entry delay was actually required


BUGFIX Table cell click BCs didnt have enough memory allocated for the newly added info in 5.03
NEW Multi-column lists now have full-row selection (eg: routine editor, table/attribute lists)
NEW Tool tips added to list fields which are too narrow for their column

  • changed the way the main planimate window is managed; now any needed scrollbars are placed at the edge of its available space rather than within the bounding rectange of the actual panel area.

This will reduce the need for scrollbars and look more sensible when a panel is larger than the screen area in one direction only

  • reworked the repaint of the "explorer" window to avoid flicker (InvalidateClientArea rather than a forced Show)
  • reworked the sidebar splitter code to avoid unnecessary forced repaints and made distinction between updating the splitter bounding rect and responding to its movement
  • reworked the clock to prevent it causing flicker of the main window as it repainted; did this mainly by setting flags so it doesnt become activated when clicked or moved (causing the main window to have to lose and regain activation)
  • Impose clipping on the sidebar objects to prevent them overrunning into the status bar

Probably some graphical glitches left; look out for anything new or weird with window display or mouse click handling.

CHANGE No longer round numbers < 0.0001 to 0 upon entry or import
NEW Cell views now support using a dynamic column reference as well as a dynamic row reference
this will make it easier to have cell views pointing at columns using a column label
NEW Table views have an option to send the cell click broadcast when an entire row and/or column is selected.
To distinguish from editing broadcasts, this broadcast is sent as follows:
Click on an entire row: _row set to the row, _col set to 0 Click on an entire column: _col set to the column, _row set to 0
When these options are enabled, the modeller must ensure to update the broadcast handlers to check for cases where _row or _col are 0
NEW Table broadcasts include a new attribute _contextclick which is set if the broadcast occured because of the context mouse button (usually the right button). This is useful together with the row/column click notifications
BUGFIX Lines properly clipped to panel area upon creation
BUGFIX RTF windows properly clipped to panel area upon creation
BUGFIX Mouse-forming of a box no longer does freaky things if the box extends into the no-mans-land window area (outside the panel work area)
BUGFIX Row/column selection now updates table window title bar
CHANGE Have reworked the form resizing code to manage relocating buttons when the form resizes automatically instead of coding each case-by-case
Enabled resizable modal dialog
NEW Attribute/table and some labelt dialogs are now resizeable (they dont remember their size or column settings yet)
BUGFIX Crash merging models with sub label lists being referenced should be now fixed (wasnt updating owner of temporary Sub label list to the new one before merging)


This version introduces Customisable Table Views
Tables can now have a column arrangement, colours and formatting customised for each view of the same table.
By default this feature is off for a table view; click in its column line to bring up a query dialog to enable the customised view mode for that view.
Once a view becomes customised, it will not reflect columns rearranged, added or reformatted in the source table, it holds on to its own format.
A view can contain multiple instances of the same column with different colours/formatting.
Table click and scroll broadcasts send their "_row, _col, _to_row, _to_col, _colscroll, _rowscroll" values in view co-ordinates. For a cell click, there are additional attributes set: _data_row and _data_col, which will be the "actual" cell in the source table that was clicked.
Table click broadcasts sent for a block of cells will have these new attributes set to 0; A block in the view may not correspond to a contiguous block in the source table (since columns can be rearranged in the view).
Deleteing all columns in a view reverts the view to non-customised.
Tables with customised views should not import data with the dynamic column resize feature since it may reallocate columns in the table first, messing up the customised view(s).
Different views of the same column can not only have different formatting but also different label lists assigned.
Routine code access to the table and import/export/dataset operations will always use the format as defined in the table. Interactive copy/paste from the view of the table uses the formats defined in the view.
Routine-level access to a filtered "view" of a table will NOT be provided as this will be implemented by a new table type designed for this porpise, with the working name of a "Record Set".
There should be little impact on model run speed when no views are visible as the processing for the customised views is only done on table display/editing/user interaction and not in the model runtime engine.
Some options and table-level settings would make sense being customiseable per view but were skipped for this release as focus was put on the key support code to make the views possible.
Cell specific formats (eg: cell colour, format, font) are supported but the cell specific format information is stored with the table, not the view. This wont be changed for now. The precedence for formatting and display of a table cell is:

  • cell specific format/colours
  • row colour (if Column Colour Precedence is off)
  • view customised format/colours
  • column customised format/colours
  • row colour (if Column Colour Precedence is on)

idkbase note 318