ReleaseNotes:Feature Review December 2014
This summary covers the extensive Planimate enhancements in 2014, from version 6.3.0 to 7.19.0.
- 1 New UI
- 2 Copy Paste
- 3 Digital Signing
- 4 Modelling
- 5 Run Engine
- 6 Planimate-As-A-DLL
- 7 Track/Rail Modelling
- 8 Changes, Removed and Deprecated
- 9 Deprecated
Planimate has a new editing interface. The palettes have been replaced by a hierarchy of selections for objects, item classes, paint objects etc. It features the ability to drag out popups with configurable position, size and transparency, and support for click drag or touch usage.
Interaction mode has been merged into object mode (via the object context menu) and flow editing now features multi-level undo and is readily exitted using the Escape key.
Many context menus have been enhanced to give extra detail and a number of "deep" menus such as paint button click actions have been streamlined.
The appearance of the main window (including the status bar) and the defaults for newly added paint objects / views have been changed to a contemporary flatter look. The application icon and about box reflect InterDynamics' branding.
Portals can be copied and pasted between different instances of Planimate, as well as directly saved/loaded from file.
Copying and pasting a selection of objects within a model now also copies any flows that connect them.
Routine code can be copied/pasted between different instances, the text can be saved, shared via email then later pasted back into a model.
Planimate releases are now digitally signed, this prevents Windows questioning their authenticity. The application compiler includes services to create an un-signed compiled PBA and, optionally, re-sign it with your own code signing certificate. This will prevent end users having to deal with Windows questions about application safety and will become increasingly important as operating system security is further tighteneded to protect against untrusted software.
New Short Cut Keys
In table views, DEL, Ctrl-C and Ctrl-X are supported. In a routine list, Ctrl-A selects all, Ctrl-R activates replace reference and F2 activates entire-line text editing. Ctrl-G (run), Ctrl-T (stop) and Ctrl-Shift-H (toggle user mode) now work from within the routine editor, debug window and other mode-less windows.
More support for complex combinations of viewports and resizing.
The Map Paint Object now supports making a selected co-ordinate range visible. This is useful in providing "make visible" to end users for a set of locations.
Labels which are bit flags can be combined using "|" instead of respecifying the label list name for each one.
Custom cell formats can override text columns, enabling data and text to be mixed in a column.
Unused change objects and routine lines that are disabled no longer generate errors, enabling text/template code to remain in a model.
Any routine line can have a breakpoint set on it, you do not need to insert a breakpoint line
Control over text centering in graph label overlays
Item attribute values can be edited during run from the item click menu
File Operations In Routines
- The file operations in Change Object -> File have been made available as routine operations (the Change-File operations will be removed). They are compatible with text expressions and are supported by a "_fileoptions" label list. The new ability to combine binary labels using "|" is of particular benefit here.
- New Routine operations can determine the number of columns/lines in a text file.
- New Routine operations enables writing/reading a customised table view to file, retaining the customised column arrangement and format.
Files with unusual line enddings are better handled. The SavePanelImage operation now supports PNG and JPG as well as BMP file types.
Other New Routine Operations / Properties
- AdvanceToTimeDialog() configures and shows the advance to time dialog.
- UpdateColumnRefs() enables a table to have its structure changed in code with existing column references updated as required by any changes in columns.
- Table Columns have a "userdata" value that a modeller can use as required in data management.
- Table Driven Entries in Indexed mode now set "_row" to the row which generated the item.
- Planimate can now forward gesture events (touches, swipes) which can make an application using maps much more responsive on touch enabled systems.
Graphics & Other
- Line graphs can plot icons on points
- Clear, Cut, Copy and Delete are supported on multiple selected table rows even if the view has been filtered
- RTF Notes have been rewritten, supporting set/read in code using text attributes, enabling their content to be stored in text table cells instead of the DB file
The embedding API continues to mature and has been extended to include
- callback function on pause
- thread management functions are now provided by Planimate greatly simplifying embedding Planimate.
- receiver filter name for broadcasts
- object labels can be renamed by RenameLabel()
- font selection/scaling settings for routines/dialogs - paint image smoothing - can use property ImageWidth/ImageHeight to query size of image - can access releasenotes.txt from the help meni - multi column gantt bar click - program files folder security implemented - pipe click broadcasts - dynamic control over use of pipe load limiting - window close[x] gives access to stuck model
- A new CreateRoute() routine operation enables automatic assignment of a route to an item, useful in cases where ambiguity is not a problem
- FillRouteStep() now returns any error results to the modeller instead of stopping the model
- New system attribute s.ItemRouteSectionRoad enables a location to know which road a train which has lookead ahead will depart on
- Trains can be "reversed" where the tail becomes the front and the train reverses direction
- The Change / Table Route Assignment now retains a successful route assignment in lookahead, enabling a node to make use of the knowledge of which road an item will take when it enters
- Routine operation SectionRoadTrain() enables a model to query which item/train is on a given section road
- A train entering a multiserver delay representing a delay in a loop can "look through" the capacity and use the go/no go outcome to adjust the time it will spend in the delay, reflecting whether it needs to stop or can roll through
- The modeller can control track colours instead of the automatic colouring
- Train length/tail handling is robust with zero length/time capacity nodes and the track configuration table handles length data as well
- There are now 4 tail data attributes that a modeller can use to store information at the head of the train that is made available when the tail passes the same point
Changes, Removed and Deprecated
- CopyToClipboard chagned to use _fileoptions
- Blocking a periodic arrival entry is now a model error
- All colour values can be specified either as palette values or arbitrary colours using #AARRGGBB form.
- The index values for Pipes and Spatial Links in the _object_types label list have changed due to cleanups
- Table Clear Before Save has been repurposed to "Dont Save Row Data" which leaves the table intact without saving it
- The _export_options label list has been replaced by the _fileOptions list. This impacts the clipboard routine operations.
- Standalone change objects which receive broadcasts are no longer supported, they are converted to have an entry/exit/flow.
- Matchedrow/cell/index no longer cache results, guaranteeing the lowest matching index is always found
- The mechanisms for writing files for use with the log viewer PBA have been replaced with an ObjectChange broadcast which works in conjunction with a log viewer module, with a focus on it still being easy for a beginner to use
- Table option to "Index Colours From 1 Not 0"
- Remaining DataSet1 load code and menu options
- Option to show a button bar
- Support for the 16 colour DOS ICN files (older versions can convert DBs full of them to BMP)
- Support for duplicate labels in a list - each label name must be unique
- Button click actions that are available as routine operations
- Writing row/column references to a file
- Change-File submenu options (replaced by routine operations)
- Condition() routine operation (use a CASE)
- Dialog() is being reviewed, use the MessageBox() functions where possible