117 lines
2.7 KiB
JavaScript
117 lines
2.7 KiB
JavaScript
// Modules to control application life and create native browser window
|
|
const {
|
|
app,
|
|
BrowserWindow,
|
|
Menu,
|
|
webContents
|
|
} = require('electron');
|
|
var mainWindow
|
|
const path = require('path');
|
|
const {
|
|
setupTitlebar,
|
|
attachTitlebarToWindow
|
|
} = require('custom-electron-titlebar/main');
|
|
// setup the titlebar main process
|
|
setupTitlebar();
|
|
|
|
createWindow = () => {
|
|
// Create the browser window.
|
|
mainWindow = new BrowserWindow({
|
|
width: 800,
|
|
height: 600,
|
|
titleBarStyle: 'hidden',
|
|
//frame: false, // needed if process.versions.electron < 14
|
|
webPreferences: {
|
|
preload: path.join(__dirname, '/js/preload.js')
|
|
}
|
|
});
|
|
|
|
const menu = Menu.buildFromTemplate(exampleMenuTemplate());
|
|
Menu.setApplicationMenu(menu);
|
|
|
|
|
|
|
|
// and load the index.html of the app.
|
|
mainWindow.loadFile('index.html');
|
|
|
|
// Open the DevTools.
|
|
// mainWindow.webContents.openDevTools()
|
|
|
|
//attach fullscreen(f11 and not 'maximized') && focus listeners
|
|
attachTitlebarToWindow(mainWindow);
|
|
}
|
|
|
|
// This method will be called when Electron has finished
|
|
// initialization and is ready to create browser windows.
|
|
// Some APIs can only be used after this event occurs.
|
|
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();
|
|
})
|
|
|
|
const exampleMenuTemplate = () => [{
|
|
label: "File",
|
|
submenu: [{
|
|
label: "Connect to AA Protocol Device",
|
|
click: async () => {
|
|
var contents = mainWindow.webContents
|
|
contents.loadFile('index.html')
|
|
}
|
|
},
|
|
{
|
|
label: "Quit",
|
|
click: () => app.quit()
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: "Edit",
|
|
submenu: [{
|
|
label: "Back",
|
|
click: async () => {
|
|
var contents = mainWindow.webContents
|
|
contents.goBack()
|
|
}
|
|
},
|
|
{
|
|
label: "Forward",
|
|
click: async () => {
|
|
var contents = mainWindow.webContents
|
|
contents.goForward()
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: "Advanced",
|
|
submenu: [{
|
|
role: "reload"
|
|
},
|
|
{
|
|
role: "forceReload"
|
|
},
|
|
{
|
|
type: "separator"
|
|
},
|
|
{
|
|
role: "toggleDevTools"
|
|
},
|
|
{
|
|
label: "Quit",
|
|
click: () => app.quit()
|
|
}
|
|
]
|
|
}
|
|
]; |