electron.ts 2.8 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 { MessageBoxOptions, MessageBoxReturnValue, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, OpenDialogReturnValue, SaveDialogReturnValue, CrashReporterStartOptions } from 'electron';
7
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
8
import { INativeOpenDialogOptions } from 'vs/platform/windows/common/windows';
9
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
10 11 12 13 14 15 16

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

export interface IElectronService {

	_serviceBrand: undefined;

17 18
	// Window
	windowCount(): Promise<number>;
19
	openEmptyWindow(options?: { reuse?: boolean, remoteAuthority?: string }): Promise<void>;
20
	toggleFullScreen(): Promise<void>;
21
	handleTitleDoubleClick(): Promise<void>;
22

23 24 25 26 27
	isMaximized(): Promise<boolean>;
	maximizeWindow(): Promise<void>;
	unmaximizeWindow(): Promise<void>;
	minimizeWindow(): Promise<void>;

28 29
	// Dialogs
	showMessageBox(options: MessageBoxOptions): Promise<MessageBoxReturnValue>;
30 31
	showSaveDialog(options: SaveDialogOptions): Promise<SaveDialogReturnValue>;
	showOpenDialog(options: OpenDialogOptions): Promise<OpenDialogReturnValue>;
32

33 34 35 36 37
	pickFileFolderAndOpen(options: INativeOpenDialogOptions): Promise<void>;
	pickFileAndOpen(options: INativeOpenDialogOptions): Promise<void>;
	pickFolderAndOpen(options: INativeOpenDialogOptions): Promise<void>;
	pickWorkspaceAndOpen(options: INativeOpenDialogOptions): Promise<void>;

38 39
	// OS
	showItemInFolder(path: string): Promise<void>;
40 41
	setRepresentedFilename(path: string): Promise<void>;
	setDocumentEdited(edited: boolean): Promise<void>;
42
	openExternal(url: string): Promise<boolean>;
43
	updateTouchBar(items: ISerializableCommandAction[][]): Promise<void>;
44

45 46 47 48 49 50 51 52
	// macOS Touchbar
	newWindowTab(): Promise<void>;
	showPreviousWindowTab(): Promise<void>;
	showNextWindowTab(): Promise<void>;
	moveWindowTabToNewWindow(): Promise<void>;
	mergeAllWindowTabs(): Promise<void>;
	toggleWindowTabsBar(): Promise<void>;

53
	// Lifecycle
54
	relaunch(options?: { addArgs?: string[], removeArgs?: string[] }): Promise<void>;
55
	reload(): Promise<void>;
56
	closeWorkpsace(): Promise<void>;
57
	closeWindow(): Promise<void>;
B
Benjamin Pasero 已提交
58
	quit(): Promise<void>;
59 60 61 62

	// Development
	openDevTools(options?: OpenDevToolsOptions): Promise<void>;
	toggleDevTools(): Promise<void>;
63
	startCrashReporter(options: CrashReporterStartOptions): Promise<void>;
64 65 66

	// Connectivity
	resolveProxy(url: string): Promise<string | undefined>;
67
}