ModelMaker Code Explorer 4.05
New features
- Favorite Members optionally keep their regular position in the members view - instead of appearing first. Properties | Display Options.
- IDE Integration page in Properties dialog allows registering and unregistering ModelMaker Code Explorer in Delphi 5 - 2006.
- Parameter wizards allow multiple selection delete. Clipboard operations Cut, Copy and Paste added. Copy includes a plain text clipboard format that can be pasted in source code. The parameter name has a full parameter history (drops down on F4) that allows selecting a parameter modifier name and type from the history at once.
- IDE functions Find, Find In Files, Find References, Find Local References are available from inside the explorer window - pop up IDE sub menus. The interaction with the IDE is based on the "Use text at cursor" feature: MMX positions the cursor at the entity name and then invokes the IDE function. The available functions depend on the IDE version: Delphi 7 and lower does not support Find (Local) References.
- Surround with template shows the pop up menu at editor cursor position rather than at mouse position.
- When displaying sorting hints the members view allows sorting (multiple) classes. Available in members view pop up menu.
- IntelliReplace optionally searches in associated comments and attributes and replaces inside comments, strings and directives in code. Defaults are set on the Properties | [Language] | IntelliReplace tabs. The Rename Local and Pascal Method / Property IntelliReplace dialogs allow temporarily overriding these defaults.
- Pascal: Linked Module Analyzer (Wizards pop up sub menus) shows list of modules (units) and binary resources that are linked into a compiled project. The analyzer shows (and allows sorting on) module name, full module path, resource name (form name - if applicable), and status. A flexible Module report emits the analyzes to a file. The analyzer uses a .map file to determine which units were linked in. Therefore, before running the analyzer you should build the project with map file output enabled. Project Options, Linker, detailed map file. Using the map file assures the compiler and linker logic is used. The compiled .exe (or .dll) .map and .dpr files must all be in the same directory. Defining a project output directory also places the .map file in that directory. To run the analyzer you have to copy the compiled .exe and .map files to the .dpr project source directory. Additionally the resources linked into the executable as extracted from the .exe or .dll are displayed and can be reported.
- MMX Pop up menu available in editor - default bound to Ctrl+Shift+Alt+X, but can optionally be modified to Alt+X. Intended as an alternative for the editor pop up menu MMX sub item.
- Delphi 2005 - 2006: Sync Edit Method: selects entire method implementation (actually entity at cursor position) and starts Delphi Sync Edit mode.
- Rename and Edit Procedure optionally use IntelliReplace to propagate the renamed procedure in the entire module. Default setting is taken from Properties | Pascal | IntelliReplace | Default Method Rename scope.
- Delphi 2006: As long as a component is selected in the D2006 Object Inspector, the OI steals the Enter key event from the MMX Member Search Bar. MMX now treats Ctrl+Enter identical to Enter (locate implementation). Alt+Enter or Shift+Enter still locate the declaration.
- D2005 / D2006: All operations that focus the source editor now also activate the code tab.
- Parsers now support source files containing the UTF-8 byte-order mark EF BB BF.
- C# parser now supports unsafe pointer types as in: void* Pointer;
int** PointerToPointerToInt;
char*[] PointerToCharArray(); - C# parser now supports nullable types as in: int? x;
int? z = x ?? y;
char?[] letters; - C# Member conversions:
- Fields can be converted into methods or properties
- Non-void Methods can be converted into fields or properties
- Properties can be converted into fields or methods
- Break up Property: creates methods based on the property access methods and leaves a property state field, then removed the property.
- Multiple selection is supported if the selected members are of the same member type.
- Conversions are available in the Member view "Convert to" pop up sub menu.
- Pascal: Copy/Pasting a property updates access code for renamed state fields. C# already did this.
- Add Method dialog allows selecting Method Implementation Insertion Position from: [Insert Sorted | Append]. Add Method and Extract Method additionally allow selecting [Insert After Current | Insert Before Current] if the editor cursor is in a method implementation for the current class.
- Module Search: new node in contents tree uses Member Search bar for module wide searching. Module Search uses the type and visibility filters and includes searching classes etc. Specialized filters like eventhandler / component / access method filters are ignored. Matched members are grouped per class and sorted on name. Entering text in the Member Search Bar automatically selects the Module Seach node if option "Auto Invoke Module Search" on Properties | Search tab is checked (default: checked)
- Search Bar options are moved from Properties | General tab to Properties | General | Search tab.
- Pascal: Add Procedure available as Editor Refactoring in popup menu and MMX main nenu.
- Pascal: Toggle Accessors: when invoked on a property access method locates the implemetation for the "other (read/write)" property access method. When invoked on a property locates the first access method implementation.
- Duplicate lines: duplicates the selected lines - or single line when selecton is empty.
- Borland IDEs: Properties | General | IDE Integration has an option to use a short caption "MMX" for the Explorer Window. Useful when docking in BDS3/4 tabs.
Solved bugs
- Method and Property IntelliReplace would not work - whatever was selected or clicked in dialog. Solved
- A Display errors "Unable to display recursive inheritance relations" would appear if either show supported interfaces or show contained source regions was enabled without showing immediate ancestors. Solved
- Pascal: Change Visibility could in some cases mess up the class interface. Solved.
- "Back to last editing position" and similar commands that would navigate to a .dpr source file would confuse the Delphi IDE for example by closing and re-opening the project. Solved
- Navigation History would not show parameter lists for methods, making it hard to discriminate overloaded methods. Solved.
- Member favorites: if the members view was unfocused, a selected and focused Favorite member would not stand out. Solved.
- Delphi 2005 / 2006: The ModelMaker Code Explorer keybinding Ctrl+C would block Ctrl+C in the history view. Solved.
- Navigation History would in some cases was not able to capture overloaded methods with default parameters. Solved.
- Memory leaks (some building up style) removed.
- D2006: In some cases changing layout would reset the size of the contents view to a small default value. Solved.
- Large fonts / high resolution form scaling problems solved.
- Pascal: Rename procedure would not copy the function return type which could result in bad syntax. Solved.
- Delphi 2006: collapsing option in dialogs could mess up dialog layout due to D2006 VCL incompatibility. Solved.
- Delphi 2005/2006: Win32 short cut wizard was not available. Solved.
- Pascal: a long standing bug caused in some cases bad indention for new members in a class interface. Finally reproducable and solved.


Entity Insight