EXECUTIVE SUMMARY ================= * Eclipse & Visual Studio IDE integration * View changes graphically directly in the models * Enhanced dynamic behavior of symbols - Templates to include common elements in multiple symbols - Dynamic ports shown based on component interfaces etc. - Live Check pane lists current errors and warnings in model * Faster, more intuitive modeling - New tools for handling model hierarchies - Create large objects by dragging area * New generator functions - generator parameters, local variables - conditional breakpoints, watch expressions - break into running generator * New graphics engine with high-quality anti-aliasing * Windows 7 support HIGHLIGHTS ========== General * New: Windows 7 support, Windows 7 & 8 widget sets * New: Smoother anti-aliased high-quality graphics with Cairo library * New: Linux: anti-aliased Xft fonts * New: Mac: anti-aliased fonts, Command key support, no X11 needed * New: Allow new Metamodeling Security Level: Type * New: All toolbar, menu and window icons designed from scratch for 24-bit color and 8-bit alpha * Improvement: Better international locale support Diagram Editor * New: Diagram element format dialog (e.g. location, size) * New: Non-scalable symbols * New: Binding creation preview in Diagram Editor * New: Create large objects in Diagram Editor by dragging area Symbol Editor * New: Template symbol element for building symbols dynamically from subsymbols * New: Dynamic ports * New: Conditional role lines * New: Symbol Browser - browse, create, edit and delete type and library symbols * New: New powerful color selection/editing dialog * New: Sidebar & treeview added to Symbol Editor * New: Creation of polylines, splines, connectables and templates from polyline-like elements using Duplicate As... Metamodeling & Metamodeling tools * New: Can create Object, Role and Relationship types from a Graph Tool, with the 'Add New...' menu item in the Types tab pop-up menus. * New: Adding ports offers Static and Dynamic ports, explaining the difference and where each are created. Generator Editor & MERL * New: MERL enhancements: - runSuper - like run but looks up the named generator in the supertype of the graph type containing the current generator. - local variables, scoped to a single invocation of a generator - generators can now have parameters - breakpoints can have conditions * New: Generator diff with saved version * New: A generator can have an icon, currently shown if the generator is included in editors' action toolbar * New: Generated Files status bar shows total size in kB and speed (kB/s) * New: A Break button is now added to the Progress Dialog when running a generator * New: User can set the timeout in milliseconds for running background generators API * New: API commands for creating and editing non-properties via dialogs * New: API command to run a generator on a specific graph * New: API command to return a string containing the names of all the generators defined in a graph type * New: Command-line parameter saveWSDL:, which will save the WSDL to the file specified in the next argument. ================================================================================ General * New: Windows 7 support * New: Smoother anti-aliased high-quality graphics with Cairo library * New: Deleting a graph also deletes subgraph links to it from graphs in open projects * New: Support for finding all subgraph links to a graph * New: Symbol icons for buttons etc. now have transparent background and anti-aliasing * New: All toolbar, menu and window icons designed from scratch for 24-bit color and 8-bit alpha - added menu icons for Edit Type and Edit Symbol, Info window, Subgraphs dialog, Symbol elements * New: on Windows, raising or opening a MetaEdit+ window from another process, e.g. the IDE plugins, will now raise the window above the other process's window. - Requires the other process to allow it, e.g. by calling AllowSetForegroundWindow(-1) just before * New: Alt+character shortcut key selection of window elements (buttons, radio buttons, check boxes). - OK and Cancel are left unmarked, as they already have shortcut keys * New: Alt+character shortcut key selection of dialog answer buttons * New: 5.0 splash screen * New: Added Japanese Encodings, so they are available as encodings even without Japanese patch. - Still need Japanese patch for full Japanese support * New: MET, MEC and MEP files now contain information of the exporting version of MetaEdit+, which much match the version they are being imported into * New: Support for Xft fonts - The support is enabled by default when Xft is available - A new command line parameter for turning Xft support off: noxft * New: Use Lucida Grande as system widget and menu font on Mac OS X * New: Add support for Mac OS X host printing * New: Add Windows 8 widget set, chosen by Auto-Select on Windows 8 * New: Pressing Shift+F10 will open the current widget's pop-up menu, if any. - Particularly useful in property dialogs for quick data entry, or for when adding an item to the end of a list, to avoid the right-click selecting an item (above which the new item would then be inserted) * New: Allow reading any Unicode character from the X clipboard. - Also partially corrects writing Unicode characters to the X clipboard by escaping them in the standard X format for unsupported characters. These escaped characters look like \u2aff, and cannot be pasted directly, but can be easily transformed into the real characters: e.g. paste in 3rd field at and press Convert here: http://unicode.online-toolz.com/tools/text-unicode-entities-convertor.php * New: Allow Mac Command modifier key to work as a modifier for mouse actions in the same places the Ctrl key is used. - Note that it does not work as a modifier for the cursor keys when moving an element in a Diagram Editor or Symbol Editor: for that, use Ctrl * Improvement: Much faster graphics on Mac OS X Aqua * Improvement: Better memory management * Improvement: Better international locale support * Improvement: Better time zone calculation * Fix: Processing of UI events while file dialogs are open * Fix: If an error occurred while choosing the printer, or the user cancelled some extra printer dialog after choosing the printer and before choosing the Diagram Editor scale, MetaEdit+ could be left waiting forever for the printer * Fix: Negative or floating point numbers were being read from .ini files as symbols rather than numbers * Fix: Expanding and collapsing tree branches did not correctly maintain the selection and inform users of a changed selection * Fix: If a time-limited license logged into a repository that had never been used by a time-limited or evaluation license, and abandoned the first transaction, there was an error #lessFromTimestamp: * Fix: When closing a branch of a tree that is higher than the selection, and does not include the selection, the index of the selection was not being updated to reflect the removal of the closed branch's elements from the view, leading to a possible error on the next command * Fix: If a window with a tab widget is refreshing while or after it is closed, it can give a #sensor error because the tab widget can no longer find its window. * Fix: Sorting in non-native file dialog gives #*LabelPressed error * Fix: When committing all open streams, iterate over a copy to prevent problems if streams are opened or closed while iterating * Fix: When finalizing an IO accessor, check that it is active first, in case it has been closed earlier or was never fully open * Fix: If an IO accessor has a handle but the value of the handle has not been filled in, treat it as inactive * Fix: Processing events while progress gauge was open could cause a hang. * Fix: Linux (Fedora) may not have Times, Courier and Helvetica fonts, so allow Nimbus Roman | Mono | Sans * Fix: Use Unicode function for printing on Windows * Fix: After MetaEdit+ is started, if the screen bounds were increased by an unsupported mechanism, opening a menu or Diagram Editor with the mouse outside the old bounds could give an error. - Normal Windows screen resolution changes have been supported since MetaEdit+ 4.5 * Correction: Error message in error dialog was being cut off too early: increase limit from 80 to 800 characters. * Correction: Strings in error log were being cut off too soon: increase limit from 80 to 800 characters. * Correction: Corrected Ok to OK on buttons, made sure it was default * Correction: Flush cached bitmaps of all scrollbar types, not just Windows * Correction: Data set widget row height was too small on Linux: now at least 18 * Correction: Ctrl+ keyboard shortcuts now available as proper Command+ combinations in Max OS X * Correction: More accurate font matching, especially in Linux and Mac * Cosmetic: In a Menu Button, the current selection (shown in the button when the menu is not open) turned an ampersand into no ampersand and an underline. * Cosmetic: Adjusted some window layouts for the wider label fonts and widgets found on some platforms, and to make group divider lines be behind their labels * Cosmetic: When opening a dialog without a parent window, e.g. via SOAP, pick as its parent a launcher or progress gauge if possible. - When a dialog is opened by the MetaEdit+ Eclipse or Visual Studio plugin, it also raises its parent window above the IDE. * Cosmetic: Updated Mac OS X look & feel -------------------------------------------------------------------------------- Dialogs & Browsers * New: Graph Manager has Delete Selected button to delete multiple graphs at once * New: In Graph and Types Manager, replaced Unselect All button with Invert Selection * New: Allow multiple additions to Replace and In lists in Replace dialog * New: Trees stay open when updated * New: Trees select the correct element when updated, even if that element occurs in several different places in the tree * New: when a property value fails the rules for that property type, e.g. not matching the regular expression, provide the data type, regular expression and type help in the warning so the user can correct it. * New: Allow opening type help as a dialog, when opened from Info dialog from Property dialog * New: Language help for bindings shows ports * New: In property dialogs, show icon or symbol for elements in non-property collection or property. * New: Added resize splitters to (Multi) Component Selection Tool, and made tab order consistent * Fix: Error when creating an instance of a type that has been deleted (marked bad) with Remove Type, if the user chooses "No" when warned that the type has been deleted and asked if he wants to create one anyway. * Correction: Updating a list widget with a new list and selection could leave the new elements undisplayed * Correction: Clicking in selection in multi-selection dataset now selects just that element * Cosmetic: Added icons for 'Edit Type' and 'Edit Symbol' menu elements in browsers * Optimization: When updating the tree view in a browser, only refresh the display at the end Model Editors * New: Added Ctrl+Shift+V shortcut for Paste Special in all editors * Correction: Type toolbar tool tips were changing ampersands into underlines of next character * Correction: Component Selection Tool's Selection History menu was changing ampersands into underlines of next character * Correction: Help | Graph Type was using old Differator UI Graphical editors * New: Scroll Tool in graphical editors * Fix: Abandoning imported types could cause error in open editors * Fix: Pressing tab in an empty graphical editor caused a #select error * Fix: When the screen color depth was changed, graphical editor windows could give an error * Fix: In certain cases (like window terminating error in development image) special editing modes did not exit properly but were left hanging. * Correction: Adding roleline/polyline breakpoint in graphical editors now snaps to grid according to the setting * Correction: Points along Bezier curves were being rounded to integers too much, leading to ugly curves. * Correction: When scaling an object by dragging an edge handle with Shift down to maintain the aspect ratio, the object could not be scaled smaller than it was at the start of the scale operation. Diagram Editor * New: Diagram element format dialog (e.g. location, size) * New: Non-scalable symbols - handles are disabled appropriately - format dialog only allows appropriate operations * New: Binding creation preview in Diagram Editor * New: Create big objects in Diagram Editor by dragging area * New: Show/Hide sidebar * New: Toolbar buttons made from text not symbols are now as wide as the text, up to a maximum of 8 em's * New: Straighten multiple relationships (+ shift restores target points) * New: True printing of fountain fills on host printers * New: Live Check pane displayed at the bottom of a Diagram Editor, showing the results of the __LiveCheck generator. - If there is no such generator in this graph type or its supertypes, including Graph itself, the pane is hidden * New: Menus (both type and instance) added to Diagram Editor's tree view * New: Ctrl-double-click on a role does subgraphs action - Note that Ctrl-click removes a role breakpoint, so subgraphs action should not be done while over a breakpoint * Fix: Losing focus & tool deactivation during connection creation started from 'Add new Role' menu selection didn't clear up the unfinished role/connection * Fix: Changing grid settings from status bar was possible even if the user did not have the lock for this diagram * Fix: Delete requires locks on both diagram and graph * Fix: #application error when removing relationships with small symbols or symbols offset all on one side of their target point. * Fix: Graph | Layout gave an error if all of a type binding's connections were optional * Correction: When creating a relationship from a small object to a larger enclosing object, clicking a certain target point on the larger object's non-sticky connectable did not cause the role to attach there * Correction: When a lifeline (i.e. fence in fence diagram) object was created in UML's Sequence Diagram, the new object was created on the left edge of the drawing area regardless where the mouse was clicked. * Correction: From object with static ports visually containing another of the same type the wrong connectable was returned, making it impossible to choose most of the connectables (e.g. in old Logic example's Circuits) * Correction: For static ports extra comparison of area was using diagram point in symbol coordinates, now scaled and offset correctly * Correction: Deleting the last representation of a role in a Diagram did not remove any explosions of that role * Correction: When shift-clicking on a selected role line (not handles), deselect it and exit Point Edit mode * Correction: Undo after Auto-Layout was not restoring role target point offsets * Correction: Pict export was leaving empty any string that contained (or had earlier contained) any 2-byte characters. Now for such strings display each character individually, so at least ASCII characters are displayed, and at best characters with a 1-byte equivalent are displayed. * Cosmetic: View | Selected dialog now shows symbols with object/relationship types Matrix Editor * New: Ctrl+double click in a matrix cell or axis = Open Subgraph * Fix: On the toolbar, Cut and Paste gave an error, and Copy was disabled * Correction: Toolbar Delete was missing tool tip Table Editor * New: Ctrl+double click in a table row = Open Subgraph * New: Add toolbar button for Delete * Fix: Tables with zero columns gave an error when exporting to ASCII * Cosmetic: Add icon for Edit | Delete * Cosmetic: Table Editor column labels now left aligned Symbol Editor * New: Template symbol element - build symbols dynamically from subsymbols - reveal subsymbols as dynamic ports * New: Conditional role lines * - role symbol can have several role lines * New: New powerful color selection/editing dialog * New: Sidebar & treeview added to Symbol Editor - enables users to access elements within groups - menus are accessible from the treeview * New: Definition of non-scalable symbols * New: Show extra info/help about the current tool or editing mode in the status bar * New: Creation of polylines, splines, connectables and templates from polyline-like elements using Duplicate As... * New: ctrl+click deletes existing break point during polyline creation * New: 'Align to Grid' button added toolbar * New: Text elements in symbols can specify the base background color for their characters. There are thus three background colors which can be overlaid, starting from the back: - The text box background color, which fills the whole of the text box. - This text background color, which fills the background of each character displayed - For a generator-based text element, each generator command can specify a background color for the characters it produces. This overrides the text background color specified in the symbol element * New: Bitmap Image button added to Symbol Editor's toobar - no need to drag area when creating; file dialog will prompt immediately for selecting the graphic file - Bitmap Image's icon added to Symbol Editor menubar's 'Import Bitmap...' * New: Added and improved info text and links to Symbol Editor status bar * Fix: The extent and offset for a symbol with one element were the same points as the origin and corner of that element, rather than just equal to them. * Fix: Take care of connectable closure when duplicating from polyline/spline * Fix: Splines and Beziers disappeared from drawing if they had the same points as another instance. * Fix: After deleting or cutting, reset the active tool to the default selection mode * Fix: If a Diagram Editor had died as a result of an error, saving a symbol could give a Primitive failed error trying to update it. * Correction: Undo creation for add/remove breakpoint added for polylines * Correction: Position and Size format dialog allows smaller that 1 (but greater than zero) absolute width and height, as a legal scale setting can render these values less than 1 * Correction: The color, line style and line weight menus in Symbol Editor are now enabled/disabled depending on the selection - e.g. all of them are disabled for connectables, all of the are enabled for rectangle, etc.) * Correction: Adding ports in connectables format dialog by-passed dialog's buffering and added ports directly to the symbol * Correction: Add Existing Port... in connectable's format dialog didn't filter ports that were already assigned * Correction: Selecting an element in Symbol Editor with new custom color didn't update the color menu * Correction: When Symbol Editor was closed when zoom tool was active, the cursor was not defaulted properly but retained the tool cursor * Correction: Point and Fill editing mode checking for tool validity was incorrect, as it okayed a situation with no selection * Correction: JPEGs imported into symbols would not display on X11. * Cosmetic: Format dialogs now denote the type of edited element in their window caption (i.e. 'Format Rectangle') * Cosmetic: Increased size for format dialogs * Cosmetic: Change 'Rolelines' -> 'Role Lines' in Format dialog, status bar etc. Symbol Library & Browser * New: Symbol Library is now stored globally in the repository (Common area) * New: New Symbol Browser - browse, create, edit and delete type and library symbols - import from library to symbol editor or save copy from symbol editor to library - use as template subsymbols - library symbol's are associated with specific editors by their type (Object, Relationship, Role) Metamodeling & Metamodeling tools * New: Can create Object, Role and Relationship types from a Graph Tool, with the 'Add New...' menu item in the Types tab pop-up menus. - this allows creating metamodels top-down, starting from the Graph type. * New: Improved order of Graph Types Tool lists: Object, Relationship, Role * New: Adding ports offers Static and Dynamic ports, explaining the difference and where each are created. - static ports shows port types and allows to select them or their instances - dynamic allows to select NonProperty types * New: Abstract types, defined by starting their name with an underscore _, can now also be marked as hidden by a double underscore prefix __. Hidden types are abstract, i.e. not instantiable, and in addition they should not be shown to the modeler, and the modeler should not be made aware that they exist in the type hierarchy. - Metamodelers will want to consider for their existing abstract types, whether the abstract type is to make life more understandable for the modeler, or simply for implementation reasons for the metamodeler (e.g. to add properties common to subtypes, or to add an intermediate level in a type hierarchy to allow selection of just that part of the hierarchy). Types made abstract for implementation reasons should generally now be marked as hidden. * Change: In a property dialog, when adding a new Object or other Non-Property type in a property, if its type has subtypes then display the choice of subtypes one type hierarchy level at a time. This gives the metamodeler the ability to structure the list of subtypes, so the user does not have to choose from too many types at once. - If there is only one instantiable subtype of the type specified in the metamodel, choose that type without showing a type choice dialog. - If the initial data type of the property is an abstract type, do not show that first, but rather show its subtypes. - Include abstract types (prefixed with _), so the user can select them, and then select their subtypes. - For hidden types (prefixed with __), do not show them. Instead, replace them in the hierarchy with their direct subtypes (effectively bringing those subtypes up a level). - When we have started a series of type choice dialogs, do not shortcut the selection of a subtype from the next level, even if there is only one. - In a series of type choice dialogs, if the selected type has no instantiable subtypes, tell the user in a dialog and allow him to Cancel or Back up a level. * New: in the Create Graph dialog, hide hidden types from the hierarchy (as in property dialogs above). * New: When selecting a type in Component Selection Tool, by default do not show hidden types. The user can choose to show hidden types by holding shift down. * Correction: If the minimum height of a generated property dialog window is taller than the screen, set the minimum height to the screen height * Correction: Creation Timestamp was missing from the list of property data types when selecting a filter in Property Tool * Correction: Two type bindings were being considered identical if their only difference was the cardinality of a connection * Correction: Sort ports in Graph Tool Bindings using standard order, type-instance-oid * Correction: PropertyTool's open filter didn't match Collection of objects (and probably others, too) properly * Correction: Do not allow Ctrl to make a drag and drop become a copy in the Graph Tool's Types page. * Correction: Type deletion and export didn't follow Uniqueness and Occurrence Constraints when crawling to find used types * Correction: When exporting types to MET or MEC files, if a type that has been deleted (marked bad) with Remove Type is included, have it marked as bad in the export rather than prefixing its name with an asterisk. * Cosmetic: Property dialog layout could leave some fields slightly the wrong height * Cosmetic: Improved texts in Type Manager's Delete Unselected warning dialogs, to make it harder for optimistic users to believe everything will be fine in spite of the warning. * Cosmetic: In property dialog menu for NP property, Remove Object... should not have dots XML * New: Export of representation instances from XML includes oid information * New: add support for text element background colors, sym:characterBackgroundFill * New: When saving property types to XML, include all good subtypes of their data type and contents data type. - ... and similarly for - Same approach as when saving .met/.mec patches * New: XML Import/export for Symbol Library - 'Import' and 'Export' buttons when Symbol Browser opened from Launcher - Single/multi/all selection of symbols for export - Legend for XML format: * New: Header info as optional attributes in MXM and MXT tag, set automatically when exporting - dbName: the name of the repository, e.g. "demo" - dbPath: the path of the repository, e.g. "demo" or "d:\demo" - timeStamp: when saved, xsd:dateTime / ISO8601, e.g. "2012-07-27T16:08:50.395Z" - version: the MetaEdit+ verson, e.g. "4.0", "4.5" or "5.0". The MXM and MXT formats are forwards and also mostly backwards compatible. If an old version does not support a new element or attribute, it simply ignores it, and will import the rest. * New: SVG tags now have basic support for net URLs and inline IRIs as xlink:href image sources - URLs do not support proxies, redirect etc. - IRIs must be in the format "data:image/TYPE;ENC,AAAA" where: - TYPE is gif, png, jpeg (limited support for bmp, xbm) - ENC is base64 (possibly with an ignored charset and semicolon before or after - almost all character sets are the same for the base64 characters) - AAAA is base64 encoded image data. - Note SVG is more lenient and can omit MIME type, use different charsets and encodings, but we don't support those yet * New: If a type being imported is found in an unopened project, offer to Open All types in all projects, as well as the previous choices to Open just that project or Emergency Exit. * New: MXM format now includes both type and typeName attributes. The type attribute should be used for the long internal name, and typeName for the user-visible name. At least one must be present; if both are, typeName is ignored. * Fix: If MXTs do not supply property slot ids, we get an error 'The variable name ''p1'' is overloaded for Object_...' if we first import an MXT that creates a type with some properties, followed by a second MXT that has those properties plus an extra one - the type XML schema allowed the elements' id attribute to be optional, and import has used the next name in the series p1, p2..., excluding those found in the supertype - but not those found existing in this type (see comment for 1.3.1). - now find the maximum of all p[0-9]+ names in the supertype and existing type (including ones to be removed by this new MXT), and start allocating new names after that. * Fix: Importing an MXT file which tried to change the order of existing property slots resulted in the wrong order. The order of existing slots is intended to override that of MXT slots, because MXT generation order is often unclear (e.g. a mixture of a collection of properties with properties from relationships). - to change the order of slots, the simplest way is to use the form-based metamodeling tools. It is also possible with MXT: log in opening no projects, open projects with shift down so no instances are loaded (otherwise the next step would lose their property values), import an MXT that removes the properties, then import an MXT with the desired order. - old slots were being removed from the collection, and the index of each was recorded at the time of removal. Removing first, second and third thus gave indexes 1, 1, 1. * Fix: Creating types names after metatype class names was not possible in graphical GOPRR * Fix: When importing an edited imported metamodel, can have error: "Tried to add a connection to a binding that already has a different connection with the same id" - Happened if binding was exported, imported, edited to change number or order of connections, exported, and imported * Fix: Importing supertype hierarchies from MXT resulted in incorrect hierarchy order in project internal data structures - After import, the type hierarchy was correct in memory, but on subsequent logins the subtypes appeared both directly below their metatype and below their subtypes. - This fix prevents the problem on future imports; re-importing the MXT will correct the problem in existing repositories. * Fix: Error when reading SVG without me:scale specified. - Fix unspecified scale to 1 for now * Fix: For old SVG 1.0 and 1.1 files with matching *.dtd, do not try and download the DTD from the net: w3.org throttles DTD downloads, which thus fail with a timeout error. We do not use the DTD in any case, and SVG 1.2 does not have one. * Fix: Numbers in SVG import were giving an error if they began with a plus sign, e.g. +5, or had a plus sign before the exponent, e.g. 3e+2 * Fix: Numbers in SVG import were giving an error if they contained a decimal point without a preceding digit, e.g. .5 or -.5 * Fix: When reading the points for a SVG or , leading plus or decimal point without a preceding digit gave an error. Also we only accepted a single space as a separator between points, and a comma as a separator between X&Y - Separator is white space and/or comma, between X&Y and also between points. - Whole string can have leading and trailing white space. - Normally we have '1,2 3,4', but can also be '1 2 3 4' or '1,2,3,4' or '1 2,3 4' or ' 1 2 , 3 4 ' * Fix: #key error reading SVG path beginning with a moveto (m/M) and its point argument that is immediately followed by extra points, as implicit lineto (l/L) commands. * Fix: Error importing SVG element without x or y attributes - "Import failed...Detected a wrong object. Sending #svgTextSource: to MetaCase.GF.METextGO" - The lacuna value for x and y (i.e. the default if absent) is 0, so now use that * Fix: SVG , , and elements were imported without their info object, giving errors when edited with Format in a Symbol Editor -