DefinitelyTyped/node-webkit/node-webkit.d.ts
2014-08-08 19:10:43 +02:00

222 lines
6.7 KiB
TypeScript

// Type definitions for node-webkit
// Project: https://github.com/rogerwang/node-webkit
// Definitions by: Pedro Casaubon <https://github.com/xperiments>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module nw.gui {
interface IEventEmitter {
addListener(event: string, listener: Function): EventEmitter;
on(event: string, listener: Function): EventEmitter;
once(event: string, listener: Function): EventEmitter;
removeListener(event: string, listener: Function): EventEmitter;
removeAllListeners(event?: string): EventEmitter;
setMaxListeners(n: number): void;
listeners(event: string): Function[];
emit(event: string, ...args: any[]): boolean;
}
class EventEmitter implements IEventEmitter {
addListener(event: string, listener: Function): EventEmitter;
on(event: string, listener: Function): EventEmitter;
once(event: string, listener: Function): EventEmitter;
removeListener(event: string, listener: Function): EventEmitter;
removeAllListeners(event?: string): EventEmitter;
setMaxListeners(n: number): void;
listeners(event: string): Function[];
emit(event: string, ...args: any[]): boolean;
}
export interface MenuConfig {
type?: string;
}
export interface HideMenusOptions {
hideEdit: boolean;
hideWindow: boolean;
}
export interface MenuItemConfig {
label?: string;
click?: Function;
type?: string;
submenu?: Menu;
icon?: string;
tooltip?: string;
checked?: boolean;
enabled?: boolean;
key?: string;
modifiers?: string;
}
export class MenuItem extends EventEmitter implements MenuItemConfig {
constructor(config: MenuItemConfig);
label: string;
click: Function;
type: string;
submenu: Menu;
icon: string;
tooltip: string;
checked: boolean;
enabled: boolean;
key: string;
modifiers: string;
}
export class Menu {
constructor(config?: MenuConfig);
items: MenuItem[];
append(item: MenuItem): void;
remove(item: MenuItem): void;
insert(item: MenuItem, atPosition: number): void;
removeAt(index: number): void;
popup(x: number, y: number): void;
// since v0.10.0-rc1
createMacBuiltin(appname: string, options?: HideMenusOptions): void;
}
export interface ShortcutOption {
key: string;
active: Function;
failed: Function;
}
export class Shortcut extends EventEmitter {
constructor(option: ShortcutOption);
key: string;
active: Function;
failed: Function;
}
export interface WindowManifestOptions {
title?: string;
icon?: string;
toolbar?: boolean;
frame?: boolean;
width?: number;
height?: number;
position?: string;
min_width?: number;
min_height?: number;
max_width?: number;
max_height?: number;
}
export class Window extends EventEmitter {
static get(windowObject?: any): Window;
static open(url: string, options?: WindowManifestOptions): Window;
x: number;
y: number;
width: number;
height: number;
title: string;
menu: Menu;
isFullScreen: boolean;
isKioskMode: boolean;
zoomLevel: number;
moveTo(x: number, y: number): void;
moveBy(x: number, y: number): void;
resizeTo(width: number, height: number): void;
resizeBy(width: number, height: number): void;
focus(): void;
blur(): void;
show(): void;
hide(): void;
close(force?: boolean): void;
reload(): void;
reloadIgnoringCache(): void;
maximize(): void;
unmaximize(): void;
minimize(): void;
restore(): void;
enterFullscreen(): void;
leaveFullscreen(): void;
toggleFullscreen(): void;
enterKioskMode(): void;
leaveKioskMode(): void;
toggleKioskMode(): void;
showDevTools(id?: string, headless?: boolean): void;
showDevTools(id: HTMLIFrameElement, headless?: boolean): void;
closeDevTools(): void;
isDevToolsOpen(): boolean;
setMaximumSize(width: number, height: number): void;
setMinimumSize(width: number, height: number): void;
setResizable(resizable: boolean): void;
setAlwaysOnTop(top: boolean): void;
setPosition(position: string): void;
setShowInTaskbar(show: boolean): void;
requestAttention(attention: boolean): void;
requestAttention(attention: number): void;
capturePage(callback: Function, imageformat?: string): void;
capturePage(callback: Function, config_object: { format: string; datatype: string }): void;
setProgressBar(progress: number): void;
setBadgeLabel(label: string): void;
eval(frame: HTMLIFrameElement, script: string): void;
}
export interface App {
argv: any;
fullArgv: any;
dataPath: string;
manifest: any;
clearCache(): void;
closeAllWindows(): void;
crashBrowser(): void;
crashRenderer(): void;
getProxyForURL(url: string): void;
quit(): void;
setCrashDumpDir(dir: string): void;
addOriginAccessWhitelistEntry(
sourceOrigin: string
, destinationProtocol: string
, destinationHost: string
, allowDestinationSubdomains: boolean
): void;
removeOriginAccessWhitelistEntry(
sourceOrigin: string
, destinationProtocol: string
, destinationHost: string
, allowDestinationSubdomains: boolean
): void;
registerGlobalHotKey(shortcut: Shortcut): void;
unregisterGlobalHotKey(shortcut: Shortcut): void;
}
export class Clipboard {
static get(): Clipboard;
get(type?: string): string;
set(data: string, type?: string): void;
clear(): void;
}
export interface TrayOption {
title?: string;
tooltip?: string;
icon?: string;
alticon?: string;
menu?: Menu;
}
export class Tray implements TrayOption {
constructor(option: TrayOption);
title: string;
tooltip: string;
icon: string;
alticon: string;
menu: Menu;
remove(): void;
}
interface Shell {
openExternal(uri: string): void;
openItem(file_path: string): void;
showItemInFolder(file_path: string): void;
}
export var App: App;
export var Shell: Shell;
}