mirror of
https://github.com/frappe/books.git
synced 2025-01-11 10:38:14 +00:00
Merge branch 'frappe-cli-electron'
This commit is contained in:
commit
e627809b4d
18
src-electron/main.dev.js
Normal file
18
src-electron/main.dev.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Set environment for development
|
||||||
|
process.env.NODE_ENV = 'development'
|
||||||
|
|
||||||
|
// Install `electron-debug` with `devtron`
|
||||||
|
require('electron-debug')({ showDevTools: true })
|
||||||
|
|
||||||
|
// Install `vue-devtools`
|
||||||
|
require('electron').app.on('ready', () => {
|
||||||
|
let installExtension = require('electron-devtools-installer')
|
||||||
|
installExtension.default(installExtension.VUEJS_DEVTOOLS)
|
||||||
|
.then(() => {})
|
||||||
|
.catch(err => {
|
||||||
|
console.log('Unable to install `vue-devtools`: \n', err)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// Require `main` process to boot app
|
||||||
|
require('./main')
|
51
src-electron/main.js
Normal file
51
src-electron/main.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
const { app, BrowserWindow } = require('electron');
|
||||||
|
const { getAppConfig } = require('frappejs/webpack/utils');
|
||||||
|
const setupMenu = require('./menu');
|
||||||
|
|
||||||
|
const appConfig = getAppConfig();
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV !== 'development') {
|
||||||
|
global.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
|
||||||
|
}
|
||||||
|
|
||||||
|
let mainWindow
|
||||||
|
const winURL = process.env.NODE_ENV === 'development'
|
||||||
|
? `http://localhost:${appConfig.dev.devServerPort}`
|
||||||
|
: `file://${__dirname}/index.html`
|
||||||
|
|
||||||
|
function createWindow() {
|
||||||
|
/**
|
||||||
|
* Initial window options
|
||||||
|
*/
|
||||||
|
mainWindow = new BrowserWindow({
|
||||||
|
width: 1024,
|
||||||
|
height: 768,
|
||||||
|
useContentSize: true
|
||||||
|
})
|
||||||
|
|
||||||
|
mainWindow.loadURL(winURL)
|
||||||
|
|
||||||
|
mainWindow.on('closed', () => {
|
||||||
|
mainWindow = null
|
||||||
|
})
|
||||||
|
|
||||||
|
setupMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
app.on('ready', createWindow)
|
||||||
|
|
||||||
|
app.on('window-all-closed', () => {
|
||||||
|
if (process.platform !== 'darwin') {
|
||||||
|
app.quit()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
app.on('activate', () => {
|
||||||
|
if (mainWindow === null) {
|
||||||
|
createWindow()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// Enable Auto Update
|
||||||
|
// https://www.electron.build/auto-update/
|
93
src-electron/menu.js
Normal file
93
src-electron/menu.js
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
const { app, Menu } = require('electron');
|
||||||
|
|
||||||
|
const template = [
|
||||||
|
{
|
||||||
|
label: 'Edit',
|
||||||
|
submenu: [
|
||||||
|
{ role: 'undo' },
|
||||||
|
{ role: 'redo' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'cut' },
|
||||||
|
{ role: 'copy' },
|
||||||
|
{ role: 'paste' },
|
||||||
|
{ role: 'pasteandmatchstyle' },
|
||||||
|
{ role: 'delete' },
|
||||||
|
{ role: 'selectall' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'View',
|
||||||
|
submenu: [
|
||||||
|
{ role: 'reload' },
|
||||||
|
{ role: 'forcereload' },
|
||||||
|
{ role: 'toggledevtools' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'resetzoom' },
|
||||||
|
{ role: 'zoomin' },
|
||||||
|
{ role: 'zoomout' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'togglefullscreen' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'window',
|
||||||
|
submenu: [
|
||||||
|
{ role: 'minimize' },
|
||||||
|
{ role: 'close' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'help',
|
||||||
|
submenu: [
|
||||||
|
{
|
||||||
|
label: 'Learn More',
|
||||||
|
click() { require('electron').shell.openExternal('https://electronjs.org') }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if (process.platform === 'darwin') {
|
||||||
|
template.unshift({
|
||||||
|
label: app.getName(),
|
||||||
|
submenu: [
|
||||||
|
{ role: 'about' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'services', submenu: [] },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'hide' },
|
||||||
|
{ role: 'hideothers' },
|
||||||
|
{ role: 'unhide' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'quit' }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
// Edit menu
|
||||||
|
template[1].submenu.push(
|
||||||
|
{ type: 'separator' },
|
||||||
|
{
|
||||||
|
label: 'Speech',
|
||||||
|
submenu: [
|
||||||
|
{ role: 'startspeaking' },
|
||||||
|
{ role: 'stopspeaking' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Window menu
|
||||||
|
template[3].submenu = [
|
||||||
|
{ role: 'close' },
|
||||||
|
{ role: 'minimize' },
|
||||||
|
{ role: 'zoom' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'front' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
function setupMenu() {
|
||||||
|
const menu = Menu.buildFromTemplate(template)
|
||||||
|
Menu.setApplicationMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = setupMenu;
|
Loading…
Reference in New Issue
Block a user