ReleaseNotes:Planimate 5.23 Release Notes

From Planimate Knowledge Base
Revision as of 17:46, 17 December 2009 by Rick (talk | contribs) (Created page with '_TOC_ === 5.23d === *'''NEW''' Enhancement to the background drag broadcast.<br> If instead of dragging, the user clicks, a drag broadcast is sent with _command = 0.<br> This…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search



  • NEW Enhancement to the background drag broadcast.
    If instead of dragging, the user clicks, a drag broadcast is sent with _command = 0.
    This enables handling of clicks (select and context) as well as drags on the background.
    _dx and _dy are set to the mouse co-ordinate clicked, in iFlow co-ordinate space (0,0) at bottom left in panel space co-ordinates
  • CHANGE background drag broadcast
    The drag-begin broadcast (code 1) used to send _dx and _dy as 0 Now they are set to the mouse co-ordinate in iFlow co-ordinates (0,0) at bottom left.

  • NEW Enhancement to DLL code to support returning text.
    The existing DLL API supports PL_DLLPARAM_STRING which can be used to pass a single label to/from a DLL.
    This would also work for passing a text formated attribute.
    Its been enhanced so if the destination of a returned DLL string is not associated with a label list, then it will attempt to assign it as text (just as if the $= assignment was made with that reference).
  • NEW New string system attributes have been added to retrieve information about the currently logged in user
    These are mainly intended for use in corporate environments where users log in using a domain and LDAP is in use.
    More background and a useful diagram here:
    On non domain environments (ie: standalone PC) these will all return empty strings except s.UserNameNTCompatible

    [1] s.UserName
    Retrieves the name of the user, eg: "John Smith" This name is not necessarily unique. This only works in a domain environment.

    [2] s.UserNameQualified
    Retrieves a comma delimited list of attributes and values that uniquely define the user.
    eg: "CN=John Smith, OU=sales, DC=somewhere, DC=com"

    [3] s.UserNameCanonical
    Retrieves the user identifier in an alternative format known as a canonical name.
    eg: ""

    [4] s.UserNameNTCompatible
    Retrieves a users name in an older Win NT "SAM" compatible format
    "IDSTAFF\Rick" (on a domain IDSTAFF is the domain controller)
    "LISTER\Rick" (local account on a non domain PC called LISTER)
    This is a flat way of identifying users which has been superceeded in LDAP environments which are hierarchic.

  • CHANGE Popup close broadcast is now sent just before closing the popup window so its final co-ords should be available. It was previously being send just after the popup was deallocated.
  • FIX Fix validation of SetFormat routine operation to prevent invalid format codes being assigned (which would trigger lower level system errors)
  • FIX Attempting to set a -ve scroll on a table view now reports an error instead of making the table view go strange
  • FIX "Free Text Entry" is now alias text to "Text" in the _value_formats label list. This enables previous datasets which referenced the mode by name to still load properly
  • FIX Block Move references (now cell references) were not being recognised by block move operation


  • CHANGE Free Text is now known just as "Text" Sometimes "strings" will be used in documentation; that means text also.
  • NEW Documentation on editing references has been added to the wiki
    This documents the various types of references and they way they can be used in expressions.
  • NEW 15 new text string functions have been added.
    These are implemented as part of the "expression" mechanism in Planimate rather than as routine operations. This enables them to be combined in useful ways which would be awkward if they were routine operations since they are limited to one per routine line.
    The new operations are:
    strlen(), strleft(), strmid(), strright(), strreverse(), strupper(), strlower(), strcompare(), strfind(), strclean(), strinsert(), strdelete(), strreplace(), strchar(), strasc()
    and are documented on the wiki:
    Note that strsub introduced in 5.23b has been replaced by strleft(), strmid() and strright() which have far clearer intent.
  • NEW Table column option to confirm adding new labels. This is useful when labels are automatically created if text typed in fields is not an existing label.
  • NEW Added an expression quick-reference to the Help menu. Note a function browser (like the routine operation browser) is also planned.
  • NEW Further enhancements to text assign ($=)
    If the destination is not set up for text, then any test assigned to it is interpreted as the format of the attribute/cell.
    This is useful when you want to set an attribute to a time or other formatted value in code.
    eg: p.attribute $= "12:00"
  • NEW Dataset2 can now support saving text formatted attributes.
  • REMOVE BLOCK mode references have been removed.
    In cases where they were used in a block move, a cell reference is substituted instead to specify the top left cell. Older models will be updated.
    Saving of a block from a table to a file is no longer supported. If such a reference was being used, a warning about it is given when the model loads.
  • REMOVE PDF and CDF references are now just COLUMN references.
  • FIX "Open With Combo List" now does not close the combo if the user types a label not in the field


  • NEW "Edit Order" is now available for Attribute views
  • NEW Text -experimental string functions:
    substring(string,start,length) Enables parts of a string to be extracted in a flexible way.
    reverse(string) This reverses the text of a string
    More on these later, still to be finalised.
  • FIX Free text views update when source is changed by another view
  • FIX Text attribute views work
  • CHANGE Way expression functions are saved/loaded has been changed
  • CHANGE Internal rework of attribute reference editing for upcoming expansion
  • CHANGE Internal code cleanup (source #include tree cleanup)


  • This is a first, largely untested release with string support added to
  • attributes. As a lot has been reworked, please proceed with caution.
  • Please report any strange behaviour or messages.
  • NEW Portal and Routine attributes support "Free Text", meaning attributes can store strings without needing to use a label list.
    This is progress in improving PL's string handling capabilities and in itself should help reduce need for temporary label lists when preparing a string for eg: a filename and in the future ODBC.
    The attribute editor and Attribute Views support free text but only single lines at this time, although the internal representation will work up to 16KB of text length.
    To assign to text attributes (and free text cells too) use the new $= operation.
  • NEW A new operation for assigning text has been added:"$= (SetText)"
    This operation enables assignment to a text attribute or table cell, it is not useful for labels since no numerics are involved (use the existing FormatIntoLabel for these)
    This operations supports concatenation of references to build up strings, including numeric and label attributes and cells (which will be interpreted as their formatted text).
    The new '&' operation (not to be confused with '&&' enables multiple text to be appended together. Quoted strings eg "Hello" are supported. Single quoted characters are as well for example '"' inserts a double quote.
    So if you have

p.att1 = 1,234    (values with comma)
p.att2 = "test" (label)
p.att3 = "test2" (free text)
and you use:
p.att4 $= p.att1 & " blah " & p.att2 & ' ' & '"' & p.att3 & '"'
and will get the text:
1,234 blah test "test2"

  • NEW Attribute list now shows the Units of the attributes
  • CHANGE A lot of the code in PL where text/values/labels are formatted for presentation (including routine code, reference formatting, expression parser, file reading/saving) has been reworked to avoid using "stack based" temporary strings. Instead a string cache is used.
    This is intended to reduce stack overflow problems in recursive and deep routines where text processing is involved.
    A 'system error' has been added when PL closes which reports any buffer mismanagement. Please report if this error ever appears.


  • NEW Added a "Break" button in dialogs during edit mode which will throw a breakpoint
  • CHANGE Default comparison for an IF is now "att != 0" instead of "att == 1"
  • CHANGE Enabled PL's standard dialogs and Dialog() routine operation dialogs to use modern style controls (buttons, checkboxes, radio buttons, fields)
    Note some dialogs may have overlap issues to cleanup as the modern controls are somewhat chunkier
  • CHANGE Have reworked dialogs so the button order corresponds to the way Windows arranges buttons (OK/Cancel, Yes/No/Cancel Save/Discard/Cancel etc)
    TAB order should be as before. Please report any dialog which is inconsistent with this.
  • CHANGE Route dialog now has a close button instead of the pointless ok/cancel