export function setupMenu() { // Get template for default menu const defaultMenu = require('electron-default-menu'); const menu = (defaultMenu(app, shell) as Array<MenuItemConstructorOptions>) .map((item) => { const { label } = item; // Append the "Settings" item if ( process.platform === 'darwin' && label === app.getName() && isSubmenu(item.submenu) ) { item.submenu.splice(2, 0, ...getPreferencesItems()); } // Tweak "View" menu if (label === 'View' && isSubmenu(item.submenu)) { item.submenu = item.submenu.filter((subItem) => subItem.label !== 'Toggle Developer Tools'); // Remove "Toggle Developer Tools" item.submenu.push({ type: 'separator' }, { role: 'resetzoom' }, { role: 'zoomin' }, { role: 'zoomout' }); // Add zooming actions item.submenu.push({ type: 'separator' }, { label: 'Toggle Soft Wrap', click: () => ipcMainManager.send(IpcEvents.MONACO_TOGGLE_OPTION, [ 'wordWrap' ]), }); item.submenu.push({ type: 'separator' }, { label: 'Toggle Mini Map', click: () => ipcMainManager.send(IpcEvents.MONACO_TOGGLE_OPTION, [ 'minimap.enabled' ]), }); } // Append items to "Help" if (label === 'Help' && isSubmenu(item.submenu)) { item.submenu = getHelpItems(); } return item; }); menu.splice( process.platform === 'darwin' ? 1 : 0, 0, getFileMenu() ); menu.splice(menu.length - 1, 0, getTasksMenu(), getShowMeMenu()); Menu.setApplicationMenu(Menu.buildFromTemplate(menu)); }
export function configureIntoCpsMenu() { const {remote} = require('electron'); const app = remote.app const {Menu, MenuItem} = remote; // Definitions needed for menu construction var defaultMenu = require('electron-default-menu') // Get template for default menu var menu: any[] = defaultMenu(); var fileMenuPos = 0; if (process.platform === 'darwin') { fileMenuPos = 1; menu[0].submenu.splice(1, 0, { type: 'separator' }); menu[0].submenu.splice(2, 0, { label: 'Preferences...', accelerator: 'Cmd+,', click: function (item: any, focusedWindow: any) { openSettingsHandler.openWindow(); } }); menu[0].submenu.splice(3, 0, { type: 'separator' }); } // Add custom menu menu.splice(fileMenuPos, 0, { label: 'File', submenu: [ { label: 'New Project', accelerator: 'CmdOrCtrl+N', click: function (item: any, focusedWindow: any) { createProjectHandler.openWindow(); } }, { type: 'separator' }, { label: 'Open Project', accelerator: 'CmdOrCtrl+O', click: function (item: any, focusedWindow: any) { //openProjectHandler.openWindow(); openProjectViaDirectoryDialog(); } }, { label: 'Import Project from Git', click: function (item: any, focusedWindow: any) { fetchProjectFromGitHandler.openWindow(); } }, { label: 'Import Example Project', click: function (item: any, focusedWindow: any) { openExamplesFromGitHandler.openWindow(); } }, { type: 'separator' }, { label: 'Open Current Project in File Browser', click: function (item: any, focusedWindow: any) { let activeProject = IntoCpsApp.getInstance().getActiveProject(); if (activeProject != null) SystemUtil.openPath(activeProject.rootPath); }, } ] }) // Add File->Exit on Windows if (process.platform === 'win32') { menu[fileMenuPos].submenu.push( { type: 'separator' }, { label: 'Exit', click: function (item: any, focusedWindow: any) { app.quit(); } }) } menu.forEach(m => { if (m.label == "Window") { if (!(process.platform === 'darwin')) { m.submenu.splice(m.submenu.length - 1, 0, { type: 'separator' }); m.submenu.splice(-1, 0, { label: 'Show Settings', accelerator: 'Alt+S', click: function (item: any, focusedWindow: any) { openSettingsHandler.openWindow(); } }); } m.submenu.splice(m.submenu.length - 1, 0, { label: 'Show Download Manager', accelerator: 'Alt+D', click: function (item: any, focusedWindow: any) { openDownloadManagerHandler.openWindow(); } }); m.submenu.splice(m.submenu.length - 1, 0, { label: 'Show FMU Builder', click: function (item: any, focusedWindow: any) { fmuBuilderHandler.openWindow(); } }); m.submenu.splice(m.submenu.length - 1, 0, { type: 'separator' }); } else if (m.label == "Help") { m.submenu.splice(m.submenu.length - 1, 0, { label: 'Report Issue', click: function (item: any, focusedWindow: any) { reportIssueHandler.openWindow(); } }); } }); // Set top-level application menu, using modified template Menu.setApplicationMenu(Menu.buildFromTemplate(menu)); }