2017-10-15 17:03:07 +02:00
|
|
|
"use strict";
|
2019-01-05 02:17:31 +01:00
|
|
|
const electron_1 = require("electron");
|
|
|
|
|
const contextMenuItems = [];
|
|
|
|
|
module.exports = (socket) => {
|
|
|
|
|
socket.on('menu-setContextMenu', (browserWindowId, menuItems) => {
|
|
|
|
|
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
|
|
|
|
addContextMenuItemClickConnector(menu.items, browserWindowId, (id, browserWindowId) => {
|
2019-01-04 03:27:12 +01:00
|
|
|
socket.emit('contextMenuItemClicked', [id, browserWindowId]);
|
2017-10-21 04:37:01 +02:00
|
|
|
});
|
|
|
|
|
contextMenuItems.push({
|
|
|
|
|
menu: menu,
|
|
|
|
|
browserWindowId: browserWindowId
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
function addContextMenuItemClickConnector(menuItems, browserWindowId, callback) {
|
2019-01-05 02:17:31 +01:00
|
|
|
menuItems.forEach((item) => {
|
2017-10-21 04:37:01 +02:00
|
|
|
if (item.submenu && item.submenu.items.length > 0) {
|
|
|
|
|
addContextMenuItemClickConnector(item.submenu.items, browserWindowId, callback);
|
|
|
|
|
}
|
2019-01-04 03:27:12 +01:00
|
|
|
if ('id' in item && item.id) {
|
2019-01-05 02:17:31 +01:00
|
|
|
item.click = () => { callback(item.id, browserWindowId); };
|
2017-10-21 04:37:01 +02:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2019-01-05 02:17:31 +01:00
|
|
|
socket.on('menu-contextMenuPopup', (browserWindowId) => {
|
|
|
|
|
contextMenuItems.forEach(x => {
|
2017-10-21 04:37:01 +02:00
|
|
|
if (x.browserWindowId === browserWindowId) {
|
2019-01-05 02:17:31 +01:00
|
|
|
const browserWindow = electron_1.BrowserWindow.fromId(browserWindowId);
|
2017-10-21 04:37:01 +02:00
|
|
|
x.menu.popup(browserWindow);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
2019-01-05 02:17:31 +01:00
|
|
|
socket.on('menu-setApplicationMenu', (menuItems) => {
|
|
|
|
|
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
|
|
|
|
addMenuItemClickConnector(menu.items, (id) => {
|
2019-01-04 03:27:12 +01:00
|
|
|
socket.emit('menuItemClicked', id);
|
2017-10-15 17:03:07 +02:00
|
|
|
});
|
|
|
|
|
electron_1.Menu.setApplicationMenu(menu);
|
|
|
|
|
});
|
|
|
|
|
function addMenuItemClickConnector(menuItems, callback) {
|
2019-01-05 02:17:31 +01:00
|
|
|
menuItems.forEach((item) => {
|
2017-10-15 17:03:07 +02:00
|
|
|
if (item.submenu && item.submenu.items.length > 0) {
|
|
|
|
|
addMenuItemClickConnector(item.submenu.items, callback);
|
|
|
|
|
}
|
2019-01-04 03:27:12 +01:00
|
|
|
if ('id' in item && item.id) {
|
2019-01-05 02:17:31 +01:00
|
|
|
item.click = () => { callback(item.id); };
|
2017-10-15 17:03:07 +02:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
//# sourceMappingURL=menu.js.map
|