const { app, BrowserWindow, Menu, dialog, ipcMain, fs } = require('electron'); function createWindow () { const win = new BrowserWindow({ width: 950, height: 580, icon: "./appicons/icons/png/1024x1024.png", webPreferences: { nodeIntegration: true, nativeWindowOpen: true, enableRemoteModule: true, } }) const template = [ { label: 'File', submenu: [ { label: 'Open', accelerator: 'CmdOrCtrl+O', click () { dialog.showOpenDialog(win, { title : "Load configuration file", defaultPath : "./", //buttonLabel : "Custom button", filters :[ {name: 'Config file type', extensions: ['cfg']}, ], properties: ['openFile']} ).then(result => { console.log(result.canceled); console.log(result.filePaths); if (!result.canceled) { var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('openFile',result.filePaths); } }).catch(err => { console.log(err); }) } }, { label: 'Select Folder...', accelerator: 'CmdOrCtrl+F', click () { dialog.showOpenDialog(win, { title: "Select folder", defaultPath : "./", properties:["openDirectory"]} ).then(result => { console.log(result.filePaths) var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('selectFolder',result.filePaths); }).catch(err => { console.log(err); }) } }, { label: 'Save', accelerator: 'CmdOrCtrl+S', click () { var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('saveFile',''); } }, { label: 'Save As...', accelerator: 'CmdOrCtrl+Shift+S', click () { dialog.showSaveDialog(win, { title : "Save configuration file", defaultPath : "./", filters :[ {name: 'Config file type', extensions: ['cfg']}, {name: 'All Files', extensions: ['*']} ], properties: ['showOverwriteConfirmation']} ).then(result => { var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('saveFile',result.filePath); }).catch(err => { console.log(err); }) } }, { label: 'Print', accelerator: 'CmdOrCtrl+P', click () { var focusedWindow = BrowserWindow.getFocusedWindow(); const options = {}; focusedWindow.webContents.print(options, (success, errorType) => { if (!success) console.log(errorType) }) } }, { role: 'quit' } ] }, { role: 'editMenu' }, { label: 'Plot', submenu: [ { label: 'Plot Profiles', //accelerator: 'CmdOrCtrl+P P', click () { dialog.showOpenDialog(win, { title : "Select rge files", filters :[ {name: 'Profile file type', extensions: ['rge']}, {name: 'All Files', extensions: ['*']} ], properties: ['openFile', 'multiSelections']} ).then(result => { console.log(result.canceled); console.log(result.filePaths); if (!result.canceled) { var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('plotProf',result.filePaths); } }).catch(err => { console.log(err); }) } }, { label: 'Plot Fractions', //accelerator: 'CmdOrCtrl+P F', click () { dialog.showOpenDialog(win, { title : "Select sequence file", filters :[ {name: 'Sequence file type', extensions: ['dat']}, {name: 'All Files', extensions: ['*']} ], properties: ['openFile']} ).then(result => { console.log(result.canceled); console.log(result.filePaths); if (!result.canceled) { var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('plotFrac',result.filePaths); } }).catch(err => { console.log(err); }) } }, { label: 'Plot Mean', //accelerator: 'CmdOrCtrl+P M', click () { dialog.showOpenDialog(win, { title : "Select sequence file", filters :[ {name: 'Sequence file type', extensions: ['dat']}, {name: 'All Files', extensions: ['*']} ], properties: ['openFile']} ).then(result => { console.log(result.canceled); console.log(result.filePaths); if (!result.canceled) { var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('plotMean',result.filePaths); } }).catch(err => { console.log(err); }) } } ] }, { role: 'viewMenu' }, { role: 'windowMenu' }, { role: 'help', submenu: [ { role: 'about' }, { label: 'Learn More', click () { require('electron').shell.openExternal('http://electron.atom.io') } } ] } ] const menu = Menu.buildFromTemplate(template) Menu.setApplicationMenu(menu) win.loadFile('TrimSP.html'); // Comment the following line to start without Dev // win.openDevTools(); } app.whenReady().then(createWindow) global.path = app.getAppPath(); //console.log("From main: ",global.path); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) // Reply to calls from browser button ipcMain.on('browseFolder', (event) => { dialog.showOpenDialog({ title: "Select folder", defaultPath : "./", properties:["openDirectory"]} ).then(result => { console.log(result.filePaths) var focusedWindow = BrowserWindow.getFocusedWindow(); focusedWindow.webContents.send('browseFolder',result.filePaths); }).catch(err => { console.log(err); }) });