Plugins Menu ID

On 20/07/2014 at 15:20, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R15 
Platform:   Windows  ;   Mac OSX  ; 
Language(s) :     C++  ;

Thought the ID would be M_PLUGINS like the custom menu example that uses M_EDITOR.  Run through a few of the plugin ids in the symbols file but haven't found it.

Anyone know the id of the plugin menu off hand?


On 20/07/2014 at 16:20, xxxxxxxx wrote:

Just off the top of my head but if you do something like:

BaseContainer *pluginsMenu = SearchPluginMenuResource();    # Get 'Plugins' main menu resource
LONG *menuID = pluginsMenu->GetId();                        # Get id of menu basecontainer

Or something along those lines you should be able to get the ID of the menu container..  I think it would have to be done inside the C4DPL_BUILDMENU pluginmessage..

On 21/07/2014 at 06:05, xxxxxxxx wrote:

It's IDS_EDITOR_PLUGINS and is inside the M_EDITOR menu container.


On 21/07/2014 at 06:13, xxxxxxxx wrote:

Thank you both!

Now that I have the menu I want to place my menu in the plugins list.  Right now I get the second index in the plugin menu container and insert after it ( the separator ).  Seems like this could be an issue in the future.  I could search for the separator and place after that but that is still making some bad assumptions.

Any ideas?

thank you,

On 21/07/2014 at 16:04, xxxxxxxx wrote:

Prob either search for the last thing in the menu container or search for the last separator ( whatever works ) and insert after that?

Heres how the SDK examples does the menu insert in Main.cpp ( in case its useful and you havent seen it ).  Theres also a good example somewhere in the python docs i cant find:

void EnhanceMainMenu(void)
	// do this only if necessary - otherwise the user will end up with dozens of menus!
	BaseContainer *bc = GetMenuResource(String("M_EDITOR"));
	if (!bc) return;
	// search for the most important menu entry. if present, the user has customized the settings
	// -> don't add menu again
	if (SearchMenuResource(bc,String("PLUGIN_CMD_1000472")))
	GeData *last = SearchPluginMenuResource();
	BaseContainer sc;
	sc.InsData(MENURESOURCE_SUBTITLE,String("SDK Test"));
	sc.InsData(MENURESOURCE_COMMAND,String("IDM_NEU")); // add C4D's new scene command to menu
	sc.InsData(MENURESOURCE_COMMAND,String("PLUGIN_CMD_1000472")); // add ActiveObject dialog to menu
	if (last)
	else // user killed plugin menu - add as last overall entry
Bool PluginMessage(LONG id, void *data)
	switch (id)
		  //react to this message to dynamically enhance the menu

On 22/07/2014 at 00:17, xxxxxxxx wrote:

Originally posted by xxxxxxxx

Theres also a good example somewhere in the python docs i cant find:

The example in the Python documentation can be found at the page "Plugin Structure" and section "Enhancing the Main Menu".