This commit is contained in:
kolaente 2020-10-08 22:03:36 +02:00
parent ddfdeee5b0
commit a3db31b579
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
1 changed files with 37 additions and 37 deletions

View File

@ -1,59 +1,59 @@
const { app, BrowserWindow, protocol, shell } = require('electron') const {app, BrowserWindow, protocol, shell} = require('electron')
const path = require('path') const path = require('path')
function createWindow () { function createWindow() {
// Create the browser window. // Create the browser window.
const win = new BrowserWindow({ const win = new BrowserWindow({
width: 800, width: 800,
height: 600, height: 600,
webPreferences: { webPreferences: {
nodeIntegration: true nodeIntegration: true,
} },
}) })
win.webContents.on('new-window', function(e, url) { win.webContents.on('new-window', function (e, url) {
e.preventDefault(); e.preventDefault()
shell.openExternal(url); shell.openExternal(url)
}) })
// The starting point of the app // The starting point of the app
win.loadFile('./frontend/index.html') win.loadFile('./frontend/index.html')
} }
// This method will be called when Electron has finished // This method will be called when Electron has finished
// initialization and is ready to create browser windows. // initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs. // Some APIs can only be used after this event occurs.
app.whenReady().then(() => { app.whenReady().then(() => {
const root = path.normalize(`${__dirname}/..`) const root = path.normalize(`${__dirname}/..`)
// file:// interceptor to serve all assets without running a web server in the background // file:// interceptor to serve all assets without running a web server in the background
protocol.interceptFileProtocol('file', (request, callback) => { protocol.interceptFileProtocol('file', (request, callback) => {
let url = request.url.substr(7) /* all urls start with 'file://' */ let url = request.url.substr(7) /* all urls start with 'file://' */
if(!url.startsWith(root)) { if (!url.startsWith(root)) {
if(url.startsWith('css/fonts') || url.startsWith('css/img')) { if (url.startsWith('css/fonts') || url.startsWith('css/img')) {
url = url.substr(4) url = url.substr(4)
} }
url = path.normalize(`${root}/frontend/${url}`) url = path.normalize(`${root}/frontend/${url}`)
} }
callback({ path: url}) callback({path: url})
}) })
createWindow() createWindow()
}) })
// Quit when all windows are closed, except on macOS. There, it's common // 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 // for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q. // explicitly with Cmd + Q.
app.on('window-all-closed', () => { app.on('window-all-closed', () => {
if (process.platform !== 'darwin') { if (process.platform !== 'darwin') {
app.quit() app.quit()
} }
}) })
app.on('activate', () => { app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the // 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. // dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) { if (BrowserWindow.getAllWindows().length === 0) {
createWindow() createWindow()
} }
}) })