DBG+GUI: implemented _plugin_menuremove and _plugin_menuentryremove
This commit is contained in:
parent
d69e9726b1
commit
b79f1bd35b
|
@ -128,6 +128,16 @@ PLUG_IMPEXP void _plugin_menuentrysethotkey(int pluginHandle, int hEntry, const
|
|||
pluginmenuentrysethotkey(pluginHandle, hEntry, hotkey);
|
||||
}
|
||||
|
||||
PLUG_IMPEXP bool _plugin_menuremove(int hMenu)
|
||||
{
|
||||
return pluginmenuremove(hMenu);
|
||||
}
|
||||
|
||||
PLUG_IMPEXP bool _plugin_menuentryremove(int pluginHandle, int hEntry)
|
||||
{
|
||||
return pluginmenuentryremove(pluginHandle, hEntry);
|
||||
}
|
||||
|
||||
PLUG_IMPEXP void _plugin_startscript(CBPLUGINSCRIPT cbScript)
|
||||
{
|
||||
dbgstartscriptthread(cbScript);
|
||||
|
|
|
@ -308,6 +308,8 @@ PLUG_IMPEXP void _plugin_menuentrysetvisible(int pluginHandle, int hEntry, bool
|
|||
PLUG_IMPEXP void _plugin_menusetname(int pluginHandle, int hMenu, const char* name);
|
||||
PLUG_IMPEXP void _plugin_menuentrysetname(int pluginHandle, int hEntry, const char* name);
|
||||
PLUG_IMPEXP void _plugin_menuentrysethotkey(int pluginHandle, int hEntry, const char* hotkey);
|
||||
PLUG_IMPEXP bool _plugin_menuremove(int hMenu);
|
||||
PLUG_IMPEXP bool _plugin_menuentryremove(int pluginHandle, int hEntry);
|
||||
PLUG_IMPEXP void _plugin_startscript(CBPLUGINSCRIPT cbScript);
|
||||
PLUG_IMPEXP bool _plugin_waituntilpaused();
|
||||
PLUG_IMPEXP bool _plugin_registerexprfunction(int pluginHandle, const char* name, int argc, CBPLUGINEXPRFUNCTION cbFunction, void* userdata);
|
||||
|
|
|
@ -934,6 +934,31 @@ void pluginmenuentrysethotkey(int pluginHandle, int hEntry, const char* hotkey)
|
|||
}
|
||||
}
|
||||
|
||||
bool pluginmenuremove(int hMenu)
|
||||
{
|
||||
EXCLUSIVE_ACQUIRE(LockPluginMenuList);
|
||||
for(const auto & currentMenu : pluginMenuList)
|
||||
if(currentMenu.hEntryMenu == hMenu && currentMenu.hParentMenu < 256)
|
||||
return false;
|
||||
return pluginmenuclear(hMenu, true);
|
||||
}
|
||||
|
||||
bool pluginmenuentryremove(int pluginHandle, int hEntry)
|
||||
{
|
||||
EXCLUSIVE_ACQUIRE(LockPluginMenuList);
|
||||
for(auto it = pluginMenuEntryList.begin(); it != pluginMenuEntryList.end(); ++it)
|
||||
{
|
||||
const auto & currentEntry = *it;
|
||||
if(currentEntry.pluginHandle == pluginHandle && currentEntry.hEntryPlugin == hEntry)
|
||||
{
|
||||
GuiMenuRemove(currentEntry.hEntryMenu);
|
||||
pluginMenuEntryList.erase(it);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool pluginexprfuncregister(int pluginHandle, const char* name, int argc, CBPLUGINEXPRFUNCTION cbFunction, void* userdata)
|
||||
{
|
||||
PLUG_EXPRFUNCTION plugExprfunction;
|
||||
|
|
|
@ -91,6 +91,8 @@ void pluginmenuentrysetvisible(int pluginHandle, int hEntry, bool visible);
|
|||
void pluginmenusetname(int pluginHandle, int hMenu, const char* name);
|
||||
void pluginmenuentrysetname(int pluginHandle, int hEntry, const char* name);
|
||||
void pluginmenuentrysethotkey(int pluginHandle, int hEntry, const char* hotkey);
|
||||
bool pluginmenuremove(int hMenu);
|
||||
bool pluginmenuentryremove(int pluginHandle, int hEntry);
|
||||
bool pluginexprfuncregister(int pluginHandle, const char* name, int argc, CBPLUGINEXPRFUNCTION cbFunction, void* userdata);
|
||||
bool pluginexprfuncunregister(int pluginHandle, const char* name);
|
||||
bool pluginformatfuncregister(int pluginHandle, const char* type, CBPLUGINFORMATFUNCTION cbFunction, void* userdata);
|
||||
|
|
|
@ -1141,6 +1141,7 @@ void MainWindow::clearMenuHelper(int hMenu, bool erase)
|
|||
{
|
||||
if(erase)
|
||||
{
|
||||
auto hParentMenu = menu->hParentMenu;
|
||||
//delete the menu itself
|
||||
for(int i = mMenuList.size() - 1; i > -1; i--)
|
||||
{
|
||||
|
@ -1151,6 +1152,11 @@ void MainWindow::clearMenuHelper(int hMenu, bool erase)
|
|||
break;
|
||||
}
|
||||
}
|
||||
//hide the parent menu if empty
|
||||
for(int i = mMenuList.size() - 1; i > -1; i--)
|
||||
if(mMenuList.at(i).hMenu == hParentMenu)
|
||||
if(mMenuList.at(i).mMenu->actions().empty())
|
||||
mMenuList.at(i).mMenu->menuAction()->setVisible(false);
|
||||
}
|
||||
else
|
||||
menu->mMenu->menuAction()->setVisible(false);
|
||||
|
@ -1193,6 +1199,8 @@ void MainWindow::removeMenuEntry(int hEntryMenu)
|
|||
QWidget* parent = menu == 0 ? this : menu->parent;
|
||||
parent->removeAction(entry.mAction);
|
||||
delete entry.mAction;
|
||||
if(menu->mMenu->actions().empty())
|
||||
menu->mMenu->menuAction()->setVisible(false);
|
||||
mEntryList.erase(mEntryList.begin() + i);
|
||||
Bridge::getBridge()->setResult();
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue