1
0
Fork 0

DBG+GUI+BRIDGE: added various menu manipulation functions for plugins

This commit is contained in:
mrexodia 2016-12-26 12:44:03 +01:00
parent e09c325090
commit 8b4c784457
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
10 changed files with 208 additions and 0 deletions

View File

@ -1397,6 +1397,26 @@ BRIDGE_IMPEXP void GuiMenuSetEntryChecked(int hEntry, bool checked)
_gui_sendmessage(GUI_MENU_SET_ENTRY_CHECKED, (void*)hEntry, (void*)checked);
}
BRIDGE_IMPEXP void GuiMenuSetVisible(int hMenu, bool visible)
{
_gui_sendmessage(GUI_MENU_SET_VISIBLE, (void*)hMenu, (void*)visible);
}
BRIDGE_IMPEXP void GuiMenuSetEntryVisible(int hEntry, bool visible)
{
_gui_sendmessage(GUI_MENU_SET_VISIBLE, (void*)hEntry, (void*)visible);
}
BRIDGE_IMPEXP void GuiMenuSetName(int hMenu, const char* name)
{
_gui_sendmessage(GUI_MENU_SET_VISIBLE, (void*)hMenu, (void*)name);
}
BRIDGE_IMPEXP void GuiMenuSetEntryName(int hEntry, const char* name)
{
_gui_sendmessage(GUI_MENU_SET_VISIBLE, (void*)hEntry, (void*)name);
}
BRIDGE_IMPEXP void GuiShowCpu()
{
_gui_sendmessage(GUI_SHOW_CPU, 0, 0);

View File

@ -987,6 +987,10 @@ typedef enum
GUI_TYPE_CLEAR, // param1=unused, param2=unused
GUI_UPDATE_TYPE_WIDGET, // param1=unused, param2=unused
GUI_CLOSE_APPLICATION, // param1=unused, param2=unused
GUI_MENU_SET_VISIBLE, // param1=int hMenu, param2=bool visible
GUI_MENU_SET_ENTRY_VISIBLE, // param1=int hEntry, param2=bool visible
GUI_MENU_SET_NAME, // param1=int hMenu, param2=const char* name
GUI_MENU_SET_ENTRY_NAME, // param1=int hEntry, param2=const char* name
} GUIMSG;
//GUI Typedefs
@ -1114,6 +1118,10 @@ BRIDGE_IMPEXP void GuiLoadSourceFile(const char* path, int line);
BRIDGE_IMPEXP void GuiMenuSetIcon(int hMenu, const ICONDATA* icon);
BRIDGE_IMPEXP void GuiMenuSetEntryIcon(int hEntry, const ICONDATA* icon);
BRIDGE_IMPEXP void GuiMenuSetEntryChecked(int hEntry, bool checked);
BRIDGE_IMPEXP void GuiMenuSetVisible(int hMenu, bool visible);
BRIDGE_IMPEXP void GuiMenuSetEntryVisible(int hEntry, bool visible);
BRIDGE_IMPEXP void GuiMenuSetName(int hMenu, const char* name);
BRIDGE_IMPEXP void GuiMenuSetEntryName(int hEntry, const char* name);
BRIDGE_IMPEXP void GuiShowCpu();
BRIDGE_IMPEXP void GuiAddQWidgetTab(void* qWidget);
BRIDGE_IMPEXP void GuiShowQWidgetTab(void* qWidget);

View File

@ -98,6 +98,26 @@ PLUG_IMPEXP void _plugin_menuentrysetchecked(int pluginHandle, int hEntry, bool
pluginmenuentrysetchecked(pluginHandle, hEntry, checked);
}
PLUG_IMPEXP void _plugin_menusetvisible(int pluginHandle, int hMenu, bool visible)
{
pluginmenusetvisible(pluginHandle, hMenu, visible);
}
PLUG_IMPEXP void _plugin_menuentrysetvisible(int pluginHandle, int hEntry, bool visible)
{
pluginmenuentrysetvisible(pluginHandle, hEntry, visible);
}
PLUG_IMPEXP void _plugin_menusetname(int pluginHandle, int hMenu, const char* name)
{
pluginmenusetname(pluginHandle, hMenu, name);
}
PLUG_IMPEXP void _plugin_menuentrysetname(int pluginHandle, int hEntry, const char* name)
{
pluginmenuentrysetname(pluginHandle, hEntry, name);
}
PLUG_IMPEXP void _plugin_startscript(CBPLUGINSCRIPT cbScript)
{
dbgstartscriptthread(cbScript);

View File

@ -286,6 +286,10 @@ PLUG_IMPEXP bool _plugin_menuclear(int hMenu);
PLUG_IMPEXP void _plugin_menuseticon(int hMenu, const ICONDATA* icon);
PLUG_IMPEXP void _plugin_menuentryseticon(int pluginHandle, int hEntry, const ICONDATA* icon);
PLUG_IMPEXP void _plugin_menuentrysetchecked(int pluginHandle, int hEntry, bool checked);
PLUG_IMPEXP void _plugin_menusetvisible(int pluginHandle, int hMenu, bool visible);
PLUG_IMPEXP void _plugin_menuentrysetvisible(int pluginHandle, int hEntry, bool visible);
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_startscript(CBPLUGINSCRIPT cbScript);
PLUG_IMPEXP bool _plugin_waituntilpaused();
PLUG_IMPEXP bool _plugin_registerexprfunction(int pluginHandle, const char* name, int argc, CBPLUGINEXPRFUNCTION cbFunction, void* userdata);

View File

@ -803,6 +803,64 @@ void pluginmenuentrysetchecked(int pluginHandle, int hEntry, bool checked)
}
}
void pluginmenusetvisible(int pluginHandle, int hMenu, bool visible)
{
SHARED_ACQUIRE(LockPluginMenuList);
for(const auto & currentMenu : pluginMenuList)
{
if(currentMenu.hEntryMenu == hMenu && currentMenu.hEntryPlugin == -1)
{
GuiMenuSetVisible(hMenu, visible);
break;
}
}
}
void pluginmenuentrysetvisible(int pluginHandle, int hEntry, bool visible)
{
if(hEntry == -1)
return;
SHARED_ACQUIRE(LockPluginMenuList);
for(const auto & currentMenu : pluginMenuList)
{
if(currentMenu.pluginHandle == pluginHandle && currentMenu.hEntryPlugin == hEntry)
{
GuiMenuSetEntryChecked(currentMenu.hEntryMenu, visible);
break;
}
}
}
void pluginmenusetname(int pluginHandle, int hMenu, const char* name)
{
if(!name)
return;
SHARED_ACQUIRE(LockPluginMenuList);
for(const auto & currentMenu : pluginMenuList)
{
if(currentMenu.hEntryMenu == hMenu && currentMenu.hEntryPlugin == -1)
{
GuiMenuSetName(hMenu, name);
break;
}
}
}
void pluginmenuentrysetname(int pluginHandle, int hEntry, const char* name)
{
if(hEntry == -1 || !name)
return;
SHARED_ACQUIRE(LockPluginMenuList);
for(const auto & currentMenu : pluginMenuList)
{
if(currentMenu.pluginHandle == pluginHandle && currentMenu.hEntryPlugin == hEntry)
{
GuiMenuSetEntryName(currentMenu.hEntryMenu, name);
break;
}
}
}
bool pluginexprfuncregister(int pluginHandle, const char* name, int argc, CBPLUGINEXPRFUNCTION cbFunction, void* userdata)
{
PLUG_EXPRFUNCTION plugExprfunction;

View File

@ -75,6 +75,10 @@ bool pluginwineventglobal(MSG* message);
void pluginmenuseticon(int hMenu, const ICONDATA* icon);
void pluginmenuentryseticon(int pluginHandle, int hEntry, const ICONDATA* icon);
void pluginmenuentrysetchecked(int pluginHandle, int hEntry, bool checked);
void pluginmenusetvisible(int pluginHandle, int hMenu, bool visible);
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);
bool pluginexprfuncregister(int pluginHandle, const char* name, int argc, CBPLUGINEXPRFUNCTION cbFunction, void* userdata);
bool pluginexprfuncunregister(int pluginHandle, const char* name);

View File

@ -504,6 +504,38 @@ void* Bridge::processMessage(GUIMSG type, void* param1, void* param2)
}
break;
case GUI_MENU_SET_VISIBLE:
{
BridgeResult result;
emit setVisibleMenu(int(param1), bool(param2));
result.Wait();
}
break;
case GUI_MENU_SET_ENTRY_VISIBLE:
{
BridgeResult result;
emit setVisibleMenuEntry(int(param1), bool(param2));
result.Wait();
}
break;
case GUI_MENU_SET_NAME:
{
BridgeResult result;
emit setNameMenu(int(param1), QString((const char*)param2));
result.Wait();
}
break;
case GUI_MENU_SET_ENTRY_NAME:
{
BridgeResult result;
emit setNameMenuEntry(int(param1), QString((const char*)param2));
result.Wait();
}
break;
case GUI_SHOW_CPU:
emit showCpu();
break;

View File

@ -112,6 +112,10 @@ signals:
void setIconMenuEntry(int hEntry, QIcon icon);
void setIconMenu(int hMenu, QIcon icon);
void setCheckedMenuEntry(int hEntry, bool checked);
void setVisibleMenuEntry(int hEntry, bool visible);
void setVisibleMenu(int hMenu, bool visible);
void setNameMenuEntry(int hEntry, QString name);
void setNameMenu(int hMenu, QString name);
void showCpu();
void addQWidgetTab(QWidget* qWidget);
void showQWidgetTab(QWidget* qWidget);

View File

@ -1287,6 +1287,60 @@ void MainWindow::setCheckedMenuEntry(int hEntry, bool checked)
Bridge::getBridge()->setResult();
}
void MainWindow::setVisibleMenuEntry(int hEntry, bool visible)
{
for(int i = 0; i < mEntryList.size(); i++)
{
if(mEntryList.at(i).hEntry == hEntry)
{
const MenuEntryInfo & entry = mEntryList.at(i);
entry.mAction->setVisible(visible);
break;
}
}
Bridge::getBridge()->setResult();
}
void MainWindow::setVisibleMenu(int hMenu, bool visible)
{
for(int i = 0; i < mMenuList.size(); i++)
{
if(mMenuList.at(i).hMenu == hMenu)
{
const MenuInfo & menu = mMenuList.at(i);
menu.mMenu->setVisible(visible);
}
}
Bridge::getBridge()->setResult();
}
void MainWindow::setNameMenuEntry(int hEntry, QString name)
{
for(int i = 0; i < mEntryList.size(); i++)
{
if(mEntryList.at(i).hEntry == hEntry)
{
const MenuEntryInfo & entry = mEntryList.at(i);
entry.mAction->setText(name);
break;
}
}
Bridge::getBridge()->setResult();
}
void MainWindow::setNameMenu(int hMenu, QString name)
{
for(int i = 0; i < mMenuList.size(); i++)
{
if(mMenuList.at(i).hMenu == hMenu)
{
const MenuInfo & menu = mMenuList.at(i);
menu.mMenu->setTitle(name);
}
}
Bridge::getBridge()->setResult();
}
void MainWindow::runSelection()
{
QString command;

View File

@ -107,6 +107,10 @@ public slots:
void setIconMenuEntry(int hEntry, QIcon icon);
void setIconMenu(int hMenu, QIcon icon);
void setCheckedMenuEntry(int hEntry, bool checked);
void setVisibleMenuEntry(int hEntry, bool visible);
void setVisibleMenu(int hMenu, bool visible);
void setNameMenuEntry(int hEntry, QString name);
void setNameMenu(int hMenu, QString name);
void runSelection();
void runExpression();
void getStrWindow(const QString title, QString* text);