diff options
Diffstat (limited to 'main.js')
-rw-r--r-- | main.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/main.js b/main.js new file mode 100644 index 000000000000..e69a6f2842d6 --- /dev/null +++ b/main.js @@ -0,0 +1,73 @@ +const {app, BrowserWindow, ipcMain} = require('electron'); +const path = require('path'); + +function createWindow () { + const mainWindow = new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'prompt.js') + } + }); + + mainWindow.loadFile('index.html'); + + // Electon does not support prompt()! + // Using prompt from https://github.com/konsumer/electron-prompt + var promptResponse; + ipcMain.on('prompt', function(eventRet, arg) { + promptResponse = null; + var promptWindow = new BrowserWindow({ + width: 300, + height: 100, + show: false, + resizable: false, + movable: false, + alwaysOnTop: true, + frame: false, + webPreferences: { + nodeIntegration: true + } + }); + arg.val = arg.val || ''; + const promptHtml = + '<script>\ + function ok() {\ + require(\'electron\').ipcRenderer.send(\'prompt-response\', document.getElementById(\'val\').value);\ + window.close();\ + }\ + </script>\ + <label for="val">' + arg.title + '</label>\ + <input onkeypress="if (window.event.which == 10 || window.event.which == 13) {ok();}" id="val" value="' + arg.val + '" autofocus />\ + <button onclick="ok();">Ok</button>\ + <button onclick="window.close()">Cancel</button>\ + <style>body {font-family: sans-serif;} button {float:right; margin-left: 10px;} label,input {margin-bottom: 10px; width: 100%; display:block;}</style>\ + <script>document.getElementById("val").select();</script>'; + promptWindow.loadURL('data:text/html,' + promptHtml); + promptWindow.show(); + promptWindow.on('closed', function() { + eventRet.returnValue = promptResponse; + promptWindow = null; + }); + }) + ipcMain.on('prompt-response', function(event, arg) { + if (arg === '') arg = null; + promptResponse = arg + }) +} + +app.whenReady().then(() => { + createWindow(); + app.on('activate', function() { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (BrowserWindow.getAllWindows().length === 0) createWindow(); + }) +}) + +// Quit when all windows are closed, except on macOS. There, it's common +// for applications and their menu bar to stay active until the user quits +// explicitly with Cmd + Q. +app.on('window-all-closed', function() { + if (process.platform !== 'darwin') app.quit(); +}); |