On 25/07/2018 at 02:59, xxxxxxxx wrote:
If you only get one submenu it's working nicely, but if you had another subMenu not anymore.
void MySearchMenuResource(BaseContainer* bc)
{
if (bc == nullptr) return;
BrowseContainer browse(bc);
Int32 id = 0;
GeData * dat = nullptr;
while (browse.GetNext(&id, &dat))
{
if (id == MENURESOURCE_SUBMENU || id == MENURESOURCE_STRING)
{
MySearchMenuResource(dat->GetContainer());
}
else if (id == MENURESOURCE_COMMAND)
{
if (dat->GetString() == String("PLUGIN_CMD_100004769"))
{
BaseContainer submenu = BaseContainer();
submenu.InsData(MENURESOURCE_SUBTITLE, "SubSubMenu");
submenu.InsData(MENURESOURCE_SEPERATOR, true);
submenu.InsData(MENURESOURCE_STRING, "PLUGIN_CMD_5159");
BaseContainer menu = BaseContainer();
menu.InsData(MENURESOURCE_SUBTITLE, "SubMenu");
menu.InsData(MENURESOURCE_SEPERATOR, true);
menu.InsData(MENURESOURCE_SUBMENU, submenu);
bc->InsDataAfter(MENURESOURCE_SUBMENU, menu, dat);
UpdateMenus();
}
}
}
}
Bool MyCommand::Execute(BaseDocument* doc)
{
BaseContainer *bc = GetMenuResource(String("M_OBJECT_MANAGER"));
if (!bc) return true;
MySearchMenuResource(bc);
return true;
}
Not with this one
void MySearchMenuResource(BaseContainer* bc)
{
if (bc == nullptr) return;
BrowseContainer browse(bc);
Int32 id = 0;
GeData * dat = nullptr;
while (browse.GetNext(&id, &dat))
{
if (id == MENURESOURCE_SUBMENU || id == MENURESOURCE_STRING)
{
MySearchMenuResource(dat->GetContainer());
}
else if (id == MENURESOURCE_COMMAND)
{
if (dat->GetString() == String("PLUGIN_CMD_100004769"))
{
BaseContainer menu = BaseContainer();
menu.InsData(MENURESOURCE_SUBTITLE, "SubMenu");
menu.InsData(MENURESOURCE_SEPERATOR, true);
bc->InsDataAfter(MENURESOURCE_SUBMENU, menu, dat);
UpdateMenus();
}
}
}
}
Bool MyCommand::Execute(BaseDocument* doc)
{
BaseContainer *bc = GetMenuResource(String("M_OBJECT_MANAGER"));
if (!bc) return true;
MySearchMenuResource(bc);
return true;
}
And it's the same for plugins in a nested folder.
But if you get an example of such plugin, please let us know, maybe I missed something. Maybe you could replicate the plugin folder structure?
Cheers,
Maxime