HIGHLIGHTS ========== Metamodeling: * New: New intuitive UI for Metamodeling Tools, with toolbars and menu bars * New: Graph Tool satellite windows integrated as tabs in Graph Tool * New: Icon Editor to give types custom icons to override default scaled symbol * Correction: Improve consistency of sorting of bindings Generators: * New: Iterate over variables and strings: do $var, do 'foo bar'%spaces * New: Specify encoding for files: filename...encoding...write/read * New: Short syntax for simple variable assignments, $abc='foo' * New: Better parse error reporting for regex, and math and translate streams * New: Generator Editor remembers graph to run on NB: Generators using the new features are NOT fully compatible with original 4.5 API: * New: Command-line argument document:into: to document metamodel * New: Command-line argument stopAPI * Change: Default API port is now 6390, registered with IANA Modeling: * New: Diagram Editor intelligently updates whole view after operations * New: Roots Browser operations moved to Startup Launcher * New: Show type symbols in binding creation list dialog, Help | Graph Type etc. * Fix: Corrected bug in PNG saving Multi-user: * New: Multi-user server runs as a service * New: Server administration UI integrated in MetaEdit+ clients * New: SOAP interface to automate server administration * New: Run servers for multiple repositories simultaneously from one installation * Optimization: Significant speed improvements on Windows XP SP2 System: * New: Support for multiple monitors is now handled automatically * Fix: Avoid bugs in race conditions and event leaks when redisplaying * Fix: Cope better with transient errors when manipulating files * Fix: Cope with screen depth changes and timezone changes on the fly * Improvement: Change window exit confirmation dialog buttons from yes/no/cancel to Save/Discard/Cancel * Cosmetic: Changed list fonts to same smaller font as other lists ================================================================================ Metamodeling * New: No more satellite windows for Graph Tool, all tools (types, bindings, subgraphs and constraints) have been now integrated in Graph Tool with tab pages. * New: All Meta Tools: All buttons in dialogs have been replaced with menu and toolbar commands. * New: Property Tool: Datatype, widget and collection member item selection with menu button * New: Prompting for type selection in Property Tool now shows type hierarchy and icons * New: In the Diagram Editor sidebar property sheet, in Workbench, double-clicking the type line with Ctrl opens the metamodeling tool for the type, and with Shift opens the Symbol Editor for the type. - Allows quick access to object types and symbols, as in the tree view, plus also relationships, role and graph types, which are not available in the tree view * New: "N=unlimited" button in Cardinality Dialog * New: Project field in metamodeling tools is a pull-down list * New: Metamodeling tools show type name in window title bar * Change: "New" in Meta Tools creates a new direct subtype of tool's native ancestor type (i.e. Graph, Objectm Relationship, etc.) - 'New Subtype' from menu or shift-clicking 'New' on toolbar prompts for ancestor type to be subtyped as new type * Fix: Condition Dialog did not propagate condition settings correctly to a multiple selection * Fix: Handles of simple lines were in the wrong place, being affected by zoom. * Fix: If creation of a new element in the Symbol Editor had been started by a toolbar button, and before it was finished the user chose Browse Library | Paste and Close, there would be an error #moveGOs:. * Correction: Selecting Symbol | New and the closing the SymbolEditor didn't warn on closing nor clear the type's symbol. New now sets modified true if current type's symbol is not nil. * Correction: When maximizing a metamodeling tool for NonProperties from the window title bar icon pop-up menu, or on some computers from the maximize button, the window contents were not stretching to fit the new window. * Correction: Text Settings Dialog lists are scrolled to show the selected value * Cosmetic: Text Settings Dialog lists use smaller system font * Cosmetic: Meta tools now have similar image in their window icons as in launcher's toolbar * Cosmetic: add one pixel extra height to radio buttons in property dialogs, so the bottom edge of their dotted box selection outline is visible in Windows * Cosmetic: show property data type in "String (...)" format for Radio Button Set and External Element Symbol Editor * New: Icon Editor to give types custom icons rather than just scaled symbol * Improvement: faster redrawing on selection when many elements are selected * Correction: when opening the dialog to Select a New Color, the sliders should be positioned to match the initially selected color * Correction: display of white background in graphical editor drawing panes was sometimes leaking out to obscure parts of widgets around the pane. Generators: MERL * New: String literals can now be followed with a translator, e.g. 'Frankie & Johnny'%xml . This might be useful for several things: - keeping generators more readable, as in the XML example above - making a concise way of iterating over several fixed values, if the translator maps certain characters to line breaks, e.g. do 'read\write\append'%lineBreaks { if mode;1 = id then subreport id run endif } * New: can use variables, literals and simple clauses like id as the basis of a do or dowhile loop. Since the basis is thus a single string, we break it into lines in the same way as for do :Text -- at LF, CR, FF. The basis can have its normal level indicators (id;2) and translations ($var%breaks) - the latter is particularly useful for breaking a string up into tokens and iterating over the tokens - useful for reading in a file into a variable, then iterating over lines of that file * New: added a new parameter, encoding, to filename commands (except print). It is the first parameter after the actual filename clauses, so comes before md5start. The clauses between encoding and the next parameter of the filename (e.g. md5start, write or read) go to make up the name of an encoder. Most commonly this will just be a literal string like 'utf8' or a variable $enc that was set earlier, but it can of course be any legal sequence of clauses. - encoders can be names like '437', 'cp437', 'ms_cp_437', 'ms-cp-437', 'ibm437' (all the same thing), 'iso-8859-1', 'iso8859-1', 'iso8859_1' (all the same thing), 'utf8', 'utf-8', 'utf_8', (all the same thing), 'utf-16', 'ucs-2', 'ascii', 'jis', 'shiftjis', 'koi8-r', 'base64', 'windows-1252' - all text within MetaEdit+ is effectively Unicode, and you need not think about its encoding. Only when reading and writing to files does the encoding matter. - by using filename...encoding...read into a variable, then filename...encoding...write, you can change the encoding of a file on disk - line breaks are read and written in the platform default way * New: short syntax for simple variable assignments. LHS looks like a variable reference with no increment, decrement or translator; RHS is a literal, a simple command, a property, a variable reference, or another variable assignment - examples: $abc='foo' $abc=id $abc=$++var%foo $abc=$def=type;1 $abc=:Name NB: Generators using the new features are NOT fully compatible with original 4.5. 4.5 cannot open the generator editor if new features have been used in ANY generator of that graph type, but can run generators which do not use the new features. * New: allow "graphs" as a standalone output command, as well as a loop argument * New: for completeness, allow comparison to "sep" and "newline", shorthand assignment of "sep" and "newline" to variables, and iterating over "sep" and "newline" * Correction: do, dowhile, foreach and if were all requiring a space after them, rather than allowing any whitespace character Generators: Tools * New: "Generate" in Menu and toolbar now run the generator on the same graph as before, if none requests one in dialog - "Generate for Graph..." works like "generate" before: always requests graphs * New: added open, properties and info items to Debugger popup-menu for np stack items * New: when an error is encountered when parsing math or translator streams, report token and position within stream * New: changing Word Wrap and Font in Generator Debugger affects both generator definition and output panes * New: In Generator Editor, Edit | Paste Quoted will paste the current clipboard contents surrounded by single quotes, with any single quotes in the contents escaped by doubling them. - Useful for pasting a desired output file into a generator as a fixed string - Can replace a varying part of the result with a property from the model by selecting that part of the result and shift-double clicking the property * New: View | Refresh Generator List (F5) will update the list, rebuilding the hierarchy if displayed. - Replaces Update Generator Hierarchy, which was only in the generator list pop-up menu * New: holding Shift while clicking the Generator Editor toolbar Find button does Advanced Find * New: Breakpoints | Remove All Globally in Generator Editor and Debugger * New: Double-click in Generator Debugger Variables list allows viewing and editing of variables in a text editor * Fix: Now allow opening only np-stack items which are np's. Thus excludes e.g. Strings, texts and timestamps. The same applies to link context opening. * Fix: chain output node gave error: MNU: #addBaseEmphasis: for ByteString when it had both coloring/emphasis in the generator definition and a translation * Fix: Using : in a non-regex query in the Generator Editor's Advanced Find gave an error. If the error occurred in certain conditions, showing the error dialog could cause the same error again, making MetaEdit+ exit immediately. * Fix: Bug 31safNTBm: Stepping out from endreport gives #subnodes error * Fix: using a regular expression with ^ or $ to translate an empty string caused an infinite loop * Fix: a simple to..endto with no translate... clauses could produce output, if the translator used a regular expression that matched an empty string and added a prefix or suffix * Improvement: Indent blocks appropriately when inserting templates * Improvement: re-select the current generator after updating the generator list after rename etc. * Improvement: inserting a type's name in the Generator Editor will set the green type formatting for it, and add a semicolon if necessary for properties * Correction: The "Edit / Advance Find..." command of Generator Editor lost pending changes in the currently displayed generator. * Correction: in Generator Editor, Symbol / Identifier Generator Editor, and Generator Debugger, move Word Wrap and Font... from Format menu to View menu * Correction: Generator Editor toolbar had tooltip 'Run' rather than 'Generate' * Correction: In Debugger, Breakpoints | Remove All was removing all breakpoints from all generators in all loaded graph types: should just be all in the current generator * Correction: made Generator Editor text operations (copy, cut, find etc.) and format operations (bold etc.) check that we are displaying a report, and do nothing if not * Correction: Generator Editor breakpoint operations require that the current generator is saved AND selected (e.g. saving while in the Errors view leads to no selection), so state this in the warning dialog * Correction: update color sliders when opening font color dialog in Generator Editor * Correction: when selecting the current generator in the debugger with F4 or during running, select the last element of the list, not the actual generator: if the same generator is in the list multiple times, selecting the generator was incorrectly selecting the first occurrence. * Optimization: opening Generator Editor was slow in some cases where there were many generators. * Cosmetic: change initial output font in Generator Debugger to be same code font as in generator definition pane * Cosmetic: removed Show Current Position from Generator Debugger toolbar, since with no icon it is a nearly invisible dot at the end of the toolbar API * New: Command-line argument document:into:, to output a comprehensive yet readable textual representation of the given Graph type(s) and their generators - Arguments: - A graph type $G or wildcard to match a set of graph types (e.g. * for all Graph types, including Graph itself) - A base directory $B - Output: - The help of each graph type $T matching $G as produced by [CTRL + Help|Graph type] is saved in file $B\$T\metamodel.txt - All generators $g of each graph type $T matching $G are saved in files $B\$T\$g.rep * New: command-line parameter operation stopAPI. This will stop and close all API Tools that have been started through the command-line mechanism (i.e. command-line, internal...execute, API call). stopAPI will NOT affect manually started API Tools. - When using the API from a generator, best is to start the API with internal...execute, but have the program that will use it close it with an API call to stopAPI. Alternatively a generator can send stopAPI first (a no-op if none are running), then startAPI. This will ensure that there is just one API Tool running * Change: the default port for MetaEdit+ WebServices/SOAP API is now registered with IANA as 6390. 639 on a phone is MEW, for MetaEdit+ WebSevice. Currently, ports 6391-9 are also free, and so useful candidates if you need more than one MetaEdit+ API on the same host. * Fix: allPropertiesWrapped was in WSDL but not implemented * Fix: In MXT import, when a type has a supertype and itself already has extra properties, the internal record of the number of properties in the supertype was also erroneously increased, leading to errors when using the supertype. * Fix: API command loginNewDB:dir:user:password: always failed with #asByteArray error * Correction: closed connectables were losing their closedness when exported in SVG tags - THIS BUG AFFECTS ALL 4.5 MXT EXPORTS. Since the information is lost in the MXTs, the only real solution is to apply the fix, import the MXT, correct the symbols by hand, and export again. * Correction: When printing a graph with filename...print during a batch operation, print all multiple diagram representations without showing a dialog asking which to print Diagram Editor * New: DiagramEditor view gets complete update after all major modifications on model (major = property dialog, rel/role creation, symbol scale etc.). * New: Fill increment setting on System page of Options Tool - sets the width of fountain fill color bands - default is 2, which is faster than previous fixed 1 * New: show symbols when choosing an object type in a graph (e.g. when adding a new object) * New: show symbols when choosing a type in Component Selection Tool dialogs * Change: To slide straight relationships, keeping them parallel to their original direction but changing the place they connect to their objects, you must now hold Ctrl+Shift rather than just Ctrl * Change: In graphical editors, either Ctrl or Shift, but not Ctrl+Shift, can both be used for toggling selections - Support for Shift may later be removed. * Fix: Previously, we used a relative handle for object target offset at the object end of the connection (role) and tried to calculate connectable cut-point based on the distance of last mouse move. This was plain wrong and apparently contributed to quite a many connection (role) related drawing problems. We now use an absolute handle and use real mouse position as basis for the cut-point calculation. * Fix: If Diagram Editor zoom was other than 100%, the PrintScaleDialog showed incorrect scale because pageBounds, usedBounds and visibleBounds values were passed into the dialog in different coord system. Now the coord system is corrected to be the same for all of them. * Improvement: faster redrawing on selection when many elements are selected * Correction: When zooming with ALT+mouse wheel, the zoom algorithm was forced to get rid of white space which caused zeroing the screen offset if one tried to zoom on the area outside actual diagram. Now changed to retain the white space. * Correction: MetaEdit+ now follows Microsoft behaviour on ctrl+click and shift+click (i.e. toggle selection without affecting other selections) * Correction: Previously it was possible to add new diagram elements that were partially created outside the drawing area. Now diagram elements are forced within visible area. * Correction: display of white background in graphical editor drawing panes was sometimes leaking out to obscure parts of widgets around the pane. * Correction: Ctrl did not work when dragging to toggle selection of a group. * Cosmetic: use Relationship Tool icon rather than 'Rela' as the toolbar button icon for generic Relationship creation in the Diagram Editor Startup Launcher * New: replaced Edit Repository Roots with own add/edit/remove operations in Startup Launcher menus * New: split Repository menu into File and Repository, where Repository is the same as the Repository List pop-up menu * New: Added status column to repository list in Startup Launcher. "server" means a server is running on the db. "single" means somebody is logged in to the db in the single user version. * New: Multi-User: Added Server... button to Repository page of Options Tool, to open server administration UI when logged in * New: databasesServerURL option for SOAP path to multi-user server * New: Added "Info On Ordering" to Help menu, only shown for Evaluation version * Fix: Handle database errors while logging in for reconstruct in New Startup Launcher, e.g. if db dir does not exist * Improved UI layout in Screen page of Options Tool * Correction: New Startup Launcher was not responding to changes in Look & Feel * Correction: Pressing Enter in New Startup Launcher was not logging in, if the currently selected widget was a list (as it is initially) * Correction: need to commit at end of creating a new repository, else Abandon & Exit leaves this repository looking like a pre-3.0 repository, which will stop future logins. * Correction: Linux and Mac versions were warning about not having saved when logging in after filing in patches. Since 4.5, no version allows to save * Cosmetic: make Startup Launcher and main Launcher open inset from the top left corner of the desktop, which probably has useful icons and may have taskbars etc. * Cosmetic: Changed window name from MetaEdit+ to MetaEdit+ Startup Launcher MetaEdit+ Launcher * New: added toolbar button for Generator Editor (only shown in Workbench) * New: Main MetaEdit+ Launcher updates when Screen widget set is changed to a different platform - other windows do not update, but unlike launchers they can be closed and reopened * Change: now show all graph types in dialog, not just a selected graph type: the initial selection being right is enough * Fix: Error creating a graph from the main launcher toolbar when Types Browser was showing non-Graph types * Fix: auto-update of repository list from disk was adding dbs whose directory was already listed under another name * Improvement: clearer text when unable to toggle sysadmin rights in User page of Options Tool * Improvement: make main launcher's Create Graph toolbar button preselect the Graph, Object or Metamodel Browser's currently selected graph type in the dialog list * Correction: The Graph Creation dialog was showing the selected pre-chosen graph type (blue background), but keyboard focus was on the first graph type (dotted outline), so pressing Enter straight away was choosing the first graph type not the selection * Correction: Setting the Metamodeling Security level should check it is not locked by another administrator, and warn that all users must log out before the change comes fully into effect * Correction: when creating a new database or changing the name of an existing one, the single user version did not check whether the name was already used in artbase.roo * Cosmetic: with new smaller font in Component Selection Tool, using italic text to indicate instances of the wrong type no longer looks good, so switch to using gray Global * New: support for multiple monitors is now handled automatically * New: do not exit on a recursive error. Instead, pause for 2 seconds (to prevent new dialogs appearing in quick succession). User can minimize offending window (often Diagram Editor), Terminate error dialogs, and close offending window from its pop-up menu in the task bar * Improvement: Remove Accept and Cancel from Input Fields and Text Fields where edits are continuously accepted anyway (e.g. in MERL Generator Editor) * Change: increased number of stack entries dumped to 200 * Fix: Avoid unnecessary redisplay from damage events during error processing, as this would often cause the error recursively * Fix: quickly starting two MetaEdit+ instances that filed in patches led to an error, as both needed access to the same patch. * Fix: With Japanese support loaded, if the Windows Standards and Formats are set to Japanese but the setting for non-Unicode programs is not Japanese, Japanese characters were displayed correctly in most places but as black squares in smaller fonts * Fix: Icon Editor, Info windows and Generator Debugger must close on Abandon * Fix: Cope in file existence tests if Windows has changed our working directory * Improvement: when opening dialogs, take screen height and window decoration size into account, reducing window height to fit (even if that is less than minimum height) * Improvement: resizing dialogs with resize corner takes window borders into account * Correction: lists in dialogs scroll if necessary to make their initial selection (if any) visible* Correction: filter out CR and LF in window labels, as these scroll the title text up on Windows if they occur in the first 238 characters of the name (e.g. in the text Editor for the documentation field of the larger Note object in WatchFamily: 2008Models) * Correction: when clicking a dataset column to sort by it, update other column sort marks * Correction: Many Mac and Linux UI corrections (as in those platform releases on SR0) * Correction: clicking with Ctrl down now only shows the Mac context cursor if on a Mac, not if using Mac look & feel (e.g. as Linux now does) * Optimization: On some Windows XP SP2 PCs, multi-user login was 10x slower if the mouse was not moved. Add a background process to achieve the same effect as moving the mouse. * Cosmetic: show the selection highlight for Windows check boxes and radio buttons with empty labels as a vertical dotted line * Cosmetic: calculate the width of list dialogs from the actual labels, rather than the largest number of characters times the width of an o or m.