This commit is contained in:
Benjamin Pasero 2018-06-18 09:59:51 +02:00 committed by GitHub
parent d32c949d4a
commit aaff78b996
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 29 additions and 22 deletions

View file

@ -23,7 +23,7 @@ import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform';
import { ICodeWindow, IWindowState, WindowMode } from 'vs/platform/windows/electron-main/windows'; import { ICodeWindow, IWindowState, WindowMode } from 'vs/platform/windows/electron-main/windows';
import { IWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces'; import { IWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces';
import { IBackupMainService } from 'vs/platform/backup/common/backup'; import { IBackupMainService } from 'vs/platform/backup/common/backup';
import { ICommandAction } from 'vs/platform/actions/common/actions'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
import { mark, exportEntries } from 'vs/base/common/performance'; import { mark, exportEntries } from 'vs/base/common/performance';
import { resolveMarketplaceHeaders } from 'vs/platform/extensionManagement/node/extensionGalleryService'; import { resolveMarketplaceHeaders } from 'vs/platform/extensionManagement/node/extensionGalleryService';
@ -916,7 +916,7 @@ export class CodeWindow implements ICodeWindow {
} }
} }
public updateTouchBar(groups: ICommandAction[][]): void { public updateTouchBar(groups: ISerializableCommandAction[][]): void {
if (!isMacintosh) { if (!isMacintosh) {
return; // only supported on macOS return; // only supported on macOS
} }
@ -945,7 +945,7 @@ export class CodeWindow implements ICodeWindow {
this._win.setTouchBar(new TouchBar({ items: this.touchBarGroups })); this._win.setTouchBar(new TouchBar({ items: this.touchBarGroups }));
} }
private createTouchBarGroup(items: ICommandAction[] = []): Electron.TouchBarSegmentedControl { private createTouchBarGroup(items: ISerializableCommandAction[] = []): Electron.TouchBarSegmentedControl {
// Group Segments // Group Segments
const segments = this.createTouchBarGroupSegments(items); const segments = this.createTouchBarGroupSegments(items);
@ -963,11 +963,11 @@ export class CodeWindow implements ICodeWindow {
return control; return control;
} }
private createTouchBarGroupSegments(items: ICommandAction[] = []): ITouchBarSegment[] { private createTouchBarGroupSegments(items: ISerializableCommandAction[] = []): ITouchBarSegment[] {
const segments: ITouchBarSegment[] = items.map(item => { const segments: ITouchBarSegment[] = items.map(item => {
let icon: Electron.NativeImage; let icon: Electron.NativeImage;
if (item.iconLocation && item.iconLocation.dark.scheme === 'file') { if (item.iconLocation && item.iconLocation.dark.scheme === 'file') {
icon = nativeImage.createFromPath(item.iconLocation.dark.fsPath); icon = nativeImage.createFromPath(URI.revive(item.iconLocation.dark).fsPath);
if (icon.isEmpty()) { if (icon.isEmpty()) {
icon = void 0; icon = void 0;
} }

View file

@ -13,21 +13,28 @@ import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/commo
import { ICommandService } from 'vs/platform/commands/common/commands'; import { ICommandService } from 'vs/platform/commands/common/commands';
import { IDisposable } from 'vs/base/common/lifecycle'; import { IDisposable } from 'vs/base/common/lifecycle';
import { Event } from 'vs/base/common/event'; import { Event } from 'vs/base/common/event';
import URI from 'vs/base/common/uri'; import URI, { UriComponents } from 'vs/base/common/uri';
export interface ILocalizedString { export interface ILocalizedString {
value: string; value: string;
original: string; original: string;
} }
export interface ICommandAction { export interface IBaseCommandAction {
id: string; id: string;
title: string | ILocalizedString; title: string | ILocalizedString;
category?: string | ILocalizedString; category?: string | ILocalizedString;
}
export interface ICommandAction extends IBaseCommandAction {
iconLocation?: { dark: URI; light?: URI; }; iconLocation?: { dark: URI; light?: URI; };
precondition?: ContextKeyExpr; precondition?: ContextKeyExpr;
} }
export interface ISerializableCommandAction extends IBaseCommandAction {
iconLocation?: { dark: UriComponents; light?: UriComponents; };
}
export interface IMenuItem { export interface IMenuItem {
command: ICommandAction; command: ICommandAction;
alt?: ICommandAction; alt?: ICommandAction;

View file

@ -13,7 +13,7 @@ import { IProcessEnvironment } from 'vs/base/common/platform';
import { ParsedArgs } from 'vs/platform/environment/common/environment'; import { ParsedArgs } from 'vs/platform/environment/common/environment';
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces';
import { IRecentlyOpened } from 'vs/platform/history/common/history'; import { IRecentlyOpened } from 'vs/platform/history/common/history';
import { ICommandAction } from 'vs/platform/actions/common/actions'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
import { PerformanceEntry } from 'vs/base/common/performance'; import { PerformanceEntry } from 'vs/base/common/performance';
import { LogLevel } from 'vs/platform/log/common/log'; import { LogLevel } from 'vs/platform/log/common/log';
import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { IDisposable, dispose } from 'vs/base/common/lifecycle';
@ -144,7 +144,7 @@ export interface IWindowsService {
toggleWindowTabsBar(): TPromise<void>; toggleWindowTabsBar(): TPromise<void>;
// macOS TouchBar // macOS TouchBar
updateTouchBar(windowId: number, items: ICommandAction[][]): TPromise<void>; updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): TPromise<void>;
// Shared process // Shared process
whenSharedProcessReady(): TPromise<void>; whenSharedProcessReady(): TPromise<void>;
@ -192,7 +192,7 @@ export interface IWindowService {
openDevTools(options?: IDevToolsOptions): TPromise<void>; openDevTools(options?: IDevToolsOptions): TPromise<void>;
toggleDevTools(): TPromise<void>; toggleDevTools(): TPromise<void>;
closeWorkspace(): TPromise<void>; closeWorkspace(): TPromise<void>;
updateTouchBar(items: ICommandAction[][]): TPromise<void>; updateTouchBar(items: ISerializableCommandAction[][]): TPromise<void>;
createAndEnterWorkspace(folders?: IWorkspaceFolderCreationData[], path?: string): TPromise<IEnterWorkspaceResult>; createAndEnterWorkspace(folders?: IWorkspaceFolderCreationData[], path?: string): TPromise<IEnterWorkspaceResult>;
saveAndEnterWorkspace(path: string): TPromise<IEnterWorkspaceResult>; saveAndEnterWorkspace(path: string): TPromise<IEnterWorkspaceResult>;
toggleFullScreen(): TPromise<void>; toggleFullScreen(): TPromise<void>;

View file

@ -11,7 +11,7 @@ import { IChannel, eventToCall, eventFromCall } from 'vs/base/parts/ipc/common/i
import { IWindowsService, INativeOpenDialogOptions, IEnterWorkspaceResult, CrashReporterStartOptions, IMessageBoxResult, MessageBoxOptions, SaveDialogOptions, OpenDialogOptions, IDevToolsOptions } from 'vs/platform/windows/common/windows'; import { IWindowsService, INativeOpenDialogOptions, IEnterWorkspaceResult, CrashReporterStartOptions, IMessageBoxResult, MessageBoxOptions, SaveDialogOptions, OpenDialogOptions, IDevToolsOptions } from 'vs/platform/windows/common/windows';
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces';
import { IRecentlyOpened } from 'vs/platform/history/common/history'; import { IRecentlyOpened } from 'vs/platform/history/common/history';
import { ICommandAction } from 'vs/platform/actions/common/actions'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
import URI from 'vs/base/common/uri'; import URI from 'vs/base/common/uri';
import { ParsedArgs } from 'vs/platform/environment/common/environment'; import { ParsedArgs } from 'vs/platform/environment/common/environment';
@ -42,7 +42,7 @@ export interface IWindowsChannel extends IChannel {
call(command: 'moveWindowTabToNewWindow', arg: number): TPromise<void>; call(command: 'moveWindowTabToNewWindow', arg: number): TPromise<void>;
call(command: 'mergeAllWindowTabs', arg: number): TPromise<void>; call(command: 'mergeAllWindowTabs', arg: number): TPromise<void>;
call(command: 'toggleWindowTabsBar', arg: number): TPromise<void>; call(command: 'toggleWindowTabsBar', arg: number): TPromise<void>;
call(command: 'updateTouchBar', arg: [number, ICommandAction[][]]): TPromise<void>; call(command: 'updateTouchBar', arg: [number, ISerializableCommandAction[][]]): TPromise<void>;
call(command: 'focusWindow', arg: number): TPromise<void>; call(command: 'focusWindow', arg: number): TPromise<void>;
call(command: 'closeWindow', arg: number): TPromise<void>; call(command: 'closeWindow', arg: number): TPromise<void>;
call(command: 'isFocused', arg: number): TPromise<boolean>; call(command: 'isFocused', arg: number): TPromise<boolean>;
@ -345,7 +345,7 @@ export class WindowsChannelClient implements IWindowsService {
return this.channel.call('startCrashReporter', config); return this.channel.call('startCrashReporter', config);
} }
updateTouchBar(windowId: number, items: ICommandAction[][]): TPromise<void> { updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): TPromise<void> {
return this.channel.call('updateTouchBar', [windowId, items]); return this.channel.call('updateTouchBar', [windowId, items]);
} }

View file

@ -9,7 +9,7 @@ import { Event, filterEvent, mapEvent, anyEvent } from 'vs/base/common/event';
import { TPromise } from 'vs/base/common/winjs.base'; import { TPromise } from 'vs/base/common/winjs.base';
import { IWindowService, IWindowsService, INativeOpenDialogOptions, IEnterWorkspaceResult, IMessageBoxResult, IWindowConfiguration, IDevToolsOptions } from 'vs/platform/windows/common/windows'; import { IWindowService, IWindowsService, INativeOpenDialogOptions, IEnterWorkspaceResult, IMessageBoxResult, IWindowConfiguration, IDevToolsOptions } from 'vs/platform/windows/common/windows';
import { IRecentlyOpened } from 'vs/platform/history/common/history'; import { IRecentlyOpened } from 'vs/platform/history/common/history';
import { ICommandAction } from 'vs/platform/actions/common/actions'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces';
import { ParsedArgs } from 'vs/platform/environment/common/environment'; import { ParsedArgs } from 'vs/platform/environment/common/environment';
@ -137,7 +137,7 @@ export class WindowService implements IWindowService {
return this.windowsService.showOpenDialog(this.windowId, options); return this.windowsService.showOpenDialog(this.windowId, options);
} }
updateTouchBar(items: ICommandAction[][]): TPromise<void> { updateTouchBar(items: ISerializableCommandAction[][]): TPromise<void> {
return this.windowsService.updateTouchBar(this.windowId, items); return this.windowsService.updateTouchBar(this.windowId, items);
} }
} }

View file

@ -12,7 +12,7 @@ import { Event } from 'vs/base/common/event';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { IProcessEnvironment } from 'vs/base/common/platform'; import { IProcessEnvironment } from 'vs/base/common/platform';
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces';
import { ICommandAction } from 'vs/platform/actions/common/actions'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
export interface IWindowState { export interface IWindowState {
width?: number; width?: number;
@ -64,7 +64,7 @@ export interface ICodeWindow {
getRepresentedFilename(): string; getRepresentedFilename(): string;
onWindowTitleDoubleClick(): void; onWindowTitleDoubleClick(): void;
updateTouchBar(items: ICommandAction[][]): void; updateTouchBar(items: ISerializableCommandAction[][]): void;
setReady(): void; setReady(): void;
serializeWindowState(): IWindowState; serializeWindowState(): IWindowState;

View file

@ -20,7 +20,7 @@ import { ILifecycleService } from 'vs/platform/lifecycle/electron-main/lifecycle
import { IWindowsMainService, ISharedProcess } from 'vs/platform/windows/electron-main/windows'; import { IWindowsMainService, ISharedProcess } from 'vs/platform/windows/electron-main/windows';
import { IHistoryMainService, IRecentlyOpened } from 'vs/platform/history/common/history'; import { IHistoryMainService, IRecentlyOpened } from 'vs/platform/history/common/history';
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces';
import { ICommandAction } from 'vs/platform/actions/common/actions'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
import { Schemas } from 'vs/base/common/network'; import { Schemas } from 'vs/base/common/network';
import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { mnemonicButtonLabel } from 'vs/base/common/labels';
import { isWindows } from 'vs/base/common/platform'; import { isWindows } from 'vs/base/common/platform';
@ -139,7 +139,7 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable
return TPromise.as(null); return TPromise.as(null);
} }
updateTouchBar(windowId: number, items: ICommandAction[][]): TPromise<void> { updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): TPromise<void> {
this.logService.trace('windowsService#updateTouchBar', windowId); this.logService.trace('windowsService#updateTouchBar', windowId);
const codeWindow = this.windowsMainService.getWindowById(windowId); const codeWindow = this.windowsMainService.getWindowById(windowId);

View file

@ -53,7 +53,7 @@ import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, isSingleFolderW
import { IRecentlyOpened } from 'vs/platform/history/common/history'; import { IRecentlyOpened } from 'vs/platform/history/common/history';
import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration';
import { IPosition, Position as EditorPosition } from 'vs/editor/common/core/position'; import { IPosition, Position as EditorPosition } from 'vs/editor/common/core/position';
import { ICommandAction, IMenuService, MenuId, IMenu } from 'vs/platform/actions/common/actions'; import { IMenuService, MenuId, IMenu, ISerializableCommandAction } from 'vs/platform/actions/common/actions';
import { IHashService } from 'vs/workbench/services/hash/common/hashService'; import { IHashService } from 'vs/workbench/services/hash/common/hashService';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { MockContextKeyService, MockKeybindingService } from 'vs/platform/keybinding/test/common/mockKeybindingService'; import { MockContextKeyService, MockKeybindingService } from 'vs/platform/keybinding/test/common/mockKeybindingService';
@ -1059,7 +1059,7 @@ export class TestWindowService implements IWindowService {
return TPromise.wrap(void 0); return TPromise.wrap(void 0);
} }
updateTouchBar(items: ICommandAction[][]): Promise<void> { updateTouchBar(items: ISerializableCommandAction[][]): Promise<void> {
return TPromise.as(void 0); return TPromise.as(void 0);
} }
} }
@ -1266,7 +1266,7 @@ export class TestWindowsService implements IWindowsService {
return TPromise.as(void 0); return TPromise.as(void 0);
} }
updateTouchBar(windowId: number, items: ICommandAction[][]): Promise<void> { updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): Promise<void> {
return TPromise.as(void 0); return TPromise.as(void 0);
} }