mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
204 lines
4.4 KiB
TypeScript
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'); |