windows.ts 4.1 KB
Newer Older
J
Joao Moreno 已提交
1 2 3 4 5 6 7 8 9
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

'use strict';

import { TPromise } from 'vs/base/common/winjs.base';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
J
Joao Moreno 已提交
10
import Event from 'vs/base/common/event';
J
Joao Moreno 已提交
11 12 13 14 15 16 17

export const IWindowsService = createDecorator<IWindowsService>('windowsService');

export interface IWindowsService {

	_serviceBrand: any;

J
Joao Moreno 已提交
18
	onWindowOpen: Event<number>;
J
Joao Moreno 已提交
19 20
	onWindowFocus: Event<number>;

J
Joao Moreno 已提交
21
	openFileFolderPicker(windowId: number, forceNewWindow?: boolean): TPromise<void>;
22
	openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string): TPromise<void>;
J
Joao Moreno 已提交
23
	openFolderPicker(windowId: number, forceNewWindow?: boolean): TPromise<void>;
24
	reloadWindow(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
25
	openDevTools(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
26
	toggleDevTools(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
27
	// TODO@joao: rename, shouldn't this be closeWindow?
28
	// @ben: no, this actually leaves the window open but changes it to have no workspace opened
J
Joao Moreno 已提交
29
	closeFolder(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
30
	toggleFullScreen(windowId: number): TPromise<void>;
31
	setRepresentedFilename(windowId: number, fileName: string): TPromise<void>;
32
	addToRecentlyOpen(paths: { path: string, isFile?: boolean }[]): TPromise<void>;
B
Benjamin Pasero 已提交
33
	removeFromRecentlyOpen(paths: string[]): TPromise<void>;
J
Joao Moreno 已提交
34
	getRecentlyOpen(windowId: number): TPromise<{ files: string[]; folders: string[]; }>;
J
Joao Moreno 已提交
35
	focusWindow(windowId: number): TPromise<void>;
36 37 38
	isMaximized(windowId: number): TPromise<boolean>;
	maximizeWindow(windowId: number): TPromise<void>;
	unmaximizeWindow(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
39
	setDocumentEdited(windowId: number, flag: boolean): TPromise<void>;
40
	quit(): TPromise<void>;
41

J
Joao Moreno 已提交
42
	// Global methods
43
	openWindow(paths: string[], options?: { forceNewWindow?: boolean, forceReuseWindow?: boolean }): TPromise<void>;
J
Joao Moreno 已提交
44
	openNewWindow(): TPromise<void>;
J
Joao Moreno 已提交
45
	showWindow(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
46
	getWindows(): TPromise<{ id: number; path: string; title: string; }[]>;
47
	getWindowCount(): TPromise<number>;
J
Joao Moreno 已提交
48
	log(severity: string, ...messages: string[]): TPromise<void>;
49 50
	// TODO@joao: what?
	closeExtensionHostWindow(extensionDevelopmentPath: string): TPromise<void>;
J
Joao Moreno 已提交
51
	showItemInFolder(path: string): TPromise<void>;
J
Joao Moreno 已提交
52

53
	// This needs to be handled from browser process to prevent
J
Joao Moreno 已提交
54 55
	// foreground ordering issues on Windows
	openExternal(url: string): TPromise<void>;
56 57 58

	// TODO: this is a bit backwards
	startCrashReporter(config: Electron.CrashReporterStartOptions): TPromise<void>;
J
Joao Moreno 已提交
59 60 61 62 63 64 65 66
}

export const IWindowService = createDecorator<IWindowService>('windowService');

export interface IWindowService {

	_serviceBrand: any;

J
Joao Moreno 已提交
67
	getCurrentWindowId(): number;
J
Joao Moreno 已提交
68
	openFileFolderPicker(forceNewWindow?: boolean): TPromise<void>;
69
	openFilePicker(forceNewWindow?: boolean, path?: string): TPromise<void>;
J
Joao Moreno 已提交
70
	openFolderPicker(forceNewWindow?: boolean): TPromise<void>;
71
	reloadWindow(): TPromise<void>;
J
Joao Moreno 已提交
72
	openDevTools(): TPromise<void>;
J
Joao Moreno 已提交
73
	toggleDevTools(): TPromise<void>;
J
Joao Moreno 已提交
74
	closeFolder(): TPromise<void>;
J
Joao Moreno 已提交
75
	toggleFullScreen(): TPromise<void>;
76
	setRepresentedFilename(fileName: string): TPromise<void>;
77
	addToRecentlyOpen(paths: { path: string, isFile?: boolean }[]): TPromise<void>;
B
Benjamin Pasero 已提交
78
	removeFromRecentlyOpen(paths: string[]): TPromise<void>;
J
Joao Moreno 已提交
79
	getRecentlyOpen(): TPromise<{ files: string[]; folders: string[]; }>;
J
Joao Moreno 已提交
80
	focusWindow(): TPromise<void>;
J
Joao Moreno 已提交
81
	setDocumentEdited(flag: boolean): TPromise<void>;
82 83 84
	isMaximized(): TPromise<boolean>;
	maximizeWindow(): TPromise<void>;
	unmaximizeWindow(): TPromise<void>;
85 86 87
}

export interface IWindowSettings {
88 89
	openFilesInNewWindow: 'on' | 'off' | 'default';
	openFoldersInNewWindow: 'on' | 'off' | 'default';
90 91 92 93
	reopenFolders: 'all' | 'one' | 'none';
	restoreFullscreen: boolean;
	zoomLevel: number;
	titleBarStyle: 'native' | 'custom';
94
	autoDetectHighContrast: boolean;
95
	menuBarVisibility: 'visible' | 'toggle' | 'hidden';
96
}