DefinitelyTyped/types/nw.gui/nw.gui-tests.ts
2017-08-17 14:53:41 -07:00

204 lines
4.4 KiB
TypeScript

///<reference types="node"/>
// Load native UI library
// See docs: https://github.com/rogerwang/node-webkit/wiki/Shell
import gui = require("nw.gui");
/* WINDOW */
// Get the current window
var win = gui.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
var new_win = gui.Window.get(
window.open('https://github.com')
);
// 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 = gui.Window.get();
// Create a new window and get it
var new_win = gui.Window.get(
window.open('https://github.com')
);
// png as base64string
win.capturePage(function(base64string: string) {
// do something with the base64string
}, { format: 'png', datatype: 'raw' });
// png as node buffer
win.capturePage(function(buffer: Buffer) {
// do something with the buffer
}, { format: 'png', datatype: 'buffer' });
// Open a new window.
var win = gui.Window.get(
window.open('popup.html')
);
// Release the 'win' object here after the new window is closed.
win.on('closed', function() {
win = null;
});
// Listen to main window's close event
gui.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);
});
/* MENU */
// Create an empty menu
var menu = new gui.Menu();
// Add some items
menu.append(new gui.MenuItem({ label: 'Item A' }));
menu.append(new gui.MenuItem({ label: 'Item B' }));
menu.append(new gui.MenuItem({ type: 'separator' }));
menu.append(new gui.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]);
}
var win = gui.Window.get();
var nativeMenuBar = new gui.Menu({ type: "menubar" });
nativeMenuBar.createMacBuiltin("My App");
win.menu = nativeMenuBar;
nativeMenuBar.createMacBuiltin("My App", {
hideEdit: true,
hideWindow: true
});
/* MENU ITEM */
var itemc: gui.MenuItem;
// Create a separator
itemc = new gui.MenuItem({ type: 'separator' });
// Create a normal item with label and icon
itemc = new gui.MenuItem({
type: "normal",
label: "I'm a menu item",
icon: "img/icon.png"
});
// Or you can omit the 'type' field for normal items
itemc = new gui.MenuItem({ label: 'Simple item' });
// Bind a callback to item
itemc = new gui.MenuItem({
label: "Click me",
click: function() {
console.log("I'm clicked");
},
key: "s",
modifiers: "ctrl-alt",
});
// You can have submenu!
var submenu = new gui.Menu();
submenu.append(new gui.MenuItem({ label: 'Item 1' }));
submenu.append(new gui.MenuItem({ label: 'Item 2' }));
submenu.append(new gui.MenuItem({ label: 'Item 3' }));
itemc.submenu = submenu;
// And everything can be changed at runtime
itemc.label = 'New label';
itemc.click = function() { console.log('New click callback'); };
/* APP */
// Print arguments
console.log(gui.App.argv);
// Quit current app
gui.App.quit();
// Get the name field in manifest
gui.App.manifest.name
gui.App.addOriginAccessWhitelistEntry('https://github.com/', 'app', 'myapp', true);
/* CLIPBOARD */
// We can not create a clipboard, we have to receive the system clipboard
var clipboard = gui.Clipboard.get();
// Read from clipboard
var text = clipboard.get('text');
console.log(text);
// Or write something
clipboard.set('I love node-webkit :)', 'text');
// And clear it!
clipboard.clear();
/* TRAY */
// Create a tray icon
var tray = new gui.Tray({ title: 'Tray', icon: 'img/icon.png' });
// Give it a menu
var menu = new gui.Menu();
menu.append(new gui.MenuItem({ type: 'checkbox', label: 'box1' }));
tray.menu = menu;
// Remove the tray
tray.remove();
tray = null;
/* SHELL */
// Open URL with default browser.
gui.Shell.openExternal('https://github.com/rogerwang/node-webkit');
// Open a text file with default text editor.
gui.Shell.openItem('test.txt');
// Open a file in file explorer.
gui.Shell.showItemInFolder('test.txt');