|Helix RADE changes since 6.2b23 (5908)
Click each section header to show or hide that section.
New and Improved Features
User Editor (R7461)
The User Editor receives a major make-over in Helix 6.2. Some refinements to the visual presentation — removing the gray window background, for example — remain to be done, but the form and function are done.
New feature: Non-Modal Editor: For the first time ever, the User editor window is non-modal. You can now open multiple users at once and leave user editor windows open while working on other parts of the collection. Comparing the menus of two users is now a breeze. (Click the image on the right for a larger image showing multiple user editors open and overlapped with other editor windows.)
Because the user editor is now non-modal, it can also respond to other actions. The appropriate menu commands are enabled, with the ‘Icon’ menu in particular holding a number of useful commands such as: Open, Open Used By Window, and Remove Icon from Menu which all act on the icon selected. In addition, double clicking on an icon in a menu opens that icon, and option double-clicking an icon opens its ‘used by’ window.
New feature: Drag From Anywere: You can now drag items into a user’s menu from anywhere in the collection. Drag from the Element Panel, the collection or relation window, or even the “Used By” window.
New feature: Whole Menu Dragging: You can now drag an entire menu from one location to another. Turn a menu in the menu bar into a submenu (hierarchical menu) by dragging it from the menu bar to a menu slot. Promote a submenu to the menu bar by dragging the submenu to the menu bar. Rearrange the order of menus, or move a whole menu from one user to another simply by dragging it from one place to another. (Note: A planned enhancement to this feature will allow you to nest submenus inside other submenus. For now, only one level of submenu is possible, as it has always been.)
Enhanced feature: Inspector Based Editing: All properties of the user — and the selected menu item — are now presented in the Inspector.
The image on the right shows the Inspector as seen when editing a user. The properties of the user are always present, with additional properties shown when a menu, submenu or menu item is selected.
In this image, the ‘Feature Requests’ menu item (see previous image) is selected and, along with the the user and menu names, the Inspector shows the properties for that menu item. You can now tell at a glance whether the selected item is a view, sequence, or another object type. A keyboard shortcut can be set simply by double clicking on that property in the Inspector and typing the shortcut.
In the case of a view, you can also see the view permissions which could only be seen in Classic by locating that view in the full list of views. This new method should provide a much more reliable way of setting permissions for a user.
Regarding keyboard shortcuts: Prior versions of RADE blocked you from using the same shortcut for more than one menu item. Helix RADE 6.2 removes that limitation, but warns you when a shortcut is duplicated by highlighting the property in yellow.
Enhanced feature: Element Panel Integration: Instead of a list of icons integrated into the window itself, the user editor works with the Element Panel. When a user editor window is open, the Element Panel shows the views, sequences, users, and commands that can be added to the user’s menus.
- Setting view permissions for views not on a menu is problematic
In its initial release, the workaround is to add the view to a menu, set the permissions, then remove it from the menu. The permissions will be retained.
- The User editor window has a gray background
The background will be removed in a future release. (The ablity to create ‘oddly shaped windows’ is problematic in both macOS and wxWidgets.)
- Some user interactions produce unexpected results
While we worked to fix as many behavioral issues as possible, a few slipped by. You can see video demonstrating how to create — and more importantly, how to avoid — these bugs on our YouTube channel.
Additional New and Improved Features
- Entry Views retain displayed record between launches (R7937)
When an entry view is closed, it now retains the ID of the record that was being displayed. The view will display that record the next time the view is opened, even after a quit/relaunch of Helix, assuming the record has not been deleted by an intermediary action.
- Instances of record write locking reduced
Helix is now less likely to write lock a record when locking is not necessary. Reopening a view, cancelling a Quick Query, and other actions that would previously result in a displayed record becoming write locked no longer do so.
- RADE now specifically reports whether a Keep Value or defaulted field within a repeat rectangle is what is making it invalid.
- The first message in the Apply Structure dialog now reports the number of objects being applied, and the last stage is changed from Wrapping Up to Sorting to be more accurate.
- When a new view is created, the default Import/Export record delimiter is now Linefeed (ASCII 10) instead of Return (ASCII 13). Previously created views are unaffected by this change.
- The default font for new rectangles is changed from Geneva to Lucida Grande. The default size for data/label rectangles is now 11 point, and the default size for command rectangles is now 10 point.
- Deleting records via AppleScript better handles the case when records are not found (R8137)
The original Apple event specification for deleting records states that the event returns the number of records deleted. However, when a requested record no longer exists, it was returning an error instead of the number of records actually deleted.
This is fixed, but there are two aspects to this specification that need to be understood:
- If a record is write locked when an Apple event attempts to delete it, the record is skipped, and no error is returned. It is the script writer's responsibility to capture the return value (number of records deleted) and to compare it to the number requested to confirm that all intended records were in fact deleted.
- If a record does not exist when an Apple event attempts to delete it, the script throws an error (240: Illegal Record ID) just as it always has. However, Helix now also returns the number of records successfully deleted in the “partial result” parameter of the error, which can be captured to the variable errPrtas follows: on error errMsg number errNum partial result errPrt
- Various preferences that were formerly handled via resources are now handled as true preferences.
Helix 6.1 and prior store many preference settings in the resource fork of the Helix application. Helix RADE 6.2 moves these to the modern preference ‘plist’ avoiding the need to reset them with each installed upgrade.
Preferences that are now stored in the plist:
- HxIconDuplicateText: Duplicate Icon: Text added to the name of an icon being duplicated.
- HxIconDuplicateAppend: Duplicate Icon: Append or prepend the extra text?
- HxIconDuplicateOffset: Duplicate Icon: The number of pixels to offset a duplicated icon.
- HxAppleEventMaxAdd: Apple Events: The number of records that can be added in a single Apple event.
- HxAppleEventMaxGet: Apple Events: The number of records that can be retrieved in a single Apple event.
- HxAppleEventMaxDel: Apple Events: The number of records that can be deleted in a single Apple event.
- HxAppleEventMaxEvents: Apple Events: The maximum number Apple events that may be open at one time.
- HxAppFRTL2Val: Record block size for new collections. (This is untested: do not change this value without first discussing the ramifications with QSA ToolWorks technical support.)
- HxSequenceErrorHandling: Whether to use Helix 4.x, 5.x or 6.x style error handling in sequences. See this technote.
- HxShortYearRollover: First year in the range a two-digit entry should be interpreted as. See this technote.
- HxSplashScreenDuration: The number of ticks (60th of a second) the splash screen is displayed on screen. (RADE, Client, Engine only.)
- HxUseTempFolder: Use temporary folder for scratch file, etc. Deprecated and soon to be obsolete.
- HxServerQuitDelaySeconds: Helix Server: Number of seconds to delay before abandoning Clients after Quit event is received
- HxServerTimeoutSeconds: Helix Server: Number of seconds to wait on a non-responsive Client before disconnecting it.
- HxNetworkTimeoutSeconds: Helix Server: Number of seconds to wait on a non-responsive network connection before abandoning the Client.
For more information on editing preferences, see this technote.
- Helix Utility’s messages when repairs are needed are more accurate.
There are also a number of bug fixes which should bring added stability when working in Design Mode.
- R8012: Scrolling a form with a multi-page subform now works properly
If a view contains a subform that contains enough data to cause multiple pages to display, it was possible to scroll the page down and up in a manner that caused the pages to disappear from the screen. This has been fixed.
- R8046: Importing a record with no terminating record delimiter works again
A previous fix to record importing inadvertently considered the last record in an import file as invalid if it did not end with a record delimiter. Helix now properly imports the final record regardless of the presence of a final record delimiter.
- R8112: Clippings file no longer creates an empty clipping when 16MB limit is exceeded
Helix RADE 6.2b23 (5908) added an error message informing the user when the macOS limitation of 16MB for a clippings file was exceeded, but the warning was issued after the attempt was made, requiring the user to name the proposed clippings file, then to delete the empty file after the failure. Helix RADE now tests the size of the file before asking the user to name and save the file, thereby avoiding the needless work.
- R8126: RADE no longer crashes when attempting to display the settings of an invalid form in the Inspector
If an entry template containing subforms was rendered invalid, attempting to inspect a view attached to that template would crash when the view was clicked on. The Inspector now properly highlights the template as being invalid.
- R8139: Structure Check no longer reports damage when a specifically constructed view is displaying a specific type of record
A view that contains both a subform and a queried dynamic popup would trigger a structure check failure message if a save occurred while the view was open with a record being displayed that also is able to perform a successful lookup of data from another record within the same relation. This ‘damage’ would be fixed as soon as the window was closed. The false error is no longer reported.
- R8145: Invalid font index no longer returns a random font
If a styled text entity (styled text data or styled text in a label rectangle) references a font that is not in Helix’s internal font index, a random value was being returned, resulting in a random font being used. Helix 6.2 uses the default substitute font (as defined in the HFAC/6 resource) when this situation is encountered.
- R8153: Changes to the setup of a dynamic popup no longer trigger a crash when the view is open
If a dynamic popup is changed while a view that displays that popup is open, RADE would crash when the change was committed. This is fixed.
- R8157: Removing a submenu (hierarchical menu) via AppleScript no longer leaves the submenu’s icons as ‘used by’ the user
When a submenu is removed via AppleScript, it is important to inform the icons within that submenu that they are no longer in use by that user, so they can be deleted if they are now unused. That was not happening, but it is now.
- R8165: Dragging an icon directly to a template no longer creates an incomplete rectangle
When dragging a field directly to a template, the automatically-created rectangle was not properly noting the data type of the field. This resulted in making it impossible to apply custom formatting to that rectangle. This has been fixed.
- R8166: Case settings are handled better when Custom labels are used
When a custom label is used for displaying flag data, the ‘Mixed case’ style was causing just the first letter of the label being capitalized. The ‘Mixed case’ setting now treats the custom label ‘As Entered’ and does not alter the case from what the designer entered.
In addition, the case setting is now applied to custom labels when the output is a plain text field. Previously it was only applied to checkboxes or radio buttons.
- R8168: Buttons created in RADE 6.2 now show their names in Helix 6.0/6.1
Helix 6.2 simplifies the underlying code for determining where the displayed name of a command rectangle (button) is taken from. Helix RADE 6.2 was creating new buttons using these simplified rules, making the naming fail in Classic Helix applications — Helix RADE & Client for 6.0/6.1. RADE 6.2 now takes care to also set the flags needed by Classic so that backwards compatibility is retained.
In addition, other internal flags (such as the one that determines whether a picture is a ‘big picture’ or not) are more accurately handled. This avoids situations where a button label could appear as blank or as random characters. Any quirky button name behavior should be resolved by editing the button and re-committing it.
- R8174: Making a template invalid while an attached view is open no longer crashes
If a view-and-template pair were both open, and the template was changed in a way that resulted in an invalid template, RADE would crash when that (invalid) template was committed, as it tried to refresh the view using the invalid template. RADE now closes the view when an invalid template is committed.
- R8176: A subcount tile no longer blocks the ability to enter a constant in the second hole of a math tile
The subcount tile was improperly reporting its output datatype (number) making it impossible to define a constant for the other hole of a math tile.
- R8178: Saving with an opened and changed abacus no longer results in a 7602 error
If a collection was saved while an abacus was open after that abacus had been changed, RADE would crash when that abacus was subsequently closed. This is fixed.
- R8180: Revert of a format change no longer crashes or results in damage
When a custom format was modified, then reverted, the custom label list was being discarded, leading to an eventual crash. This has been fixed.
- R8181/R8182: Defining Static and Dynamic Popups in Inspector works better
A number of improvements/bug fixes were made when defining popup menus:
- Choosing a Menu Value or Data Value now defaults the other with same value, if none exists.
- It is no longer legal to create a popup without specifying a Menu Value. (Doing so resulted in a menu full of blank lines.)
- The Menu Value and Data Value labels now use a consistent style.
- A new rectangle defaults with the Allow variable width property on, since that is how macOS acts. (Note that this setting has no effect in macOS at this point, but it is provided for Classic compatibility.)
- AppleScript terminology changes
A number of terms have been changed in the AppleScript dictionary and in the Inspector, to make them as consistent as possible.
- The repeat rectangle property autoclose is now autoclose linked form
- The repeat rectangle property autoopen form is now linked entry form
- The command rectangle property has command label is now has local label
- The legacy event enumerator delete record is now delete recordID to avoid conflict with view permissions
- The legacy event enumerator delete records is now delete recordIDs for consistency
- The popup menu property allow text entry is now allow typing
- The popup menu property dynamic width is now allow variable width