electron.ts 3.7 KB
Newer Older
1 2 3 4 5
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

6
import { Event } from 'vs/base/common/event';
7
import { MessageBoxOptions, MessageBoxReturnValue, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, OpenDialogReturnValue, SaveDialogReturnValue, CrashReporterStartOptions } from 'electron';
8
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
9
import { INativeOpenDialogOptions, IWindowOpenable, IOpenInWindowOptions, IOpenedWindow, IOpenEmptyWindowOptions } from 'vs/platform/windows/common/windows';
10
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
11 12
import { IRecentlyOpened, IRecent } from 'vs/platform/history/common/history';
import { URI } from 'vs/base/common/uri';
13 14 15 16 17 18 19

export const IElectronService = createDecorator<IElectronService>('electronService');

export interface IElectronService {

	_serviceBrand: undefined;

20 21 22 23 24 25 26 27 28
	// Events
	readonly onWindowOpen: Event<number>;

	readonly onWindowMaximize: Event<number>;
	readonly onWindowUnmaximize: Event<number>;

	readonly onWindowFocus: Event<number>;
	readonly onWindowBlur: Event<number>;

29
	// Window
30 31
	getWindows(): Promise<IOpenedWindow[]>;
	getWindowCount(): Promise<number>;
32
	getActiveWindowId(): Promise<number | undefined>;
33

34
	openEmptyWindow(options?: IOpenEmptyWindowOptions): Promise<void>;
35
	openInWindow(toOpen: IWindowOpenable[], options?: IOpenInWindowOptions): Promise<void>;
36

37
	toggleFullScreen(): Promise<void>;
38

39
	handleTitleDoubleClick(): Promise<void>;
40

41 42 43 44 45
	isMaximized(): Promise<boolean>;
	maximizeWindow(): Promise<void>;
	unmaximizeWindow(): Promise<void>;
	minimizeWindow(): Promise<void>;

46
	isWindowFocused(): Promise<boolean>;
47
	focusWindow(options?: { windowId?: number }): Promise<void>;
48

49 50
	// Dialogs
	showMessageBox(options: MessageBoxOptions): Promise<MessageBoxReturnValue>;
51 52
	showSaveDialog(options: SaveDialogOptions): Promise<SaveDialogReturnValue>;
	showOpenDialog(options: OpenDialogOptions): Promise<OpenDialogReturnValue>;
53

54 55 56 57 58
	pickFileFolderAndOpen(options: INativeOpenDialogOptions): Promise<void>;
	pickFileAndOpen(options: INativeOpenDialogOptions): Promise<void>;
	pickFolderAndOpen(options: INativeOpenDialogOptions): Promise<void>;
	pickWorkspaceAndOpen(options: INativeOpenDialogOptions): Promise<void>;

59 60
	// OS
	showItemInFolder(path: string): Promise<void>;
61 62
	setRepresentedFilename(path: string): Promise<void>;
	setDocumentEdited(edited: boolean): Promise<void>;
63
	openExternal(url: string): Promise<boolean>;
64
	updateTouchBar(items: ISerializableCommandAction[][]): Promise<void>;
65

66 67 68 69 70 71 72 73
	// macOS Touchbar
	newWindowTab(): Promise<void>;
	showPreviousWindowTab(): Promise<void>;
	showNextWindowTab(): Promise<void>;
	moveWindowTabToNewWindow(): Promise<void>;
	mergeAllWindowTabs(): Promise<void>;
	toggleWindowTabsBar(): Promise<void>;

74
	// Lifecycle
75
	relaunch(options?: { addArgs?: string[], removeArgs?: string[] }): Promise<void>;
76
	reload(): Promise<void>;
77
	closeWorkpsace(): Promise<void>;
78
	closeWindow(): Promise<void>;
B
Benjamin Pasero 已提交
79
	quit(): Promise<void>;
80 81 82 83

	// Development
	openDevTools(options?: OpenDevToolsOptions): Promise<void>;
	toggleDevTools(): Promise<void>;
84
	startCrashReporter(options: CrashReporterStartOptions): Promise<void>;
85 86 87

	// Connectivity
	resolveProxy(url: string): Promise<string | undefined>;
88 89 90 91 92 93 94

	// Workspaces History
	readonly onRecentlyOpenedChange: Event<void>;
	getRecentlyOpened(): Promise<IRecentlyOpened>;
	addRecentlyOpened(recents: IRecent[]): Promise<void>;
	removeFromRecentlyOpened(paths: URI[]): Promise<void>;
	clearRecentlyOpened(): Promise<void>;
95
}