forked from ExtendScript/extendscript-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmenuloader.js
More file actions
76 lines (57 loc) · 2.71 KB
/
menuloader.js
File metadata and controls
76 lines (57 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
(function () {
var VERSION = 0.1;
var MODULE_PATH = "menuloader";
// This module is inspired by a post from Marc Autret (Indiscripts)
// http://www.indiscripts.com/post/2010/02/how-to-create-your-own-indesign-menus
var thisModule = Sky.getUtil(MODULE_PATH);
if( thisModule && thisModule.version >= VERSION) {
return;
};
//--------------------------
// Start menuloader class
function moduleClass() {
var menuloader = this;
menuloader.version = VERSION;
menuloader.description = "Load your own menus in InDesign.";
menuloader.loadItem = function( menuSetup ) {
// Enable ExtendScript localisation engine
$.localize = true;
try{
var MainMenu = app.menus.item( '$ID/Main' );
var MenuItemActionHandlers = {
'onInvoke' : function() {
app.doScript(menuSetup.invokeFunction, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Expand State Abbreviations");
};
};
var menuInstaller = menuInstaller || ( function( MenuItemActionHandlers ) {
var MenuAction = app.scriptMenuActions.itemByName( menuSetup.menuName );
MenuAction = MenuAction.isValid ? MenuAction : app.scriptMenuActions.add( menuSetup.menuName );
for( var eventListener in MenuItemActionHandlers ) {
MenuAction.eventListeners.add( eventListener, MenuItemActionHandlers[eventListener] );
};
var location = MainMenu;
for (var i = 0; i < menuSetup.locationPath.length; i++) {
location = location.submenus.item( menuSetup.locationPath[i] );
};
var refItem = location.menuItems.item( menuSetup.reference );
location.menuItems.add( MenuAction, menuSetup.beforeAfter, refItem );
return true;
})( MenuItemActionHandlers );
} catch ( err ) {
alert("Can't load menu " + String(menuSetup.menuName) + "\n" + err.message + " (Line " + err.line + " in file " + err.fileName + ")");
};
};
menuloader.newSetup = function( ){
return {
locationPath: [],
beforeAfter: undefined,
reference: undefined,
menuName: undefined,
invokeFunction: undefined
};
};
};
//--------------------------
// End menuloader class
Sky.setUtil(MODULE_PATH, new moduleClass() );
})();