Files
TRIMSP/main.js

271 lines
6.9 KiB
JavaScript

const { app, BrowserWindow, Menu, dialog, ipcMain, fs } = require('electron');
function createWindow () {
const win = new BrowserWindow({
width: 950,
height: 580,
icon: "/usr/lib/TrimSP/resources/app/icon.png",
webPreferences: {
contextIsolation: false,
nodeIntegration: true,
nativeWindowOpen: true,
enableRemoteModule: true,
}
})
let template = [
{
label: 'File',
submenu: [
{
label: 'Open',
id : 'openItem',
accelerator: 'CmdOrCtrl+O',
click () {
dialog.showOpenDialog(win,
{ title : "Load configuration file",
defaultPath : app.getPath('temp'),
//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) {
setImmediate(function() {
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 : app.getPath('temp'),
properties:["openDirectory"]}
).then(result => {
setImmediate(function() {
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 () {
setImmediate(function() {
var focusedWindow = BrowserWindow.getFocusedWindow();
focusedWindow.webContents.send('saveFile','');
});
}
},
{
label: 'Save As...',
accelerator: 'CmdOrCtrl+Shift+S',
click () {
dialog.showSaveDialog(win,
{ title : "Save configuration file",
defaultPath : app.getPath('temp'),
filters :[
{name: 'Config file type', extensions: ['cfg']},
{name: 'All Files', extensions: ['*']}
],
properties: ['showOverwriteConfirmation']}
).then(result => {
setImmediate(function() {
var focusedWindow = BrowserWindow.getFocusedWindow();
focusedWindow.webContents.send('saveFile',result.filePath);
});
}).catch(err => {
console.log(err);
})
}
},
{
label: 'Print',
accelerator: 'CmdOrCtrl+P',
click () {
setImmediate(function() {
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) {
setImmediate(function() {
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) {
setImmediate(function() {
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) {
setImmediate(function() {
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') }
}
]
}
]
let 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, args) => {
console.log('received a message: '+args);
dialog.showOpenDialog({ title: "Select folder",
defaultPath : app.getPath('temp'),
properties:["openDirectory"]}
).then(result => {
console.log(result)
setImmediate(function() {
var focusedWindow = BrowserWindow.getFocusedWindow();
focusedWindow.webContents.send('browseFolder',result.filePaths);
app.setPath('temp',result.filePaths[0]);
});
}).catch(err => {
console.log(err);
})
});
//ipcMain.on('browseFolder-send', (event, args) => {
// dialog.showOpenDialog(null, args).then(filePaths => {
// event.sender.dend('browseFolder', filePaths);
// }).catch(err => {
// console.log(err);
// })
//});
//menuItem = menu.getMenuItemById('openItem');
//console.log(menuItem);