const { app, BrowserWindow, ipcMain } = require('electron') const path = require('path') let win = null; let data = null; function createWindow () { win = new BrowserWindow({ width: 1220, height: 900, webPreferences: { //preload: path.join(__dirname, 'preload-main.js'), preload: require.resolve('./preload-main.js'), nodeIntegration: false, contextIsolation: false, enableRemoteModule: false, //https://stackoverflow.com/questions/53390798/opening-new-window-electron/53393655 https://github.com/electron/remote } }) //open dev tools win.webContents.openDevTools({ mode : 'undocked', activate: true, }) win.loadFile('src/index.html') data = new BrowserWindow({ height: 900, width: 600, parent: win, webPreferences: { preload: require.resolve('./preload-data.js'), nodeIntegration: false, } }) //open dev tools data.webContents.openDevTools({ mode : 'undocked', activate: true, }) data.loadFile('src/data-module.html') data.hide() // Emitted when the window is closed. win.on('closed', function () { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. win = null; data = null; }) /* data.on('closed', function () { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. }) */ // https://stackoverflow.com/questions/44258831/only-hide-the-window-when-closing-it-electron data.on('close', function (evt) { evt.preventDefault(); data.hide() }); } app.whenReady().then(() => { createWindow() app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) }) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } }) // IPC HANDLER ipcMain.on('show-data-window', (event, arg) => { data.show() }); ipcMain.on('request-update-tnc-state', (event, arg) => { win.webContents.send('action-update-tnc-state', arg); data.webContents.send('action-update-tnc-state', arg); }); ipcMain.on('request-update-daemon-state', (event, arg) => { win.webContents.send('action-update-daemon-state', arg); }); ipcMain.on('request-update-daemon-connection', (event, arg) => { win.webContents.send('action-update-daemon-connection', arg); }); ipcMain.on('run-tnc-command', (event, arg) => { win.webContents.send('run-tnc-command', arg); /* if (arg.command == 'saveMyCall'){ sock.saveMyCall(arg.callsign) } if (arg.command == 'saveMyGrid'){ sock.saveMyGrid(arg.grid) } if (arg.command == 'ping'){ sock.sendPing(arg.dxcallsign) } */ }); /* ipcMain.on('run-daemon-command', (event, arg) => { win.webContents.send('run-daemon-command', arg); */ /* if (arg.command == 'startTNC'){ daemon.startTNC(arg.rx_audio, arg.tx_audio, arg.deviceid, arg.deviceport, arg.ptt) } if (arg.command == 'stopTNC'){ daemon.stopTNC() } }); */ //setInterval(sock.getTncState, 500) //setInterval(daemon.getDaemonState, 500) /* setInterval(function(){ sock.getTncState(); }, 1000); */ /* setInterval(function(){ daemon.getDaemonState(); }, 1000); */