electron.ts 4.1 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';
R
Robo 已提交
7
import { MessageBoxOptions, MessageBoxReturnValue, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, OpenDialogReturnValue, SaveDialogReturnValue, MouseInputEvent } from 'vs/base/parts/sandbox/common/electronTypes';
8
import { IOpenedWindow, IWindowOpenable, IOpenEmptyWindowOptions, IOpenWindowOptions } from 'vs/platform/windows/common/windows';
9
import { INativeOpenDialogOptions } from 'vs/platform/dialogs/common/dialogs';
10
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
11

12
export interface ICommonElectronService {
13

14
	readonly _serviceBrand: undefined;
15

16 17 18
	// Properties
	readonly windowId: number;

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

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

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

28 29
	readonly onOSResume: Event<unknown>;

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

35
	openWindow(options?: IOpenEmptyWindowOptions): Promise<void>;
36
	openWindow(toOpen: IWindowOpenable[], options?: IOpenWindowOptions): Promise<void>;
37

38
	toggleFullScreen(): Promise<void>;
39

40
	handleTitleDoubleClick(): Promise<void>;
41

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

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
	moveItemToTrash(fullPath: string, deleteOnFail?: boolean): Promise<boolean>;
66
	isAdmin(): Promise<boolean>;
67 68 69 70
	getTotalMem(): Promise<number>;

	// Process
	killProcess(pid: number, code: string): Promise<void>;
71

72 73 74 75 76 77 78 79 80
	// clipboard
	readClipboardText(type?: 'selection' | 'clipboard'): Promise<string>;
	writeClipboardText(text: string, type?: 'selection' | 'clipboard'): Promise<void>;
	readClipboardFindText(): Promise<string>;
	writeClipboardFindText(text: string): Promise<void>;
	writeClipboardBuffer(format: string, buffer: Uint8Array, type?: 'selection' | 'clipboard'): Promise<void>;
	readClipboardBuffer(format: string): Promise<Uint8Array>;
	hasClipboard(format: string, type?: 'selection' | 'clipboard'): Promise<boolean>;

81 82 83 84 85 86 87 88
	// macOS Touchbar
	newWindowTab(): Promise<void>;
	showPreviousWindowTab(): Promise<void>;
	showNextWindowTab(): Promise<void>;
	moveWindowTabToNewWindow(): Promise<void>;
	mergeAllWindowTabs(): Promise<void>;
	toggleWindowTabsBar(): Promise<void>;

89
	// Lifecycle
90
	notifyReady(): Promise<void>
91
	relaunch(options?: { addArgs?: string[], removeArgs?: string[] }): Promise<void>;
B
Benjamin Pasero 已提交
92
	reload(options?: { disableExtensions?: boolean }): Promise<void>;
93
	closeWindow(): Promise<void>;
94
	closeWindowById(windowId: number): Promise<void>;
B
Benjamin Pasero 已提交
95
	quit(): Promise<void>;
96
	exit(code: number): Promise<void>;
97 98 99 100

	// Development
	openDevTools(options?: OpenDevToolsOptions): Promise<void>;
	toggleDevTools(): Promise<void>;
101
	sendInputEvent(event: MouseInputEvent): Promise<void>;
102 103 104

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