-
Notifications
You must be signed in to change notification settings - Fork 0
/
tray.js
95 lines (91 loc) · 2.57 KB
/
tray.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
* Tray object represents application tray/system icon with pull down menu.
*/
var Tray = {
// Properties
listeners: [],
menu: null,
tray: null,
//quitting: false,
// Methods
create: function() {
// Create the tray icon
const nativeImage = require('electron').nativeImage;
const app = require('electron').app;
let icon = nativeImage.createFromPath(`${app.getAppPath()}/images/dev_pw.png`)
icon = icon.resize({
height: 16,
width: 16
});
const Tray = require('electron').Tray;
this.tray = new Tray(icon);
// Create the menu
const Menu = require('electron').Menu;
this.menu = Menu.buildFromTemplate([
{
label: 'My Websites (localhost)',
id: 'localhost',
enabled: false,
click: () => {
this.invoke('localhost');
}
},
{
label: 'Terminal',
id: 'terminal',
enabled: false,
click: () => {
this.invoke('terminal');
}
},
{
label: 'Files',
id: 'files',
enabled: false,
click: () => {
this.invoke('files');
}
},
{
type: 'separator'
},
{
label: 'Settings',
id: 'settings',
enabled: false,
click: () => {
this.invoke('settings');
}
},
{
type: 'separator'
},
{
label: 'Quit',
id: 'quit',
click: () => {
this.invoke('quit');
}
}
]);
this.tray.setContextMenu(this.menu);
},
invoke: function(event, arg) {
for (let i = 0; i < this.listeners.length; i++) {
if (this.listeners[i].event === event) {
arg = this.listeners[i].callback(arg);
}
}
return arg;
},
on: function(event, callback) {
this.listeners.push({event: event, callback: callback});
},
setMenuState: function(menuItem, enabled) {
this.menu.getMenuItemById(menuItem).enabled = enabled;
},
getMenuState: function(menuItem) {
return this.menu.getMenuItemById(menuItem).enabled;
}
}
module.exports = Tray;