Dear all,
I wanted to create a custom menu by script and assign (on the numeric keyboard) shortcuts to the menu items so that I could run one script with small variations instead of modifying a few (currently seven) separate scripts and assigning a shortcut to each of them. But now I realized that custom menus aren’t visible from the “Keyboard Shortcuts” dialog box. (What a disappointment!)
Am I missing something here? Or, is there a workaround?
My idea was to trigger the main script -- Floating Tables.jsx – from the menu item handler passing the menu title as argument.
var tableMenu = app.menus.item("$ID/Main").submenus.item("Table"); // "Floating Tables" sub-menu try { var subMenu = tableMenu.submenus.item("Floating Tables"); subMenu.title; } catch(err) { var subMenu = tableMenu.submenus.add("Floating Tables", LocationOptions.AT_END); } var topLeftAction = app.scriptMenuActions.add("Top Left"); var topLeftListener = topLeftAction.eventListeners.add("onInvoke", FloatingTablesHandler); var topLeftMenuItem = subMenu.menuItems.add(topLeftAction); var topCenterAction = app.scriptMenuActions.add("Top Center"); var topCenterListener = topCenterAction.eventListeners.add("onInvoke", FloatingTablesHandler); var topCenterMenuItem = subMenu.menuItems.add(topCenterAction); var topRightAction = app.scriptMenuActions.add("Top Right"); var topRightListener = topRightAction.eventListeners.add("onInvoke", FloatingTablesHandler); var topRightMenuItem = subMenu.menuItems.add(topRightAction); var bottomLeftAction = app.scriptMenuActions.add("Bottom Left"); var bottomLeftListener = bottomLeftAction.eventListeners.add("onInvoke", FloatingTablesHandler); var bottomLeftMenuItem = subMenu.menuItems.add(bottomLeftAction); var bottomCenterAction = app.scriptMenuActions.add("Bottom Center"); var bottomCenterListener = bottomCenterAction.eventListeners.add("onInvoke", FloatingTablesHandler); var bottomCenterMenuItem = subMenu.menuItems.add(bottomCenterAction); var bottomRightAction = app.scriptMenuActions.add("Bottom Right"); var bottomRightListener = bottomRightAction.eventListeners.add("onInvoke", FloatingTablesHandler); var bottomRightMenuItem = subMenu.menuItems.add(bottomRightAction); var backToTextAction = app.scriptMenuActions.add("Back to Text"); var backToTextListener = backToTextAction.eventListeners.add("onInvoke", FloatingTablesHandler); var backToTextMenuItem = subMenu.menuItems.add(backToTextAction); function FloatingTablesHandler(event) { var args = [event.parent.title]; app.doScript(mainScriptFile, ScriptLanguage.JAVASCRIPT, args, UndoModes.ENTIRE_SCRIPT, "\"" + scriptName + "\" Script"); }
The main script reads the argument like so:
alert("The argument -- " + args[0]);
If memory serves me right, Rorohiko’s APID ToolKit can create “Shortcut-assignable” menus. I don't remember this for sure at the moment because made such menus long ago.
BTW the question was asked here, but it wasn’t answered.
Regards,
Kasyan