Example #1
0
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));
}
Example #2
0
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));




}