mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-10 16:58:55 -05:00
adopt menu and menuitem
This commit is contained in:
@@ -32,7 +32,7 @@ var baseModules = [
|
||||
'applicationinsights', 'assert',
|
||||
'child_process', 'chokidar', 'crypto', 'emmet',
|
||||
'events', 'fs', 'getmac', 'glob', 'graceful-fs', 'http', 'http-proxy-agent',
|
||||
'https', 'https-proxy-agent', 'iconv-lite', 'electron', 'menu', 'menu-item', 'net',
|
||||
'https', 'https-proxy-agent', 'iconv-lite', 'electron', 'net',
|
||||
'os', 'path', 'readline', 'remote', 'sax', 'semver',
|
||||
'stream', 'string_decoder', 'url', 'vscode-textmate', 'winreg',
|
||||
'yauzl', 'native-keymap'
|
||||
|
||||
2
src/typings/electron.d.ts
vendored
2
src/typings/electron.d.ts
vendored
@@ -890,7 +890,7 @@ declare module Electron {
|
||||
* Should be specified for submenu type menu item, when it's specified the
|
||||
* type: 'submenu' can be omitted for the menu item
|
||||
*/
|
||||
submenu?: MenuItemOptions[];
|
||||
submenu?: Menu;
|
||||
/**
|
||||
* Unique within a single menu. If defined then it can be used as a reference
|
||||
* to this item by the position attribute.
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
import Menu = require('menu');
|
||||
import MenuItem = require('menu-item');
|
||||
import {ipcMain as ipc, app, shell, dialog} from 'electron';
|
||||
import {ipcMain as ipc, app, shell, dialog, Menu, MenuItem} from 'electron';
|
||||
|
||||
import nls = require('vs/nls');
|
||||
import platform = require('vs/base/common/platform');
|
||||
@@ -151,7 +149,7 @@ export class VSCodeMenu {
|
||||
let menubar = new Menu();
|
||||
|
||||
// Mac: Application
|
||||
let macApplicationMenuItem: MenuItem;
|
||||
let macApplicationMenuItem: Electron.MenuItem;
|
||||
if (platform.isMacintosh) {
|
||||
let applicationMenu = new Menu();
|
||||
macApplicationMenuItem = new MenuItem({ label: env.product.nameShort, submenu: applicationMenu });
|
||||
@@ -179,7 +177,7 @@ export class VSCodeMenu {
|
||||
this.setGotoMenu(gotoMenu);
|
||||
|
||||
// Mac: Window
|
||||
let macWindowMenuItem: MenuItem;
|
||||
let macWindowMenuItem: Electron.MenuItem;
|
||||
if (platform.isMacintosh) {
|
||||
let windowMenu = new Menu();
|
||||
macWindowMenuItem = new MenuItem({ label: mnemonicLabel(nls.localize('mWindow', "Window")), submenu: windowMenu, role: 'window' });
|
||||
@@ -273,7 +271,7 @@ export class VSCodeMenu {
|
||||
return mru;
|
||||
}
|
||||
|
||||
private setMacApplicationMenu(macApplicationMenu: Menu): void {
|
||||
private setMacApplicationMenu(macApplicationMenu: Electron.Menu): void {
|
||||
let about = new MenuItem({ label: nls.localize('mAbout', "About {0}", env.product.nameLong), role: 'about' });
|
||||
let checkForUpdates = this.getUpdateMenuItems();
|
||||
let preferences = this.getPreferencesMenu();
|
||||
@@ -298,10 +296,10 @@ export class VSCodeMenu {
|
||||
actions.forEach(i => macApplicationMenu.append(i));
|
||||
}
|
||||
|
||||
private setFileMenu(fileMenu: Menu): void {
|
||||
private setFileMenu(fileMenu: Electron.Menu): void {
|
||||
let hasNoWindows = (windows.manager.getWindowCount() === 0);
|
||||
|
||||
let newFile:MenuItem;
|
||||
let newFile: Electron.MenuItem;
|
||||
if (hasNoWindows) {
|
||||
newFile = new MenuItem({ label: mnemonicLabel(nls.localize('miNewFile', "&&New File")), accelerator: this.getAccelerator('workbench.action.files.newUntitledFile'), click: () => windows.manager.openNewWindow() });
|
||||
} else {
|
||||
@@ -355,7 +353,7 @@ export class VSCodeMenu {
|
||||
]).forEach((item) => fileMenu.append(item));
|
||||
}
|
||||
|
||||
private getPreferencesMenu(): MenuItem {
|
||||
private getPreferencesMenu(): Electron.MenuItem {
|
||||
let userSettings = this.createMenuItem(nls.localize('miOpenSettings', "&&User Settings"), 'workbench.action.openGlobalSettings');
|
||||
let workspaceSettings = this.createMenuItem(nls.localize('miOpenWorkspaceSettings', "&&Workspace Settings"), 'workbench.action.openWorkspaceSettings');
|
||||
let kebindingSettings = this.createMenuItem(nls.localize('miOpenKeymap', "&&Keyboard Shortcuts"), 'workbench.action.openGlobalKeybindings');
|
||||
@@ -393,7 +391,7 @@ export class VSCodeMenu {
|
||||
}
|
||||
}
|
||||
|
||||
private setOpenRecentMenu(openRecentMenu: Menu): void {
|
||||
private setOpenRecentMenu(openRecentMenu: Electron.Menu): void {
|
||||
let recentList = this.getOpenedPathsList();
|
||||
|
||||
// Folders
|
||||
@@ -422,7 +420,7 @@ export class VSCodeMenu {
|
||||
}
|
||||
}
|
||||
|
||||
private createOpenRecentMenuItem(path:string): MenuItem {
|
||||
private createOpenRecentMenuItem(path:string): Electron.MenuItem {
|
||||
return new MenuItem({ label: path, click: () => {
|
||||
let success = windows.manager.open({ cli: env.cliArgs, pathsToOpen: [path] });
|
||||
if (!success) {
|
||||
@@ -432,8 +430,8 @@ export class VSCodeMenu {
|
||||
}});
|
||||
}
|
||||
|
||||
private createRoleMenuItem(label:string, actionId:string, role:string): MenuItem {
|
||||
let options:IMenuItemConfig = {
|
||||
private createRoleMenuItem(label:string, actionId:string, role:string): Electron.MenuItem {
|
||||
let options:Electron.MenuItemOptions = {
|
||||
label: mnemonicLabel(label),
|
||||
accelerator: this.getAccelerator(actionId),
|
||||
role: role,
|
||||
@@ -443,13 +441,13 @@ export class VSCodeMenu {
|
||||
return new MenuItem(options);
|
||||
}
|
||||
|
||||
private setEditMenu(winLinuxEditMenu: Menu): void {
|
||||
let undo:MenuItem;
|
||||
let redo:MenuItem;
|
||||
let cut:MenuItem;
|
||||
let copy:MenuItem;
|
||||
let paste:MenuItem;
|
||||
let selectAll:MenuItem;
|
||||
private setEditMenu(winLinuxEditMenu: Electron.Menu): void {
|
||||
let undo: Electron.MenuItem;
|
||||
let redo: Electron.MenuItem;
|
||||
let cut: Electron.MenuItem;
|
||||
let copy: Electron.MenuItem;
|
||||
let paste: Electron.MenuItem;
|
||||
let selectAll: Electron.MenuItem;
|
||||
|
||||
if (platform.isMacintosh) {
|
||||
undo = this.createDevToolsAwareMenuItem(nls.localize('miUndo', "&&Undo"), 'undo', (devTools) => devTools.undo());
|
||||
@@ -487,7 +485,7 @@ export class VSCodeMenu {
|
||||
].forEach((item) => winLinuxEditMenu.append(item));
|
||||
}
|
||||
|
||||
private setViewMenu(viewMenu: Menu): void {
|
||||
private setViewMenu(viewMenu: Electron.Menu): void {
|
||||
let commands = this.createMenuItem(nls.localize('miCommandPalette', "&&Command Palette..."), 'workbench.action.showCommands');
|
||||
let markers = this.createMenuItem(nls.localize('miMarker', "&&Errors and Warnings..."), 'workbench.action.showErrorsWarnings');
|
||||
let output = this.createMenuItem(nls.localize('miToggleOutput', "Toggle &&Output"), 'workbench.action.output.toggleOutput');
|
||||
@@ -517,7 +515,7 @@ export class VSCodeMenu {
|
||||
]).forEach((item) => viewMenu.append(item));
|
||||
}
|
||||
|
||||
private setGotoMenu(gotoMenu: Menu): void {
|
||||
private setGotoMenu(gotoMenu: Electron.Menu): void {
|
||||
let back = this.createMenuItem(nls.localize('miBack', "&&Back"), 'workbench.action.navigateBack');
|
||||
let forward = this.createMenuItem(nls.localize('miForward', "&&Forward"), 'workbench.action.navigateForward');
|
||||
let navigateHistory = this.createMenuItem(nls.localize('miNavigateHistory', "&&Navigate History"), 'workbench.action.openPreviousEditor');
|
||||
@@ -539,7 +537,7 @@ export class VSCodeMenu {
|
||||
].forEach((item) => gotoMenu.append(item));
|
||||
}
|
||||
|
||||
private setMacWindowMenu(macWindowMenu: Menu): void {
|
||||
private setMacWindowMenu(macWindowMenu: Electron.Menu): void {
|
||||
let minimize = new MenuItem({ label: nls.localize('mMinimize', "Minimize"), role: 'minimize', accelerator: 'Command+M', enabled: windows.manager.getWindowCount() > 0 });
|
||||
let close = new MenuItem({ label: nls.localize('mClose', "Close"), role: 'close', accelerator: 'Command+W', enabled: windows.manager.getWindowCount() > 0 });
|
||||
let bringAllToFront = new MenuItem({ label: nls.localize('mBringToFront', "Bring All to Front"), role: 'front', enabled: windows.manager.getWindowCount() > 0 });
|
||||
@@ -552,7 +550,7 @@ export class VSCodeMenu {
|
||||
].forEach((item) => macWindowMenu.append(item));
|
||||
}
|
||||
|
||||
private setHelpMenu(helpMenu: Menu): void {
|
||||
private setHelpMenu(helpMenu: Electron.Menu): void {
|
||||
let toggleDevToolsItem = new MenuItem({
|
||||
label: mnemonicLabel(nls.localize('miToggleDevTools', "&&Toggle Developer Tools")),
|
||||
accelerator: this.getAccelerator('workbench.action.toggleDevTools'),
|
||||
@@ -587,7 +585,7 @@ export class VSCodeMenu {
|
||||
}
|
||||
}
|
||||
|
||||
private getUpdateMenuItems(): MenuItem[]{
|
||||
private getUpdateMenuItems(): Electron.MenuItem[]{
|
||||
switch (UpdateManager.state) {
|
||||
case um.State.Uninitialized:
|
||||
return [];
|
||||
@@ -623,9 +621,9 @@ export class VSCodeMenu {
|
||||
}
|
||||
}
|
||||
|
||||
private createMenuItem(label:string, actionId: string, enabled?:boolean): MenuItem;
|
||||
private createMenuItem(label:string, click:() => void, enabled?:boolean): MenuItem;
|
||||
private createMenuItem(arg1:string, arg2:any, arg3?:boolean): MenuItem {
|
||||
private createMenuItem(label:string, actionId: string, enabled?:boolean): Electron.MenuItem;
|
||||
private createMenuItem(label:string, click:() => void, enabled?:boolean): Electron.MenuItem;
|
||||
private createMenuItem(arg1:string, arg2:any, arg3?:boolean): Electron.MenuItem {
|
||||
let label = mnemonicLabel(arg1);
|
||||
let click:() => void = (typeof arg2 === 'function') ? arg2 : () => windows.manager.sendToFocused('vscode:runAction', arg2);
|
||||
let enabled = typeof arg3 === 'boolean' ? arg3 : windows.manager.getWindowCount() > 0;
|
||||
@@ -635,7 +633,7 @@ export class VSCodeMenu {
|
||||
actionId = arg2;
|
||||
}
|
||||
|
||||
let options:IMenuItemConfig = {
|
||||
let options:Electron.MenuItemOptions = {
|
||||
label: label,
|
||||
accelerator: this.getAccelerator(actionId),
|
||||
click: click,
|
||||
@@ -645,7 +643,7 @@ export class VSCodeMenu {
|
||||
return new MenuItem(options);
|
||||
}
|
||||
|
||||
private createDevToolsAwareMenuItem(label:string, actionId: string, devToolsFocusedFn: (contents: WebContents) => void): MenuItem {
|
||||
private createDevToolsAwareMenuItem(label:string, actionId: string, devToolsFocusedFn: (contents: WebContents) => void): Electron.MenuItem {
|
||||
return new MenuItem({
|
||||
label: mnemonicLabel(label),
|
||||
accelerator: this.getAccelerator(actionId),
|
||||
@@ -724,7 +722,7 @@ function reportMenuActionTelemetry(id: string): void {
|
||||
windows.manager.sendToFocused('vscode:telemetry', { eventName: 'workbenchActionExecuted', data: { id, from: 'menu' } });
|
||||
}
|
||||
|
||||
function __separator__(): MenuItem {
|
||||
function __separator__(): Electron.MenuItem {
|
||||
return new MenuItem({ type: 'separator' });
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import {TPromise} from 'vs/base/common/winjs.base';
|
||||
import severity from 'vs/base/common/severity';
|
||||
import actions = require('vs/base/common/actions');
|
||||
import {Separator} from 'vs/base/browser/ui/actionbar/actionbar';
|
||||
@@ -16,10 +16,7 @@ import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
|
||||
import {IMessageService} from 'vs/platform/message/common/message';
|
||||
import {IKeybindingService} from 'vs/platform/keybinding/common/keybindingService';
|
||||
|
||||
import remote = require('remote');
|
||||
|
||||
const Menu = remote.require('menu');
|
||||
const MenuItem = remote.require('menu-item');
|
||||
import {remote} from 'electron';
|
||||
|
||||
export class ContextMenuService implements IContextMenuService {
|
||||
public serviceId = IContextMenuService;
|
||||
@@ -39,26 +36,26 @@ export class ContextMenuService implements IContextMenuService {
|
||||
return TPromise.as(null);
|
||||
}
|
||||
|
||||
let menu = new Menu();
|
||||
let menu = new remote.Menu();
|
||||
let actionToRun: actions.IAction = null;
|
||||
|
||||
actions.forEach(a => {
|
||||
if (a instanceof Separator) {
|
||||
menu.append(new MenuItem({ type: 'separator' }));
|
||||
menu.append(new remote.MenuItem({ type: 'separator' }));
|
||||
} else {
|
||||
const keybinding = !!delegate.getKeyBinding ? delegate.getKeyBinding(a) : undefined;
|
||||
const accelerator = keybinding && this.keybindingService.getElectronAcceleratorFor(keybinding);
|
||||
|
||||
const item = new MenuItem({
|
||||
const item = new remote.MenuItem({
|
||||
label: a.label,
|
||||
checked: a.checked,
|
||||
accelerator,
|
||||
enabled: a.enabled,
|
||||
click: () => {
|
||||
actionToRun = a;
|
||||
}
|
||||
});
|
||||
|
||||
item.enabled = a.enabled;
|
||||
menu.append(item);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user