/
menu.js
57 lines (44 loc) · 1.21 KB
/
menu.js
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
var fs = require('fs'),
path = require('path');
var NativeMenu = require('./bindings').NativeMenu,
EventEmitter = require('events').EventEmitter,
inherit = require('./utils').inherit;
module.exports = Menu;
function Menu(options){
normalizeItems(options);
var nativeMenu = new NativeMenu(options);
inherit(nativeMenu, EventEmitter, [
function toString(){
return '[object Menu]';
}
]);
return nativeMenu;
}
var normalizeItems = function(options){
normalizeMnemonic(options);
normalize(options);
}
var normalizeMnemonic = function(options){
// OSX does not support mnemonics for menu,
// it only supports submenu mnemonics
if( process.platform = 'darwin') {
for(i in options) {
options[i]['label'] = options[i]['label'].replace(/(&)(\w)/g,'$2');
}
}
if( process.platform != 'linux') {
return;
}
for(i in options) {
options[i]['label'] = options[i]['label'].replace(/(&)(\w)/g,'_$2');
normalizeMnemonic(options[i]['submenu']);
}
}
var normalize = function(options){
for(i in options) {
if(options[i].hasOwnProperty('icon')){
options[i]['icon'] = path.resolve(options[i]['icon']);
}
normalize(options[i]['submenu']);
}
}