Modeling Rights and locks * Cosmetic: Changed to use 'modeling rights' rather than 'access rights' for projects. - We only check this for modeling - metamodeling has its own set of checks dependent on Metamodelers and Metamodel security level. * New: When importing an MXM file, if the user does not have modeling rights in the current default project, abort and explain in a dialog. * New: When trying to delete a Graph or Graph representation, explicitly check the users' modeling rights for that project first, and give an appropriate failure explanation dialog for that case * New: Special handling for modeling rights for port instances. When creating a port instance in the Symbol Editor, the user is metamodeling not modeling, and the port instance is always saved in the port type's project, and in the list of instances of that port type in that project. We want to allow these changes and their locks even if the user does not have modeling rights in that project. * New: Check modeling rights when a user tries to create a Graph representation in a project where he does not have modeling rights, and show an appropriate failure dialog for that case. - Otherwise users can create extra diagrams in read-only projects, but not delete them. * New: When exporting models to a binary patch, make the resulting .MEC file add a check during import, that the project chosen by the user for new instances is one for which the user has modeling rights. - If not, importing will show a dialog then an error, with the dialog telling the user to Terminate then Abandon. - Note that patches made with earlier 5.5 builds will not contain this check, and patches made with this 5.5 build will not run this check if imported into the original 5.5 build. * New: In the Default project menu in Browsers, italicize projects where this user does not have modeling rights. - It is still acceptable to choose them, as the default project is also used in metamodeling. * New: Special handling for modeling rights for port instances. When creating a port instance in the Symbol Editor, the user is metamodeling not modeling, and the port instance is always saved in the port type's project, and in the list of instances of that port type in that project. We want to allow these changes even if the user does not have modeling rights in that project; this will then allow proceeding to check locks, and success there will not be overruled by its re-checking of modeling rights. * Fix: In API instPropsLocking call, when creating an instance of a Port type, we should pre-check the lock for the list of ports in that type's project. * Correction: When a user cannot obtain a lock to create a new Graph or Port instance, the explanation dialog only mentioned the case where another user has the lock. Now check and explain differently for the case that this user does not have modeling rights in that project. * Cosmetic: Missing comma and space in dialog when cannot create a new graph in a project, because the project is not open Metamodeling Tools * Fix: #includes: error when opening a metamodeling list dialog, e.g. 'Add...' from Graph Tool Bindings or Subgraphs tab. - Bug introduced in Build 29, was patched with Build29IncludesError.mep (no longer needed) * Cosmetic: Symbol Editor status bar grid+zoom sections should not scale Diagram Editor * Optimization: Speeded up Diagrams with many connected generator-based dynamic ports. - Calculating each port connectable required running the generator. Although the results were cached, each port connectable was only calculated as needed. The generator may produce N ports; even if we only wanted the 4th port, we had to run the whole generator to find the position of this port. Thus for each port we ran the whole generation of N ports, so for all ports in total we generated N*N ports (i.e. each port N times). Instead of simple caching, pre-warm the cache when we are asked for the first connectable, by asking the symbol for all connectables, and caching them by port. The generator is thus run once, generating all N ports - changing an O(N^2) algorithm into O(N). - Was published internally as patch prewarmPortCache.mep