app.on("ready", () => { // window MainWindow.getInstance().show() // tray const tray = new Tray(`${__dirname}/images/icon.png`) const menu = Menu.buildFromTemplate([ {label: "Setting", click: () => SettingWindow.getInstance().show()}, {label: "Quit", click: () => app.quit()}, ]) tray.setToolTip(app.getName()) tray.setContextMenu(menu) // menu Menu.setApplicationMenu(Menu.buildFromTemplate([{ label: "Application", submenu: [ { label: "About Application", selector: "orderFrontStandardAboutPanel:" }, { type: "separator" }, { label: "Quit", accelerator: "Command+Q", click: () => app.quit() }, ]}, { label: "Edit", submenu: [ { label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" }, { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" }, { type: "separator" }, { label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" }, { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" }, { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" }, { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" }, ]}, ])) })
const setApplicationMenu = () => { const menus = [editMenuTemplate]; if (env.name !== 'production') { menus.push(devMenuTemplate); } Menu.setApplicationMenu(Menu.buildFromTemplate(menus)); };
(event: Electron.IpcMessageEvent, items: ReadonlyArray<any>) => { const menu = new Menu() const menuItems = items.map((item, i) => { return new MenuItem({ label: item.label, click: () => event.sender.send('contextual-menu-action', i), type: item.type, enabled: item.enabled, }) }) for (const item of menuItems) { menu.append(item) } const window = BrowserWindow.fromWebContents(event.sender) menu.popup(window, { async: true }) }
export function createWindow() { const electronScreen = screen; const size = electronScreen.getPrimaryDisplay().workAreaSize; // Create the browser window. win = new BrowserWindow({ width: 1200, height: 900, title: pkg.productName, icon: path.join(__dirname, '../resources/icon.png') }); Menu.setApplicationMenu(Menu.buildFromTemplate(menuTemplate)); // and load the index.html of the app. win.loadURL(`file://${__dirname}/index.html`); // Emitted when the window is closed. win.on('closed', () => { // Dereference the window object, usually you would store window // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. win = null; }); }
const __refreshMenu = _.debounce(function () { Menu.setApplicationMenu(Menu.buildFromTemplate(_.cloneDeep(menuTemplate))); globalShortcut.unregisterAll(); const mainWindow = shell.getMainWindow(); if (mainWindow.isFocused()) { menuTemplate.forEach((menuItem) => registerShortcuts(menuItem)); } }, 100);
var setApplicationMenu = function () { var menus :Electron.MenuItemOptions[]; menus = [editMenuTemplate]; if (env.name !== 'production') { menus.push(devMenuTemplate); } Menu.setApplicationMenu(Menu.buildFromTemplate(menus)); };
const setMenu = (mainWindow: MainWindow) => { const buildedMenu = Menu.buildFromTemplate([ { label: 'File', submenu: [ { label: 'New File', accelerator: 'Command+N', click: () => { FileManager.getInstance().resetFile(); }}, { label: 'Open...' , accelerator: 'Command+O', click: () => { FileManager.getInstance().openFile(); }}, { type: 'separator' }, { label: 'Save', accelerator: 'Command+S', click: () => { FileManager.getInstance().saveFile(); }}, { label: 'Save As...', click: () => { FileManager.getInstance().saveAsNewFile(); }}, { type: 'separator' }, { label: 'Export To PDF', click: () => { ExportWindow.getInstance().createWindow(MainWindow.getInstance().getText()); }}, { type: 'separator' }, { label: 'Quit', accelerator: 'Command+Q', click: () => app.quit() } ] }, { label: 'Edit', submenu: [ { label: 'Undo', accelerator: 'CmdOrCtrl+Z', selector: 'undo:' }, { label: 'Redo', accelerator: 'Shift+CmdOrCtrl+Z', selector: 'redo:' }, { type: 'separator' }, { label: 'Cut', accelerator: 'CmdOrCtrl+X', selector: 'cut:' }, { label: 'Copy', accelerator: 'CmdOrCtrl+C', selector: 'copy:' }, { label: 'Paste', accelerator: 'CmdOrCtrl+V', selector: 'paste:' }, { label: 'Select All', accelerator: 'CmdOrCtrl+A', selector: 'selectAll:' } ] }, { label: 'Play', submenu: [ { label: 'Play Slideshow', accelerator: 'Command+P', click: () => PresentationWindow.getInstance().createWindow() } ] }, { label: 'View', submenu: [ { label: 'Toggle Developer Tools', accelerator: 'Alt+Command+I', click: function() { mainWindow.getBrowserWindow().webContents.toggleDevTools(); } } ] } ]); Menu.setApplicationMenu(buildedMenu); };
const __refreshMenu = _.debounce(function () { Menu.setApplicationMenu(Menu.buildFromTemplate(_.cloneDeep(menuTemplate))); const mainWindow = shell.getMainWindow(); if (mainWindow.isFocused()) { currentShortcuts = {}; menuTemplate.forEach((menuItem) => registerShortcuts(mainWindow, menuItem)); mainWindow.webContents.send("updateShortcuts", JSON.stringify(currentShortcuts)); } }, 100);
export function buildMenu() { let menuItems: Electron.MenuItemConstructorOptions[] = []; if (process.platform === "win32") { // サービスをinjectionするようになったらnewはしないけども。 menuItems = new DefaultMenu().build(); } const menu = Menu.buildFromTemplate(menuItems); Menu.setApplicationMenu(menu); }
socket.on('menu-setApplicationMenu', (menuItems) => { const menu = Menu.buildFromTemplate(menuItems); addMenuItemClickConnector(menu.items, (id) => { socket.emit("menuItemClicked", id); }); Menu.setApplicationMenu(menu); });