2017-07-26 21:10:28 +03:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
/**********************************************************************
|
|
|
|
|
*
|
|
|
|
|
* ImageGrid.Viewer Electron entry point...
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
**********************************************************************/
|
|
|
|
|
|
2018-11-29 04:59:50 +03:00
|
|
|
//require('v8-compile-cache')
|
|
|
|
|
|
2017-07-26 21:10:28 +03:00
|
|
|
var electron = require('electron')
|
|
|
|
|
var app = electron.app
|
|
|
|
|
var BrowserWindow = electron.BrowserWindow
|
|
|
|
|
|
|
|
|
|
var path = require('path')
|
|
|
|
|
var url = require('url')
|
2019-01-13 08:04:29 +03:00
|
|
|
//var fs = require('fs')
|
2017-07-26 21:10:28 +03:00
|
|
|
|
2019-01-13 08:33:03 +03:00
|
|
|
var VERSION = require('./version').version
|
|
|
|
|
|
2017-07-26 21:10:28 +03:00
|
|
|
|
2017-11-01 04:53:36 +03:00
|
|
|
//---------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
//require('./cfg/requirejs')
|
|
|
|
|
|
|
|
|
|
//var _require = require
|
|
|
|
|
//require = requirejs
|
|
|
|
|
|
2017-07-26 21:10:28 +03:00
|
|
|
|
2020-06-20 03:48:18 +03:00
|
|
|
/*********************************************************************/
|
|
|
|
|
|
|
|
|
|
// XXX process args...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-07-26 21:10:28 +03:00
|
|
|
/*********************************************************************/
|
|
|
|
|
|
|
|
|
|
var win
|
|
|
|
|
|
2019-01-15 02:25:00 +03:00
|
|
|
// XXX move this to splash.js (or an electron-specific variant of it)
|
|
|
|
|
// and use both here and in app.js...
|
|
|
|
|
// ...another way would be to make this module importable...
|
|
|
|
|
function createSplash(){
|
2019-01-13 08:04:29 +03:00
|
|
|
// NOTE: this is done here as this does not depend on code loading,
|
|
|
|
|
// thus showing the splash significantly faster...
|
2019-01-13 07:09:00 +03:00
|
|
|
// XXX also show load progress here...
|
|
|
|
|
var splash = global.splash = new BrowserWindow({
|
|
|
|
|
// let the window to get ready before we show it to the user...
|
|
|
|
|
show: false,
|
|
|
|
|
|
|
|
|
|
transparent: true,
|
|
|
|
|
frame: false,
|
|
|
|
|
center: true,
|
2019-05-04 17:08:40 +03:00
|
|
|
width: 840,
|
|
|
|
|
height: 540,
|
2019-01-13 07:09:00 +03:00
|
|
|
|
|
|
|
|
alwaysOnTop: true,
|
|
|
|
|
|
|
|
|
|
resizable: false,
|
|
|
|
|
movable: false,
|
|
|
|
|
minimizable: false,
|
|
|
|
|
maximizable: false,
|
|
|
|
|
fullscreenable: false,
|
|
|
|
|
|
|
|
|
|
autoHideMenuBar: true,
|
|
|
|
|
})
|
|
|
|
|
splash.loadURL(url.format({
|
|
|
|
|
// XXX unify this with index.html
|
|
|
|
|
//pathname: path.join(__dirname, 'index.html'),
|
|
|
|
|
pathname: path.join(__dirname, 'splash.html'),
|
|
|
|
|
protocol: 'file:',
|
|
|
|
|
slashes: true
|
|
|
|
|
}))
|
|
|
|
|
splash.once('ready-to-show', function(){
|
2019-01-13 08:04:29 +03:00
|
|
|
this.webContents
|
|
|
|
|
// see if the splash screen is disabled...
|
|
|
|
|
.executeJavaScript('localStorage.disableSplashScreen')
|
|
|
|
|
.then(function(disabled){
|
2019-01-14 10:17:58 +03:00
|
|
|
// update version...
|
|
|
|
|
disabled
|
|
|
|
|
|| splash.webContents
|
|
|
|
|
.executeJavaScript(
|
|
|
|
|
`document.getElementById("version").innerText = "${VERSION}"`)
|
|
|
|
|
// show/destroy..
|
2019-01-13 08:04:29 +03:00
|
|
|
disabled ?
|
|
|
|
|
splash.destroy()
|
|
|
|
|
: splash.show() }) })
|
2019-01-15 02:25:00 +03:00
|
|
|
return splash
|
|
|
|
|
}
|
2019-01-13 07:09:00 +03:00
|
|
|
|
2019-01-15 02:25:00 +03:00
|
|
|
function createWindow(){
|
2017-07-26 21:10:28 +03:00
|
|
|
// Create the browser window.
|
2017-10-04 17:07:22 +03:00
|
|
|
win = new BrowserWindow({
|
2019-01-14 20:52:27 +03:00
|
|
|
webPreferences: {
|
|
|
|
|
nodeIntegration: true,
|
|
|
|
|
},
|
|
|
|
|
|
2017-11-03 02:12:38 +03:00
|
|
|
// let the window to get ready before we show it to the user...
|
|
|
|
|
show: false,
|
|
|
|
|
|
|
|
|
|
// XXX get from config... (???)
|
2018-01-21 06:07:29 +03:00
|
|
|
// XXX for some reason this shows as black...
|
2017-11-06 18:32:29 +03:00
|
|
|
backgroundColor: '#333333',
|
|
|
|
|
|
|
|
|
|
|
2017-10-04 17:07:22 +03:00
|
|
|
width: 800,
|
|
|
|
|
height: 600,
|
|
|
|
|
|
|
|
|
|
fullscreenable: true,
|
|
|
|
|
|
2017-11-03 02:12:38 +03:00
|
|
|
//autoHideMenuBar: true,
|
2017-10-04 17:07:22 +03:00
|
|
|
})
|
2017-11-03 02:12:38 +03:00
|
|
|
// disable default menu...
|
|
|
|
|
win.setMenu(null)
|
|
|
|
|
|
2019-09-18 03:32:47 +03:00
|
|
|
//win.openDevTools()
|
2019-06-22 02:14:24 +03:00
|
|
|
|
|
|
|
|
|
2017-07-26 21:10:28 +03:00
|
|
|
// and load the index.html of the app.
|
|
|
|
|
win.loadURL(url.format({
|
2017-11-01 05:57:01 +03:00
|
|
|
// XXX unify this with index.html
|
2018-01-30 06:39:45 +03:00
|
|
|
//pathname: path.join(__dirname, 'index.html'),
|
|
|
|
|
pathname: path.join(__dirname, 'electron.html'),
|
2017-07-26 21:10:28 +03:00
|
|
|
protocol: 'file:',
|
|
|
|
|
slashes: true
|
|
|
|
|
}))
|
|
|
|
|
|
2019-01-13 07:09:00 +03:00
|
|
|
// XXX HACK: pass this in a formal way...
|
|
|
|
|
win.once('ready-to-show', function(){
|
|
|
|
|
global.readyToShow = true
|
|
|
|
|
})
|
|
|
|
|
|
2017-07-26 21:10:28 +03:00
|
|
|
// Open the DevTools.
|
2017-11-01 05:57:01 +03:00
|
|
|
//win.webContents.openDevTools()
|
2017-07-26 21:10:28 +03:00
|
|
|
|
|
|
|
|
// Emitted when the window is closed.
|
|
|
|
|
win.on('closed', () => {
|
|
|
|
|
// Dereference the window object, usually you would store windows
|
|
|
|
|
// in an array if your app supports multi windows, this is the time
|
|
|
|
|
// when you should delete the corresponding element.
|
|
|
|
|
win = null
|
|
|
|
|
})
|
2019-01-15 02:25:00 +03:00
|
|
|
|
2019-06-22 02:14:24 +03:00
|
|
|
|
2019-01-15 02:25:00 +03:00
|
|
|
return win
|
2017-07-26 21:10:28 +03:00
|
|
|
}
|
|
|
|
|
|
2017-11-03 03:22:02 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------
|
|
|
|
|
|
2019-01-15 02:25:00 +03:00
|
|
|
// This will be called when Electron has finished initialization and is
|
|
|
|
|
// ready to create browser windows.
|
2017-07-26 21:10:28 +03:00
|
|
|
// Some APIs can only be used after this event occurs.
|
2019-01-15 02:25:00 +03:00
|
|
|
app.on('ready', function(){
|
|
|
|
|
createSplash()
|
|
|
|
|
createWindow()
|
|
|
|
|
})
|
2017-07-26 21:10:28 +03:00
|
|
|
|
|
|
|
|
// Quit when all windows are closed.
|
2019-01-15 02:25:00 +03:00
|
|
|
// On macOS it is common for applications and their menu bar
|
|
|
|
|
// to stay active until the user quits explicitly with Cmd + Q
|
|
|
|
|
app.on('window-all-closed', function(){
|
2017-07-26 21:10:28 +03:00
|
|
|
process.platform !== 'darwin'
|
|
|
|
|
&& app.quit()
|
|
|
|
|
})
|
|
|
|
|
|
2019-01-15 02:25:00 +03:00
|
|
|
// 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.
|
|
|
|
|
// XXX needs testing...
|
|
|
|
|
app.on('activate', function(){
|
2017-07-26 21:10:28 +03:00
|
|
|
win === null
|
|
|
|
|
&& createWindow()
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**********************************************************************
|
|
|
|
|
* vim:set ts=4 sw=4 : */
|