mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
352 lines
8.7 KiB
TypeScript
352 lines
8.7 KiB
TypeScript
/*
|
|
* nw.App Tests
|
|
*/
|
|
var argv = nw.App.argv;
|
|
var fullArgv = nw.App.fullArgv;
|
|
var filteredArgv = nw.App.filteredArgv;
|
|
var dataPath = nw.App.dataPath;
|
|
var manifest = nw.App.manifest;
|
|
|
|
nw.App.clearCache();
|
|
nw.App.closeAllWindows();
|
|
nw.App.crashBrowser();
|
|
nw.App.crashRenderer();
|
|
nw.App.getProxyForURL( 'https://github.com/alirdn' );
|
|
nw.App.setProxyConfig( 'http=foopy:80;ftp=foopy2' );
|
|
nw.App.quit();
|
|
nw.App.addOriginAccessWhitelistEntry( 'https://github.com/', 'chrome-extension', location.host, true );
|
|
nw.App.removeOriginAccessWhitelistEntry( 'https://github.com/', 'chrome-extension', location.host, true );
|
|
|
|
/*
|
|
* Note:
|
|
* nw.App.registerGlobalHotKey() tested in Shortcut Tests
|
|
* nw.App.unregisterGlobalHotKey() tested in Shortcut Tests
|
|
* */
|
|
|
|
nw.App.on( 'open', function ( args ) {
|
|
console.log( args );
|
|
});
|
|
|
|
nw.App.on( 'reopen', function () {
|
|
console.log( 'reopened' );
|
|
});
|
|
|
|
/**
|
|
* nw.Clipboard Tests
|
|
*/
|
|
// get the system clipboard
|
|
var clipboard = nw.Clipboard.get();
|
|
// Read from clipboard
|
|
var text = clipboard.get( 'text' );
|
|
console.log( text );
|
|
|
|
// Or write something
|
|
clipboard.set( 'I love NW.js :)', 'text' );
|
|
|
|
// And clear it!
|
|
clipboard.clear();
|
|
|
|
/**
|
|
* nw.Menu Tests
|
|
*/
|
|
// Create an empty context menu
|
|
var menu = new nw.Menu();
|
|
|
|
// Add some items
|
|
menu.append( new nw.MenuItem( { label: 'Item A' }) );
|
|
menu.append( new nw.MenuItem( { label: 'Item B' }) );
|
|
menu.append( new nw.MenuItem( { type: 'separator' }) );
|
|
menu.append( new nw.MenuItem( { label: 'Item C' }) );
|
|
|
|
// Remove one item
|
|
menu.removeAt( 1 );
|
|
|
|
// Popup as context menu
|
|
menu.popup( 10, 10 );
|
|
|
|
// Iterate menu's items
|
|
for ( var i = 0; i < menu.items.length; ++i ) {
|
|
console.log( menu.items[i] );
|
|
}
|
|
// Create an empty menubar
|
|
var menu = new nw.Menu( { type: 'menubar' });
|
|
|
|
// Create a submenu as the 2nd level menu
|
|
var submenu = new nw.Menu();
|
|
submenu.append( new nw.MenuItem( { label: 'Item A' }) );
|
|
submenu.append( new nw.MenuItem( { label: 'Item B' }) );
|
|
|
|
// Create and append the 1st level menu to the menubar
|
|
menu.append( new nw.MenuItem( {
|
|
label: 'First Menu',
|
|
submenu: submenu
|
|
}) );
|
|
|
|
// Assign it to `window.menu` to get the menu displayed
|
|
nw.Window.get().menu = menu;
|
|
|
|
/**
|
|
* nw.MenuItem Tests
|
|
*/
|
|
var item: any;
|
|
|
|
// Create a separator
|
|
item = new nw.MenuItem( { type: 'separator' });
|
|
|
|
// Create a normal item with label and icon
|
|
item = new nw.MenuItem( {
|
|
type: "normal",
|
|
label: "I'm a menu item",
|
|
icon: "img/icon.png"
|
|
});
|
|
|
|
// Or you can omit the 'type' field for normal items
|
|
item = new nw.MenuItem( { label: 'Simple item' });
|
|
|
|
// Bind a callback to item
|
|
item = new nw.MenuItem( {
|
|
label: "Click me",
|
|
click: function () {
|
|
console.log( "I'm clicked" );
|
|
},
|
|
key: "s",
|
|
modifiers: "ctrl+alt",
|
|
});
|
|
|
|
// You can have submenu!
|
|
var submenu = new nw.Menu();
|
|
submenu.append( new nw.MenuItem( { label: 'Item 1' }) );
|
|
submenu.append( new nw.MenuItem( { label: 'Item 2' }) );
|
|
submenu.append( new nw.MenuItem( { label: 'Item 3' }) );
|
|
item.submenu = submenu;
|
|
|
|
// And everything can be changed at runtime
|
|
item.label = 'New label';
|
|
item.click = function () {
|
|
console.log( 'New click callback' );
|
|
};
|
|
|
|
/**
|
|
* nw.Screen Tests
|
|
*/
|
|
//init must be called once during startup, before any function to nw.Screen can be called
|
|
nw.Screen.Init();
|
|
|
|
var screenCB = {
|
|
onDisplayBoundsChanged: function ( screen: any ) {
|
|
console.log( 'displayBoundsChanged', screen );
|
|
},
|
|
|
|
onDisplayAdded: function ( screen: any ) {
|
|
console.log( 'displayAdded', screen );
|
|
},
|
|
|
|
onDisplayRemoved: function ( screen: any ) {
|
|
console.log( 'displayRemoved', screen )
|
|
}
|
|
};
|
|
|
|
// listen to screen events
|
|
nw.Screen.on( 'displayBoundsChanged', screenCB.onDisplayBoundsChanged );
|
|
nw.Screen.on( 'displayAdded', screenCB.onDisplayAdded );
|
|
nw.Screen.on( 'displayRemoved', screenCB.onDisplayRemoved );
|
|
|
|
/**
|
|
* nw.Screen.chooseDesktopMedia() Tests
|
|
*/
|
|
nw.Screen.Init(); // you only need to call this once
|
|
nw.Screen.chooseDesktopMedia( ["window", "screen"],
|
|
function ( streamId ) {
|
|
var vid_constraint = {
|
|
mandatory: {
|
|
chromeMediaSource: 'desktop',
|
|
chromeMediaSourceId: streamId,
|
|
maxWidth: 1920,
|
|
maxHeight: 1080
|
|
},
|
|
optional: [] as any[]
|
|
};
|
|
//navigator.webkitGetUserMedia( { audio: false, video: constraint }, success_func, fallback_func );
|
|
}
|
|
);
|
|
|
|
/**
|
|
* nw.Screen.DesktopCaptureMonitor Tests
|
|
*/
|
|
var dcm = nw.Screen.DesktopCaptureMonitor;
|
|
nw.Screen.Init();
|
|
dcm.on( "added", function ( id, name, order, type ) {
|
|
//select first stream and shutdown
|
|
var constraints = {
|
|
audio: {
|
|
mandatory: {
|
|
chromeMediaSource: "system",
|
|
chromeMediaSourceId: dcm.registerStream( id )
|
|
}
|
|
},
|
|
video: {
|
|
mandatory: {
|
|
chromeMediaSource: 'desktop',
|
|
chromeMediaSourceId: dcm.registerStream( id )
|
|
}
|
|
}
|
|
};
|
|
|
|
// TODO: call getUserMedia with contraints
|
|
|
|
dcm.stop();
|
|
});
|
|
|
|
dcm.on( "removed", function ( id ) {
|
|
});
|
|
dcm.on( "orderchanged", function ( id, new_order, old_order ) {
|
|
});
|
|
dcm.on( "namechanged", function ( id, name ) {
|
|
});
|
|
dcm.on( "thumbnailchanged", function ( id, thumbnail ) {
|
|
});
|
|
dcm.start( true, true );
|
|
|
|
/**
|
|
* nw.Shell Tests
|
|
*/
|
|
// Open URL with default browser.
|
|
nw.Shell.openExternal( 'https://github.com/nwjs/nw.js' );
|
|
|
|
// Open a text file with default text editor.
|
|
nw.Shell.openItem( 'test.txt' );
|
|
|
|
// Show a file in parent folder with file manager.
|
|
nw.Shell.showItemInFolder( 'test.txt' );
|
|
|
|
/**
|
|
* nw.Shortcut Tests
|
|
*/
|
|
var option = {
|
|
key: "Ctrl+Shift+A",
|
|
active: function () {
|
|
console.log( "Global desktop keyboard shortcut: " + this.key + " active." );
|
|
},
|
|
failed: function ( msg: any ) {
|
|
// :(, fail to register the |key| or couldn't parse the |key|.
|
|
console.log( msg );
|
|
}
|
|
};
|
|
|
|
// Create a shortcut with |option|.
|
|
var shortcut = new nw.Shortcut( option );
|
|
|
|
// Register global desktop shortcut, which can work without focus.
|
|
nw.App.registerGlobalHotKey( shortcut );
|
|
|
|
// If register |shortcut| successfully and user struck "Ctrl+Shift+A", |shortcut|
|
|
// will get an "active" event.
|
|
|
|
// You can also add listener to shortcut's active and failed event.
|
|
shortcut.on( 'active', function () {
|
|
console.log( "Global desktop keyboard shortcut: " + this.key + " active." );
|
|
});
|
|
|
|
shortcut.on( 'failed', function ( msg: any ) {
|
|
console.log( msg );
|
|
});
|
|
|
|
// Unregister the global desktop shortcut.
|
|
nw.App.unregisterGlobalHotKey( shortcut );
|
|
|
|
/**
|
|
* nw.Tray Tests
|
|
*/
|
|
// Create a tray icon
|
|
var tray = new nw.Tray( { title: 'Tray', icon: 'img/icon.png' });
|
|
|
|
// Give it a menu
|
|
var menu = new nw.Menu();
|
|
menu.append( new nw.MenuItem( { type: 'checkbox', label: 'box1' }) );
|
|
tray.menu = menu;
|
|
|
|
// Remove the tray
|
|
tray.remove();
|
|
tray = null;
|
|
|
|
/**
|
|
* nw.Window Tests
|
|
*/
|
|
// Get the current window
|
|
var win = nw.Window.get();
|
|
|
|
// Listen to the minimize event
|
|
win.on( 'minimize', function () {
|
|
console.log( 'Window is minimized' );
|
|
});
|
|
|
|
// Minimize the window
|
|
win.minimize();
|
|
|
|
// Unlisten the minimize event
|
|
win.removeAllListeners( 'minimize' );
|
|
|
|
// Create a new window and get it
|
|
nw.Window.open( 'https://github.com', {}, function ( new_win ) {
|
|
// And listen to new window's focus event
|
|
new_win.on( 'focus', function () {
|
|
console.log( 'New window is focused' );
|
|
});
|
|
});
|
|
|
|
// Get the current window
|
|
var win = nw.Window.get();
|
|
|
|
// Create a new window and get it
|
|
nw.Window.open( 'https://github.com/nwjs/nw.js', {}, function ( new_win ) {
|
|
// do something with the newly created window
|
|
});
|
|
|
|
win.on( 'close', function () {
|
|
this.hide(); // Pretend to be closed already
|
|
console.log( "We're closing..." );
|
|
this.close( true ); // then close it forcely
|
|
});
|
|
|
|
win.close();
|
|
|
|
// png as base64string
|
|
win.capturePage( function ( base64string ) {
|
|
// do something with the base64string
|
|
}, { format: 'png', datatype: 'raw' });
|
|
|
|
// png as node buffer
|
|
win.capturePage( function ( buffer ) {
|
|
// do something with the buffer
|
|
}, { format: 'png', datatype: 'buffer' });
|
|
|
|
// Open a new window.
|
|
nw.Window.open( 'popup.html', {}, function ( win ) {
|
|
|
|
// Release the 'win' object here after the new window is closed.
|
|
win.on( 'closed', function () {
|
|
win = null;
|
|
});
|
|
|
|
// Listen to main window's close event
|
|
nw.Window.get().on( 'close', function () {
|
|
// Hide the window to give user the feeling of closing immediately
|
|
this.hide();
|
|
|
|
// If the new window is still open then close it.
|
|
if ( win != null )
|
|
win.close( true );
|
|
|
|
// After closing the new window, close the main window.
|
|
this.close( true );
|
|
});
|
|
|
|
});
|
|
|
|
nw.Window.get().on( 'new-win-policy', function ( frame, url, policy ) {
|
|
// do not open the window
|
|
policy.ignore();
|
|
// and open it in external browser
|
|
nw.Shell.openExternal( url );
|
|
});
|