windows.ts 4.6 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';
11
import { ITelemetryData } from 'vs/platform/telemetry/common/telemetry';
J
Joao Moreno 已提交
12 13 14 15 16 17 18

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

export interface IWindowsService {

	_serviceBrand: any;

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

22 23 24
	openFileFolderPicker(windowId: number, forceNewWindow?: boolean, data?: ITelemetryData): TPromise<void>;
	openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string, data?: ITelemetryData): TPromise<void>;
	openFolderPicker(windowId: number, forceNewWindow?: boolean, data?: ITelemetryData): TPromise<void>;
25
	reloadWindow(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
26
	openDevTools(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
27
	toggleDevTools(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
28
	closeFolder(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
29
	toggleFullScreen(windowId: number): TPromise<void>;
30
	setRepresentedFilename(windowId: number, fileName: string): TPromise<void>;
31
	addToRecentlyOpen(paths: { path: string, isFile?: boolean }[]): TPromise<void>;
B
Benjamin Pasero 已提交
32
	removeFromRecentlyOpen(paths: string[]): TPromise<void>;
C
22768  
Cristian 已提交
33
	clearRecentPathsList(): TPromise<void>;
J
Joao Moreno 已提交
34
	getRecentlyOpen(windowId: number): TPromise<{ files: string[]; folders: string[]; }>;
J
Joao Moreno 已提交
35
	focusWindow(windowId: number): TPromise<void>;
36
	isFocused(windowId: number): TPromise<boolean>;
37 38 39
	isMaximized(windowId: number): TPromise<boolean>;
	maximizeWindow(windowId: number): TPromise<void>;
	unmaximizeWindow(windowId: number): TPromise<void>;
J
Joao Moreno 已提交
40
	setDocumentEdited(windowId: number, flag: boolean): TPromise<void>;
41
	quit(): TPromise<void>;
J
Johannes Rieken 已提交
42
	relaunch(options: { addArgs?: string[], removeArgs?: string[] }): TPromise<void>;
43

44
	// Shared process
45
	whenSharedProcessReady(): TPromise<void>;
46 47
	toggleSharedProcess(): TPromise<void>;

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

59
	// This needs to be handled from browser process to prevent
J
Joao Moreno 已提交
60
	// foreground ordering issues on Windows
61
	openExternal(url: string): TPromise<boolean>;
62 63 64

	// TODO: this is a bit backwards
	startCrashReporter(config: Electron.CrashReporterStartOptions): TPromise<void>;
J
Joao Moreno 已提交
65 66 67 68 69 70 71 72
}

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

export interface IWindowService {

	_serviceBrand: any;

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

94 95
export type MenuBarVisibility = 'default' | 'visible' | 'toggle' | 'hidden';

96
export interface IWindowSettings {
97 98
	openFilesInNewWindow: 'on' | 'off' | 'default';
	openFoldersInNewWindow: 'on' | 'off' | 'default';
99 100 101 102
	reopenFolders: 'all' | 'one' | 'none';
	restoreFullscreen: boolean;
	zoomLevel: number;
	titleBarStyle: 'native' | 'custom';
103
	autoDetectHighContrast: boolean;
104
	menuBarVisibility: MenuBarVisibility;
105
	newWindowDimensions: 'default' | 'inherit' | 'maximized' | 'fullscreen';
106
	nativeTabs: boolean;
J
Johannes Rieken 已提交
107
}