@@ -6,6 +6,8 @@ const registerIPCHandlers = require('./backend/ipc.js')
66const registerMenu = require ( './backend/menu.js' )
77
88let win = null // main window
9+ let splash = null
10+ let splashTimestamp = null
911
1012// START APP
1113function createWindow ( ) {
@@ -17,23 +19,42 @@ function createWindow () {
1719 nodeIntegration : false ,
1820 webSecurity : true ,
1921 enableRemoteModule : false ,
20- preload : path . join ( __dirname , "preload.js" )
22+ preload : path . join ( __dirname , "preload.js" ) ,
23+ show : false
2124 }
2225 } )
2326 // and load the index.html of the app.
2427 win . loadFile ( 'ui/arduino/index.html' )
2528
29+ // If the app takes a while to open, show splash screen
30+ // Create the splash screen
31+ splash = new BrowserWindow ( {
32+ width : 450 ,
33+ height : 140 ,
34+ transparent : true ,
35+ frame : false ,
36+ alwaysOnTop : true
37+ } ) ;
38+ splash . loadFile ( 'ui/arduino/splash.html' )
39+ splashTimestamp = Date . now ( )
40+
41+ win . once ( 'ready-to-show' , ( ) => {
42+ if ( Date . now ( ) - splashTimestamp > 1000 ) {
43+ splash . destroy ( )
44+ } else {
45+ setTimeout ( ( ) => {
46+ splash . destroy ( )
47+ } , 500 )
48+ }
49+ win . show ( )
50+ } )
51+
2652 registerIPCHandlers ( win , ipcMain , app )
2753 registerMenu ( win )
2854
2955 app . on ( 'activate' , ( ) => {
3056 if ( BrowserWindow . getAllWindows ( ) . length === 0 ) createWindow ( )
3157 } )
32- // app.on('window-all-closed', () => {
33- // if (process.platform !== 'darwin') app.quit()
34- // })
3558}
3659
37-
38- // TODO: Loading splash screen
39- app . whenReady ( ) . then ( createWindow )
60+ app . on ( 'ready' , createWindow )
0 commit comments