I'm in the process of reproducing Project Page Options IDE add-in¹. Particularly, this add-in replaces default behavior² of Open action in the Project Manager with its own behavior - to open a HTML page in the same internal browser which is used to display a Welcome Page. So, i want to do the same, but currently i failed to reach this menu.
I tried IOTAProjectManager interface, which facilitates an adding Project Manager's menu items³, but i learned what its notifiers
are isolated from each other, so most probably this API is useless for my purpose.
Also, i tried to hook into application-wide action processing. It gave me absolutely no results, probably action list(s) are not used there at all.
I guess, disposition above leave me no choice but to resort to a hacks, which makes hackish solutions really welcome here. So, any idea please?
¹ For more info about that see this Q.
² There are 3 relevant items: Open, Show Markup, Show Designer. Open defaults to Show Designer without an add-in.
³ In the fact, this API allows adding items on-the-fly, and it probably makes things even more complicated.
Context menus illustrated:
As TOndrej mentioned in comment below, behavior of Open menu item changed only for HTML document configured as "Project Page" in the corresponding dialog.
I think the original Project Page extension does it by installing an IDE Notifier (see
TProjectPageNotifier
below). I don't think it has anything to do with the Project Manager. It simply listens to notifications about files which are being opened in the IDE and if it's the project page it will open it in the embedded browser instead of the default HTML designer. Here's my attempt to reproduce this functionality for Delphi 2007.1) package:
2) data module with an action and a menu item to add to 'Project' menu:
3) the data module's dfm:
4) project page options dialog:
5) the dialog's dfm:
However, I don't know what effect the "Resource Folder" has. The option can be stored in and read from the .dproj file, it's also checked that it exists but I don't know how the original extension uses the folder path. If you find out please let me know, I'll include it in the code.
Also, part of this code is copied from my answer to another question of yours, which I compiled (and briefly tested) in Delphi 2007 and Delphi XE. This code was only compiled and briefly tested in Delphi 2007.
Hope this helps as a starting point, at least.