mirror of
https://github.com/Elvanos/fantasia-archive.git
synced 2024-10-01 01:27:17 +13:00
116 lines
3 KiB
JavaScript
116 lines
3 KiB
JavaScript
import { app, BrowserWindow, nativeTheme, Menu, MenuItem, shell } from 'electron'
|
|
app.commandLine.appendSwitch('disable-software-rasterizer', 'true')
|
|
|
|
try {
|
|
if (process.platform === 'win32' && nativeTheme.shouldUseDarkColors === true) {
|
|
require('fs').unlinkSync(require('path').join(app.getPath('userData'), 'DevTools Extensions'))
|
|
}
|
|
} catch (_) { }
|
|
|
|
/**
|
|
* Set `__statics` path to static files in production;
|
|
* The reason we are setting it here is that the path needs to be evaluated at runtime
|
|
*/
|
|
if (process.env.PROD) {
|
|
global.__statics = __dirname
|
|
}
|
|
|
|
let mainWindow
|
|
|
|
function createWindow () {
|
|
|
|
|
|
/**
|
|
* Initial window options
|
|
*/
|
|
mainWindow = new BrowserWindow({
|
|
useContentSize: true,
|
|
frame: false,
|
|
|
|
webPreferences: {
|
|
// Change from /quasar.conf.js > electron > nodeIntegration;
|
|
// More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
|
|
nodeIntegration: process.env.QUASAR_NODE_INTEGRATION,
|
|
nodeIntegrationInWorker: process.env.QUASAR_NODE_INTEGRATION,
|
|
enableRemoteModule: true,
|
|
// More info: /quasar-cli/developing-electron-apps/electron-preload-script
|
|
// preload: path.resolve(__dirname, 'electron-preload.js')
|
|
}
|
|
})
|
|
|
|
mainWindow.setMenu(null)
|
|
mainWindow.maximize()
|
|
|
|
mainWindow.loadURL(process.env.APP_URL)
|
|
|
|
mainWindow["isDev"] = false
|
|
|
|
mainWindow.on('closed', () => {
|
|
mainWindow = null
|
|
})
|
|
|
|
mainWindow.webContents.on('will-navigate', event => {
|
|
event.preventDefault()
|
|
})
|
|
|
|
mainWindow.webContents.on('new-window', (event, url) => {
|
|
event.preventDefault()
|
|
shell.openExternal(url)
|
|
})
|
|
|
|
mainWindow.webContents.on('context-menu', (event, params) => {
|
|
const menu = new Menu()
|
|
|
|
// Add each spelling suggestion
|
|
for (const suggestion of params.dictionarySuggestions) {
|
|
menu.append(new MenuItem({
|
|
label: suggestion,
|
|
click: () => mainWindow.webContents.replaceMisspelling(suggestion)
|
|
}))
|
|
}
|
|
|
|
// Allow users to add the misspelled word to the dictionary
|
|
if (params.misspelledWord) {
|
|
menu.append(
|
|
new MenuItem({
|
|
label: 'Add to dictionary',
|
|
click: () => mainWindow.webContents.session.addWordToSpellCheckerDictionary(params.misspelledWord)
|
|
})
|
|
)
|
|
}
|
|
if((params.dictionarySuggestions && params.dictionarySuggestions.length) || params.misspelledWord){
|
|
menu.popup()
|
|
}
|
|
})
|
|
}
|
|
|
|
const gotTheLock = app.requestSingleInstanceLock()
|
|
|
|
if (!gotTheLock) {
|
|
app.quit()
|
|
} else {
|
|
app.on('second-instance', (event, commandLine, workingDirectory) => {
|
|
// Someone tried to run a second instance, we should focus our window.
|
|
if (mainWindow) {
|
|
if (mainWindow.isMinimized()) mainWindow.restore()
|
|
mainWindow.focus()
|
|
}
|
|
})
|
|
|
|
// Create myWindow, load the rest of the app, etc...
|
|
app.on('ready', createWindow)
|
|
}
|
|
|
|
|
|
app.on('window-all-closed', () => {
|
|
if (process.platform !== 'darwin') {
|
|
app.quit()
|
|
}
|
|
})
|
|
|
|
app.on('activate', () => {
|
|
if (mainWindow === null) {
|
|
createWindow()
|
|
}
|
|
})
|
|
|