ReleaseNotes:Feature Review December 2014
This summary covers the extensive Planimate enhancements in 2014, over versions 6.3.0 to 7.19.0.
New User Interface
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 supports both click-drag or click only usage.
Interaction mode has been merged into object edit mode (via the object context menu) and flow editing now features multi-level undo and is readily exited using the Escape key.
Many context menus have been enhanced to give extra detail and a number of "deep" menus (e.g. paint button click actions) have been streamlined into the top level context menu for the object.
The appearance of the main window (particularly 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.
Copy Paste Support
Portals can be copied and pasted between different instances of Planimate, as well as directly saved/loaded from file within a model.
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 etc, 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 a signed PBA 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.
Planimate now supports operating under modern security policies where the Program Files folder is read only to applications.
Modelling & Editing
New Short Cut Keys
- In table views, DEL, Ctrl-C Ctrl-X and Ctrl-V 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.
File Operations In Routines
- The file operations in Change Object -> File have been made available as routine operations (the Change-File operations are deprecated and will be removed). They are compatible with text expressions and are supported by the "_fileoptions" label list. The new ability to combine binary labels using "|" is of particular benefit here (see below).
- New Routine operations can determine the number of columns/lines in a text file.
- New Routine operations enable writing/reading a customised table view to file, retaining the customised column arrangement and format.
- Files with unusual line endings are better handled.
- The SavePanelImage operation now supports PNG and JPG as well as BMP file types.
- The Window close [x] can be used to stop a run which is stuck in a graphical loop even if editing tools are hidden at the time, so long as the user has an edit key and its not a compiled PBA.
- Change objects not in a flow and routine lines that are disabled no longer generate errors, enabling text/template code to remain in a model without it generating errors due to missing data.
- Multiple lines can be selected and enabled/disabled during a run, even if the lines were disabled at the start of the run.
- Breakpoints can be set/cleared on routine lines during a run without having to insert an explicit BreakpointIF line.
Other New 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 now processes gesture events (touches, swipes) which can make an application using maps much more responsive on touch enabled systems.
- RenameLabel() now supports renaming object labels. This is useful for dynamically created objects.
- Paint properties ImageWidth/ImageHeight enable the original size of a Paint Image target image to be read
Other Modeller Features
- 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
- More support for complex combinations of viewports and resizeable panels.
- 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.
- Item attribute values can be edited during run from the item click menu
- A broadcast can be filtered at a broadcast entry using filter text. This provides an alternative to creating many broacasts
- There are new settings for font scaling, to better support high DPI displays
- The font used in routine editing can be selected
- Paint Image objects now feature optional anti-aliasing
- You can access the ReleaseNotes.txt from the help menu
- The Gantt click popup is now multi-column and cleaner
- Pipe click broadcasts are now available instead of the default popup
- You can dynamically control if a pipe uses load limiting, avoiding complex workarounds in special cases
- Custom cell formats can override text columns, enabling data and text to be mixed in a column.
- Control over text centering in graph Plot Label mode
- Exceptionally significant effort was invested in cleaning up the codebase to improve performance, make better use of CPU caching and improve maintainability
- A new CreateRoute() routine operation enables automatic creation and 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 better 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
The embedding API continues to mature and is in active use.
- Calling back a function on pause is available
- Thread management functions are now provided by Planimate greatly simplifying embedding Planimate. The separate loader DLL is no longer needed.
Features Changed, Removed and Deprecated
- The CopyToClipboard operation has been changed to expect the _fileoptions label list. Existing code will need updating.
- 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 object type 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 during a save, just not saving the data.
- The _export_options label list has been replaced by the _fileoptions list. This impacts the clipboard routine operations and is also used in the new file operations.
- Standalone change objects which receive broadcasts are no longer supported, if encountered in older version models they are converted to have an entry/exit/flow.
- Matchedrow/cell/index no longer cache results, guaranteeing the lowest matching index is always found. If speed is important, cache the results yourself.
- The mechanisms for logging/writing files for use with the log viewer PBA have been replaced with an ObjectChange broadcast which works in conjunction with a new 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 Planimate 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
Deprecated (Due for removal)
- Change-File submenu options (replaced by routine operations)
- Condition() routine operation (use a CASE)
- Dialog() is being reviewed, use the MessageBox() functions where possible