GLOBAL * New: Allow Ctrl+Shift click in a list to select (or deselect) all elements in the selected range. Elements outside the range are unaffected. - Behaviour as in Windows 10 Explorer: unselected->unselected => range first to last all deselected unselected-> selected => range first to last all deselected selected-> selected => range first to last all selected selected->unselected => range first to last all selected * New: Allow Ctrl+Shift click in a dataset to select (or deselect) all elements in the selected range. Elements outside the range are unaffected. * New: When typing in a list or tree to find a matching element, allow space (and in trees also *, + and -) to be added to the search string by holding Alt or Meta down. * New: In lists, tables and property tree sheets, allow repeating the current keyboard search by holding Alt and pressing Home, Down, Up or End to get the first/next/previous/last match * New: In lists, tables and property tree sheets, allow adding Enter to the keyboard search string by pressing Alt+Enter * New: Simple and list dialogs support cursor left and right within rows of buttons, e.g. OK and Cancel * Change: In lists, keyboard string searches previously always started from the top of the list. Now start from the current target element (dotted outline). - To restart a search from the top, press Alt+Home - When typing the first character of a new string search (and only then), if no match is found then wrap around and search from the start too, similar to old behaviour. * Change: When automatically creating filenames based on model or metamodel data, illegal characters were filtered differently depending on the platform. Change to filter the same way on all platforms, so saving files on Linux results in the same names as on Windows. This is particularly important when multiple platforms share the same VCS repository. - Filter each character individually to either itself or _. Since we can't allow errors to occur when a platform encoding cannot support a character, map unsupported characters to _ too, leaving it up to users to make sure their encoding on all their platforms allows (or disallows) in the same way for all characters they use." - Filtered characters are: \/:*?"<>|% - % is not strictly illegal, but is not protectable on DOS by double quotes, so disallow for convenience of batch scripting. In contrast $ on Unix is allowed, as it can be protected in shell scripts by single quotes. * Fix: Avoid some errors on Linux where current view's window is nil when building XIC for text widget - Replaces LinuxInputManager.mep * Fix: Keyboard navigation in degenerate Tables (zero rows/columns) could give an error in rare circumstances. - Page Up with zero columns resulted in a primitiveFailed * Fix: Error "This platform does not support a file name syntax for accessing remote files" when reading SVG files from a UNC path * Correction: In a multi-select dialog, could not press OK if there were no selections - Cancel offered the desired effect, except in Options | Repository | Metamodellers where an empty selection was useful * Change: Make searching in tree column of property sheets use same rules as in lists - Start from target element (dotted outline), not selected element * Correction: In a Windows menu with a submenu, clicking elsewhere in the parent menu while the submenu is open closes both menus and does nothing - 1) hover on item with submenu until submenu appears - 2) move to another item in the parent menu and mouse down on it before submenu disappears - Also, in 2) moving in parent to hover over a new item with submenu closes all menus without opening submenu - With this correction, the parent menu stays open. - If clicking and mouse up occurs before the submenu disappears naturally after its timeout, the click will have no effect and must be repeated: still, better than both menus disappearing * Correction: Two rapid clicks on toolbar buttons, checkboxes, spin buttons and radio buttons were being interpreted as a single click, since normal buttons were made to ignore the second click of a double click. * Correction: Display of some images in symbols failed on X11, if the image palette depth did not match the screen palette depth, but the bits per pixel and palette matched otherwise - stdout (normally sent to /dev/null by metaedit script in 5.1) showed X11 Error:, Major: 72 (X_PutImage), Minor: 0, Error: BadMatch (invalid parameter attributes) - fixed by full rendering rather than shortcutting. * Correction: Selecting the bottom, partially-visible row in a Table did not make it fully visible LINUX * New: Allow errors thrown by X to be handled in the image. Without this, X errors are handled by the VM by logging them to stdout over several lines. When loaded, this package silently handles X errors; when unloaded, it returns handling to the VM. * New: Allow setting the modification time of files on Unix(-like) systems, e.g. when saving generators to .rep files Mac OS X (not currently scheduled for SR1) * New: Draw Mac-look Radio Buttons with Cairo if Cairo is on and we are not on a Mac - without this, buttons are passable on Windows but ugly on Linux * Correction: Radio Button clipping did not take earlier clipping into account, and button also extended outside bottom of clip bounds * Cosmetic: Improve positioning of Radio Button - Only tested on Windows and Linux Changes & Versions * New: In the Comparison window showing differences between pairs of texts with highlight colouring for the background areas including the changes, be able to show the same area colouring scaled down into the space to the right of the scrollbar, making it easy to scroll to the next change. * New: In the Compare window showing differences between pairs of graph snapshot texts with highlight colouring for the background areas including the changes, show the same area colouring scaled down into the space to the right of the scrollbar, making it easy to scroll to the next change. * New: Support left and right cursor keys in Changes & Versions Tool's Graphs and Objects radio buttons, and Commit and Abandon buttons Database * Fix: not enough elements available error when garbage collecting a repository with corrupted objects, whose data is beyond the end of the .aob file. Assuming the repository has been corrected sufficiently to be functional, by removing all paths to these objects, we can skip them, logging their details to the Repository Transcript. * Correction: When reading a user from the repository, we overwrite its name and password based on the values in the manager.ab info file. If the user had subsequently been deleted (but was still referenced in the repository, e.g. by versioning information), this overwrote the deleted user's name with that of a subsequently created user with the same userID. Now, only overwrite if this persistent user is still currently a user. BROWSERS * New: When filtering a list in a browser, the filter can contain multiple subconditions: - First the tree is built with all its nodes - OR conditions first, separated with |. Only nodes matching will be included, along with any necessary supernodes recursively. - AND-NOT conditions next, prefixed with ^. Any node matching will be excluded, along with all of its subnodes recursively. - E.g. *Design|*Top Design^*Connections in the Graph Browser for the VECU project will include all "VECU Design" and "VECU Top Design" graphs, and their parent "VECU Manage" graph. It will exclude all "VECU Connections" graphs, and their subgraphs (duplicate mentions of the "VECU Design" graphs). - Because of overlaps in which types match which strings, this example can be reduced to *Design^*Connections, or even *n^*s - Note that where the tree is built from data that is not a strict tree, the same element can appear as multiple nodes in the tree. Each such node is treated separately here: excluding or including on the basis of being a subnode or supernode only affects that particular node in the tree, and nodes for the same element may be included or excluded differently elsewhere in the tree. GOPRR * New: Allow multi-select in the lists of Component Selection Tools. - Most menu actions can only accept a single element, and will take the element you selected first. - In the Component Selection Tool for one element (showing two lists), only Copy uses a multiple selection - In the Component Selection Tool for multiple elements (showing three lists), Copy, Add, Add & OK, and the Already selected list's Remove use a multiple selection * New: Support left and right cursor keys in Component Selection Tools' Graphs, My Instances, Other Instances and Load buttons, and OK, Cancel and Help buttons * New: Support left and right cursor keys in Replace dialog's Help, OK and Cancel buttons * Cosmetic: Graph Browser's Duplicate / Replace Graph... showed in undo list as "Undo N P Replacer: ", corrected to "Undo Replace Tool: " HELP * New: Added resizing splitter to Help window MERL * New: When reading .rep files, automatically recognize the line end convention (CR+LF, LF, CR) from the first line of the file. * New: Support left and right cursor keys in Generator Editor's Advanced Find dialog's Find and Cancel buttons * New: Support left and right cursor keys in Generator Debugger's Variables and Watches radio buttons IMPORT/EXPORT * New: Support left and right cursor keys in Type Manager's Select All and Invert Selection buttons, and Save as Patch and Export to XML buttons * New: Support left and right cursor keys in Graph Manager's Select All and Invert Selection buttons, and Save as Patch and Export to XML buttons * Fix: Serious error dialog shown when importing MEC file (or MET file with static ports), if an earlier MEC/MET import from the same source repository had been committed, and since then a second MEC/MET from the same source repository had been imported then abandoned in this session, and this third import shared objects with the old * Fix: Error #at:ifAbsentPut: importing MEC file (or MET file with static ports), if an earlier MEC/MET import from the same source repository had been committed, and since then a second MEC/MET from the same source repository but including objects from a new source project had been imported then abandoned in this session, and this third import also contained objects from the new source project. * Correction: Duplicate objects after importing MEC file (or MET file with static ports), if an earlier MEC/MET import from the same source repository had been committed, and since then a second MEC/MET from the same source repository and source project had been imported then committed, and this third MEC/MET import was in a new session and shared objects with the second. * Correction: If a binding's relationship or role has an explosion, copy-pasting the objects of that binding pastes the explosion of the original relationship or role, not the copy which actually ends up pasted in the subgraph (recall we always shallow copy relationships and roles when pasting). This results in two problems: - A: the relationship or role that actually gets pasted thus has no explosion - B: Graph Info will show an explosion for the original relationship or role. - Note that this only affected normal paste, not Paste Special with copying. It affects pasting to the original graph (problem A) and to a different graph (A & B): - Now corrected so that the explosion is made for the pasted element. API * New: Support left and right cursor keys in API Tool's Save WSDL, Start Server and Stop Server buttons, and Update Log, View Entry XML and Clear Log buttons. * Correction: API string functions dbDir and dbName gave an error when not logged in; changed to answer an empty string instead DIALOGS * New: Support left and right cursor keys in Cardinality dialog's OK and Cancel buttons * New: Support left and right cursor keys in various Constraint definition dialogs' OK and Cancel buttons * New: Support left and right cursor keys in Graph creation dialog's Diagram, Matrix and Table radio buttons, and OK and Cancel buttons * New: Support left and right cursor keys in Info window's Close and Help buttons * New: Support left and right cursor keys in Symbol Editor dialog's OK and Cancel buttons * New: Support left and right cursor keys in Property dialog's Help, OK, Cancel and Info buttons * New: Support left and right cursor keys in binding creation multiple Property dialog's Help, All OK, Cancel All and Info buttons - Also set tab order to match visual order, and maintained initial selection of All OK * New: Support left and right cursor keys in Property Tool's SOAP Servers dialog's Info, Remove, Modify, Add and Close buttons * New: Support left and right cursor keys in Subgraphs dialogs' Diagram, Matrix, Table and None radio buttons, and Help, OK and Cancel buttons (or Help and Close) * New: Support left and right cursor keys in Type Info window's Close and Help buttons * Correction: Graph Info resize splitters positioned too high, over bottom of previous list. Invisible on Windows, but on Linux show as horizontal gray bars near bottom of lists. * Correction: When dragging and dropping in a collection property in a property dialog, allow Mac Cmd as well as Ctrl to mean copy. Graphic Editors * New: Support left and right cursor keys in Grid Dialog's Default, OK and Cancel buttons - Also swapped Default and OK to be in visually consistent tab order * New: Support left and right cursor keys in Colour dialog's OK and Cancel buttons - Also made OK and Cancel tabable and corrected position of Transparent in tab order * New: Support left and right cursor keys in Diagram Editor Print Scale Dialog's OK and Cancel buttons * New: Support left and right cursor keys in Zoom dialog's OK and Cancel buttons - Also swapped Default and OK to be in visually consistent tab order * Fix: Print Scale Dialog gave a Division by zero error if a Diagram had no content * Fix: Rare primitive failed when trying to process a window resize event after window has closed * Optimization: Do not use Cairo for drawing handles - Significantly speeds up handle drawing for multiple selections Symbol Editor * New: Support left and right cursor keys in Symbol Editor element Format dialog's OK, Cancel and Apply buttons * New: Support left and right cursor keys in Symbol Library element creation dialog's Object, Relationship and Role radio buttons, and OK and Cancel buttons * New: Support left and right cursor keys in Role Symbol Editor role line Format dialog's Add and Delete buttons, and OK, Cancel and Apply buttons * New: Support left and right cursor keys in Symbol Browser window's Library and Types radio buttons; New, Edit, Delet, Rename and Export buttons; and Save/Open/OK/Import and Cancel buttons * New: Support left and right cursor keys in Symbol Properties dialog's OK and Cancel buttons - Also corrected tab order to put buttons after checkboxes * New: Support left and right cursor keys in Symbol Editor Template Format dialog's Layout tab's Start, Middle and End radio buttons; Allow X scaling and Allow Y scaling checkboxes; Clone Start, Middle and End radio buttons. * New: Support left and right cursor keys in Symbol Editor Text Format dialog's Text Settings tab's alignment radio button rows * New: Allow the Alt-based keyboard string search extensions in the Diagram Editor property sheet tree * Correction: When creating a binding in a Diagram Editor and prompted with a list dialog to select a choice of binding, if the selection turned out to be illegal because of a constraint, leaving only one option that was then automatically chosen, the resulting binding's role symbols would be from the originally selected constraint-breaking binding rather than the final selection. * Correction: Changing to the Layout tab in a Template Format dialog acted as if a change had been made, turning on the OK/Apply/Cancel buttons * Correction: Allow Mac Cmd as well as Ctrl-click when selecting in the Diagram Editor property sheet Diagram Editor * New: Support left and right cursor keys in Diagram Editor Graph Layout dialog's OK and Cancel buttons * New: Support left and right cursor keys in Diagram Editor Graph Layout's 'Cyclic paths found' dialog's Loose Tree, No Tree and Cancel buttons - Also corrected tab order * New: Dragging one role's target point handle drags the target point handles of all selected roles connecting to that object. This is most useful for Sequence Diagrams. - Replaces TargetPointHandles.mep patch * New: Allow keyboard string searching in the Diagram Editor property sheet tree column * New: Allow drag and drop of objects from a Diagram Editor sidebar tree view onto a Diagram Editor pane, creating a new representation of that object (and adding it to the graph if not already present, e.g. when dragging to a different Diagram Editor's pane). * New: Support left and right cursor keys in Diagram Editor element Format dialog's OK, Cancel and Apply buttons * New: Support left and right cursor keys in Diagram Editor View Selected dialog's button pairs: Select/Unselect All and OK/Cancel * Fix: Element not Found error when editing with an inline editor in the property sheet, and user clicks down on another row, drags and releases outside the selectable rows, and clicks in the Diagram pane to change the main element selection. - Editing mode was being left on, also allowing a subsequent click on a non-inline-editable row (e.g. Text row) to edit inline. * Fix: #realBox error in binding creation when roleDrawing is set in metaedit.ini to #manhattan and clicking to set position of second role's breakpoint * Correction: Reconnect was not checking whether the user had the lock on the diagram * Correction: Mac Cmd+double click on a graph np property in property dataset now opens the graph for editing, as well as existing Ctrl+double click * Correction: If the sidebar's horizontal resize splitter was dragged to the bottom, it did not remain there on subsequent window resizes. * Correction: The sidebar's horizontal resize splitter ratio was not maintained on subsequent window resizes. Matrix Editor * New: Support left and right cursor keys in Column Widths Tool's Save, Save & Close and Cancel buttons - Also corrected tab order * Cosmetic: Increase Column Widths Tool maximum size and slider width to suit Full HD screens (1920) Table Editor * New: Allow string searching in Tables by typing. - The search is in the current column and starts from the current row. The column is selected by clicking in a cell: the column selection is only visibly shown in Select By Cell mode. - A space or newline can be included in the string by typing it with Alt held down - To find the next match, press Alt+Down. Similarly for previous / first / last: Alt + Up / Home / End - Pressing Space selects the matching cell and clears the search string - You can also clear the search string by pressing Ctrl+W - Requires MEMotifExtensions 1.88.9.45[771] * New: In Table Editor cells, display newline characters as grey paragraph marks (pilcrow) and display the rest of the text in the same cell, rather than only displaying the text before the first newline. - This does not affect string searching: pressing Alt+Enter to add a newline to the search string still matches the newline - only its display has changed. * New: Support left and right cursor keys in Table Editor's Sort dialog's OK and Cancel buttons Launcher * New: Support left and right cursor keys in Options window's Preferences tab's Automatically delete unused objects Never/Ask for each/Always radio buttons, Show action toolbar and Actions on own row checkboxes, Show relationship types and Relationship types on own row checkboxes, and Align sidebar Left/Right radio buttons - also corrected tab order in Preferences * New: Support left and right cursor keys in Options window's System tab's Automatically answer dialogs Never/Empty/One Item radio buttons * New: Support left and right cursor keys in Options window's Save as Defaults, Help and Restore Defaults buttons - also made their tab order be visually consistent Conversion * New: When adding _vcs* generators, also add the _os* generators now needed, and the __ and __Unique subgenerators. If _translators is missing, or is unchanged from a known version (present since 4.5), bring that up to date too. - Users with their own edits to _translators will have to merge manually, at least for the translators needed for VCS generators: - %iniKey, %iniValue were added in 5.5 - %wildSp has been present since 4.5 - All other generators require manual upgrade (if desired) GENERATORS * New: Metrics collects per-type counts - Added into demo55multitest on svn 25.9.2017 * New: Changes and additions to support Linux VCS: - _os* generators to output correct Windows or Linux commands for basic file system functions - New: _vcs_git_cred - _vcsCheckOut, _vcsCheckOut_git, _vcsCheckOut_svn - _vcsHeader - _vcsInit, _vcsInit_git, _vcsInit_svn - Ignore DB temporary files that may be left after logout - _vcsInitClone, _vcsInitClone_git, _vcsInitClone_svn - _vcsPreCheckIn_svn - _vcsCheckIn, _vcsCheckIn_git, _vcsCheckIn_svn - Added Bash script for _vcsCheckIn_svn, to replace TortoiseSVN GUI "All": 55r1J - Add all new or changed files to SVN - Remove from SVN all files that are no longer present - Since Sync after Save Version shows "Need to pull" and all ignored files as D, and svn log claims local version is the old one, try svn update after svn commit: 55r1Q - _vcsRestoreDB - _vcsSync.rep - _vcsSync_git - Add --all to git log when looking for DBVER (reorder options too) - In multi-user version, after another user has versioned and we have started a new transaction, and git remote update has added that new version to our origin/master, HEAD in local Git is still behind DB version. git log by default only searches back from HEAD, so will claim 'Current DBVER not found: solve manually'. - Adding --all makes git log search origin/master too - This is also useful in the single user version, if the user has committed and pushed a new version on another PC, and then on a PC which already has a sync history, copied the new DB rather than doing Sync. - No need to update DB in Sync in multi-user version: 55r1H - _vcsSync_svn - No need to update DB in Sync in multi-user version: 55r1H * New: Use UTF-8 encoding for HTML files, and declare it with backwards-compatible meta tag - _Export graph hierarchy to HTML, _Export graph to HTML, _graphs in HTML - Need UTF-8, as customer dbs may contain foreign characters not representable in computer default locale, leading to "This character is not supported by this class of string" * Change: Deleted unused _graphs with icons in HTML * Correction: Need Graph hierarchy tree to have both scrollbars when necessary: div.toc overflow: auto - _styles and scripts for HTML hierarchy * Correction: Objects in Graph properties were being reported twice in HTML and RTF - Appeared on Graph properties page in HTML, as only first occurrence gets hidden - Were being added to extraObjects from _Dictionary in HTML's _propsDeeplyInHTML before being added to mainObjects in _Object properties in HTML, so not filtered out of extraObjects - Moved full creation of mainObjects to start of _Dictionary in HTML - Similarly for _Dictionary in RTF, _Object properties in RTF * Correction: updated RTF generators in remaining places missing %rtf or %file * Correction: updated HTML generators in remaining places missing %xml or %file * Correction: Also escape type in RTF and HTML generators