add support for Menu.menuExists() and menu.menuItemExists()

This commit is contained in:
ZappoMan 2014-05-31 13:24:07 -07:00
parent a257af76dc
commit 22a8f88195
5 changed files with 118 additions and 54 deletions

View file

@ -13,68 +13,88 @@
function setupMenus() { function setupMenus() {
Menu.addMenu("Foo"); if (!Menu.menuExists("Foo")) {
Menu.addMenuItem("Foo","Foo item 1", "SHIFT+CTRL+F" ); Window.alert("Adding Menu Foo!");
Menu.addMenuItem("Foo","Foo item 2", "SHIFT+F" ); Menu.addMenu("Foo");
Menu.addMenuItem("Foo","Foo item 3", "META+F" ); Menu.addMenuItem("Foo","Foo item 1", "SHIFT+CTRL+F" );
Menu.addMenuItem({ Menu.addMenuItem("Foo","Foo item 2", "SHIFT+F" );
menuName: "Foo", Menu.addMenuItem("Foo","Foo item 3", "META+F" );
menuItemName: "Foo item 4",
isCheckable: true,
isChecked: true
});
Menu.addMenuItem({ Menu.addMenuItem({
menuName: "Foo", menuName: "Foo",
menuItemName: "Foo item 5", menuItemName: "Foo item 4",
shortcutKey: "ALT+F", isCheckable: true,
isCheckable: true isChecked: true
}); });
Menu.addMenuItem({
menuName: "Foo",
menuItemName: "Foo item 5",
shortcutKey: "ALT+F",
isCheckable: true
});
Menu.addSeparator("Foo","Removable Tools"); Menu.addSeparator("Foo","Removable Tools");
Menu.addMenuItem("Foo","Remove Foo item 4"); Menu.addMenuItem("Foo","Remove Foo item 4");
Menu.addMenuItem("Foo","Remove Foo"); Menu.addMenuItem("Foo","Remove Foo");
Menu.addMenuItem("Foo","Remove Bar-Spam"); Menu.addMenuItem("Foo","Remove Bar-Spam");
Menu.addMenu("Bar");
Menu.addMenuItem("Bar","Bar item 1", "b"); Menu.addMenuItem("Foo","Remove Spam item 2");
Menu.addMenuItem({
menuName: "Bar",
menuItemName: "Bar item 2",
shortcutKeyEvent: { text: "B", isControl: true }
});
Menu.addMenu("Bar > Spam"); Menu.addMenuItem({
Menu.addMenuItem("Bar > Spam","Spam item 1"); menuName: "Foo",
Menu.addMenuItem({ menuItemName: "Remove Spam item 2"
menuName: "Bar > Spam", });
menuItemName: "Spam item 2", } else {
isCheckable: true, Window.alert("Menu Foo already exists!");
isChecked: false }
});
if (!Menu.menuExists("Bar")) {
Window.alert("Adding Menu Bar!");
Menu.addMenu("Bar");
Menu.addMenuItem("Bar","Bar item 1", "b");
Menu.addMenuItem({
menuName: "Bar",
menuItemName: "Bar item 2",
shortcutKeyEvent: { text: "B", isControl: true }
});
Menu.addMenu("Bar > Spam");
Menu.addMenuItem("Bar > Spam","Spam item 1");
Menu.addMenuItem({
menuName: "Bar > Spam",
menuItemName: "Spam item 2",
isCheckable: true,
isChecked: false
});
Menu.addSeparator("Bar > Spam","Other Items"); Menu.addSeparator("Bar > Spam","Other Items");
Menu.addMenuItem("Bar > Spam","Remove Spam item 2"); Menu.addMenuItem("Bar > Spam","Remove Spam item 2");
Menu.addMenuItem("Foo","Remove Spam item 2"); }
Menu.addMenuItem({
menuName: "Foo",
menuItemName: "Remove Spam item 2"
});
Menu.addMenuItem({ if (Menu.menuItemExists("Edit","Cut")) {
menuName: "Edit", Window.alert("Menu Item Cut exist adding 'before Cut'.");
menuItemName: "before Cut", Menu.addMenuItem({
beforeItem: "Cut" menuName: "Edit",
}); menuItemName: "before Cut",
beforeItem: "Cut"
Menu.addMenuItem({ });
menuName: "Edit", } else {
menuItemName: "after Nudge", Window.alert("Menu Item Cut doesn't exist!");
afterItem: "Nudge" }
});
if (Menu.menuItemExists("Edit","Nudge")) {
Window.alert("Menu Item Nudge exist adding 'after Nudge'.");
Menu.addMenuItem({
menuName: "Edit",
menuItemName: "after Nudge",
afterItem: "Nudge"
});
} else {
Window.alert("Menu Item Nudge doesn't exist!");
}
} }
function scriptEnding() { function scriptEnding() {
@ -82,6 +102,10 @@ function scriptEnding() {
Menu.removeMenu("Foo"); Menu.removeMenu("Foo");
Menu.removeMenu("Bar"); Menu.removeMenu("Bar");
Menu.removeMenuItem("Edit", "before Cut");
Menu.removeMenuItem("Edit", "after Nudge");
} }
function menuItemEvent(menuItem) { function menuItemEvent(menuItem) {

View file

@ -1650,6 +1650,16 @@ void Menu::removeMenu(const QString& menuName) {
} }
} }
bool Menu::menuExists(const QString& menuName) {
QAction* action = getMenuAction(menuName);
// only proceed if the menu actually exists
if (action) {
return true;
}
return false;
}
void Menu::addSeparator(const QString& menuName, const QString& separatorName) { void Menu::addSeparator(const QString& menuName, const QString& separatorName) {
QMenu* menuObj = getMenu(menuName); QMenu* menuObj = getMenu(menuName);
if (menuObj) { if (menuObj) {
@ -1725,8 +1735,17 @@ void Menu::removeMenuItem(const QString& menu, const QString& menuitem) {
QMenu* menuObj = getMenu(menu); QMenu* menuObj = getMenu(menu);
if (menuObj) { if (menuObj) {
removeAction(menuObj, menuitem); removeAction(menuObj, menuitem);
QMenuBar::repaint();
} }
QMenuBar::repaint(); };
bool Menu::menuItemExists(const QString& menu, const QString& menuitem) {
QMenu* menuObj = getMenu(menu);
QAction* menuItemAction = _actionHash.value(menuitem);
if (menuObj && menuItemAction) {
return true;
}
return false;
}; };
QString Menu::getSnapshotsLocation() const { QString Menu::getSnapshotsLocation() const {

View file

@ -169,10 +169,12 @@ public slots:
QMenu* addMenu(const QString& menuName); QMenu* addMenu(const QString& menuName);
void removeMenu(const QString& menuName); void removeMenu(const QString& menuName);
bool menuExists(const QString& menuName);
void addSeparator(const QString& menuName, const QString& separatorName); void addSeparator(const QString& menuName, const QString& separatorName);
void removeSeparator(const QString& menuName, const QString& separatorName); void removeSeparator(const QString& menuName, const QString& separatorName);
void addMenuItem(const MenuItemProperties& properties); void addMenuItem(const MenuItemProperties& properties);
void removeMenuItem(const QString& menuName, const QString& menuitem); void removeMenuItem(const QString& menuName, const QString& menuitem);
bool menuItemExists(const QString& menuName, const QString& menuitem);
bool isOptionChecked(const QString& menuOption) const; bool isOptionChecked(const QString& menuOption) const;
void setIsOptionChecked(const QString& menuOption, bool isChecked); void setIsOptionChecked(const QString& menuOption, bool isChecked);

View file

@ -35,6 +35,14 @@ void MenuScriptingInterface::removeMenu(const QString& menu) {
QMetaObject::invokeMethod(Menu::getInstance(), "removeMenu", Q_ARG(const QString&, menu)); QMetaObject::invokeMethod(Menu::getInstance(), "removeMenu", Q_ARG(const QString&, menu));
} }
bool MenuScriptingInterface::menuExists(const QString& menu) {
bool result;
QMetaObject::invokeMethod(Menu::getInstance(), "menuExists", Qt::BlockingQueuedConnection,
Q_RETURN_ARG(bool, result),
Q_ARG(const QString&, menu));
return result;
}
void MenuScriptingInterface::addSeparator(const QString& menuName, const QString& separatorName) { void MenuScriptingInterface::addSeparator(const QString& menuName, const QString& separatorName) {
QMetaObject::invokeMethod(Menu::getInstance(), "addSeparator", QMetaObject::invokeMethod(Menu::getInstance(), "addSeparator",
Q_ARG(const QString&, menuName), Q_ARG(const QString&, menuName),
@ -67,6 +75,15 @@ void MenuScriptingInterface::removeMenuItem(const QString& menu, const QString&
Q_ARG(const QString&, menuitem)); Q_ARG(const QString&, menuitem));
}; };
bool MenuScriptingInterface::menuItemExists(const QString& menu, const QString& menuitem) {
bool result;
QMetaObject::invokeMethod(Menu::getInstance(), "menuItemExists", Qt::BlockingQueuedConnection,
Q_RETURN_ARG(bool, result),
Q_ARG(const QString&, menu),
Q_ARG(const QString&, menuitem));
return result;
}
bool MenuScriptingInterface::isOptionChecked(const QString& menuOption) { bool MenuScriptingInterface::isOptionChecked(const QString& menuOption) {
bool result; bool result;
QMetaObject::invokeMethod(Menu::getInstance(), "isOptionChecked", Qt::BlockingQueuedConnection, QMetaObject::invokeMethod(Menu::getInstance(), "isOptionChecked", Qt::BlockingQueuedConnection,

View file

@ -33,6 +33,7 @@ private slots:
public slots: public slots:
void addMenu(const QString& menuName); void addMenu(const QString& menuName);
void removeMenu(const QString& menuName); void removeMenu(const QString& menuName);
bool menuExists(const QString& menuName);
void addSeparator(const QString& menuName, const QString& separatorName); void addSeparator(const QString& menuName, const QString& separatorName);
void removeSeparator(const QString& menuName, const QString& separatorName); void removeSeparator(const QString& menuName, const QString& separatorName);
@ -42,6 +43,7 @@ public slots:
void addMenuItem(const QString& menuName, const QString& menuitem); void addMenuItem(const QString& menuName, const QString& menuitem);
void removeMenuItem(const QString& menuName, const QString& menuitem); void removeMenuItem(const QString& menuName, const QString& menuitem);
bool menuItemExists(const QString& menuName, const QString& menuitem);
bool isOptionChecked(const QString& menuOption); bool isOptionChecked(const QString& menuOption);
void setIsOptionChecked(const QString& menuOption, bool isChecked); void setIsOptionChecked(const QString& menuOption, bool isChecked);