DefinitelyTyped/types/nw.js/nw.js-tests.ts

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 );
});