RSS Git Download  Clone
Raw Blame History
const {BrowserWindow, app} = require('electron');


function createWindow() {

    const remoteMain = require("@electron/remote/main")
    remoteMain.initialize()

    global.p3x.onenote.window.onenote = new BrowserWindow({
        icon: global.p3x.onenote.iconFile,
        title: `${global.p3x.onenote.title} v${global.p3x.onenote.pkg.version}`,
        backgroundColor: 'black',
        autoHideMenuBar: global.p3x.onenote.optionToHideMenu,
        webPreferences: {
            nativeWindowOpen: true,
            worldSafeExecuteJavaScript: true,
            nodeIntegration: true,
            nodeIntegrationInSubFrames: true,
            contextIsolation: false,
            webviewTag: true,
        }
    });
    global.p3x.onenote.window.onenote.loadURL(`file://${__dirname}/../../../window/onenote/index.html`);

    global.p3x.onenote.window.onenote.webContents.on("did-attach-webview", (_, contents) => {
        contents.setWindowOpenHandler((details) => {
            global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-new-window', details);
            return { action: 'deny' }
        })
      })

    remoteMain.enable(global.p3x.onenote.window.onenote.webContents)

      
    if (process.env.NODE_ENV === 'debug') {
        global.p3x.onenote.window.onenote.openDevTools()
    }

    global.p3x.onenote.setVisible(process.argv.includes('--minimized') ? false : true);

    global.p3x.onenote.window.onenote.on('minimize', function (event) {
        //event.preventDefault()
        //global.p3x.onenote.setVisible(false, true);
    });

    global.p3x.onenote.window.onenote.on('close', function (event) {
        if (!app.isQuiting) {
            if (!global.p3x.onenote.disableHide) {
                event.preventDefault()
                global.p3x.onenote.setVisible(false);
            }
        }
        return false;
    });

    global.p3x.onenote.window.onenote.on('focus', () => {
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', {
            action: 'focus'
        })
    })


    global.p3x.onenote.window.onenote.on('focus', function () {
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-window-state', {
            action: 'focus'
        })
        global.p3x.onenote.mainMenu();
        global.p3x.onenote.mainTray()
    });


    global.p3x.onenote.window.onenote.on('blur', function () {
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-window-state', {
            action: 'blur'
        })
        global.p3x.onenote.mainMenu();
        global.p3x.onenote.mainTray()
    });


    global.p3x.onenote.window.onenote.on('hide', function () {
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-window-state', {
            action: 'blur'
        })
    });

    if (!process.argv.includes('--minimized')) {
        //const windowBounds = global.p3x.onenote.conf.get('window-bounds');
        const maximized = global.p3x.onenote.conf.get('maximized');

        if (maximized === true) {
            global.p3x.onenote.window.onenote.maximize()
        }

    }

    /*
    else if (windowBounds !== null && windowBounds !== undefined) {
        global.p3x.onenote.window.onenote.setBounds(windowBounds);
    }

    global.p3x.onenote.window.onenote.on('close', () => {
        if (global.p3x.onenote.conf.get('maximized') !== true) {
            global.p3x.onenote.conf.set('window-bounds', global.p3x.onenote.window.onenote.getBounds())
        }
    })
    */

    global.p3x.onenote.window.onenote.on('maximize', () => {
        global.p3x.onenote.conf.set('maximized', true)
    })


    global.p3x.onenote.window.onenote.on('unmaximize', () => {
        global.p3x.onenote.conf.set('maximized', false)

        /*
        const windowBounds = global.p3x.onenote.conf.get('window-bounds');
        if (windowBounds !== null && windowBounds !== undefined) {
            global.p3x.onenote.window.onenote.setBounds(windowBounds);
        }
        */
    })


    const {autoUpdater} = require("electron-updater");

    autoUpdater.on('checking-for-update', (info) => {
        console.log('checking-for-update', info)
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', {
            action: 'toast',
            message: global.p3x.onenote.lang.updater["checking-for-update"]
        })
    })
    autoUpdater.on('update-available', (info) => {
        console.log('update-available', info)
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', {
            action: 'toast',
            message: global.p3x.onenote.lang.updater["update-available"]
        })
    })

    let firstCheck = true
    autoUpdater.on('update-not-available', (info) => {
        console.log('update-not-available', info)

        if (firstCheck) {
            firstCheck = false
            return
        }

        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', {
            action: 'toast',
            message: global.p3x.onenote.lang.updater["update-not-available"]
        })
    })
    autoUpdater.on('error', (error) => {
        console.error('error', error)

        /*
        if (global.p3x.onenote.window.onenote) {
            global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', {
                action: 'toast',
                error: error,
                message: global.p3x.onenote.lang.updater["error"]({
                    errorMessage: error.message.split('\n')[0]
                })
            })    
        }*/
    })

    /*
    autoUpdater.on('download-progress', (progressObj) => {
        /*
        let log_message = "Download speed: " + progressObj.bytesPerSecond;
        log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
        log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
        */
    /*
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', {
            action: 'toast',
            message: p3x.onenote.lang.updater["download-progress"]({
                progressObj: progressObj,
            })
        })
    })
    */

    autoUpdater.on('update-downloaded', (info) => {
        global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', {
            action: 'toast',
            message: p3x.onenote.lang.updater["update-downloaded"],
        })

    });
    autoUpdater.checkForUpdatesAndNotify();

}

module.exports = createWindow;