Newton-Editor/newton/app.js

96 lines
2.6 KiB
JavaScript

const { BrowserWindow } = require('electron');
const path = require('node:path');
const { menu } = require('./menu');
const { systemTray } = require('./system-tray');
const { argsParser } = require('./args-parser');
const { settingsManager } = require('./settings-manager');
const { newtonFs } = require('./fs');
const { newtonIPC } = require('./ipc');
const BASE_PATH = '../build/app';
const ICON_PATH = `${BASE_PATH}/resources/newton.png`;
let args = [];
// Note: https://tinydew4.gitbooks.io/electron/content/api/browser-window.html
const createWindow = (startType = "build", debug = false, args = []) => {
this.args = args;
let data = settingsManager.getConfig();
const window = new BrowserWindow({
title: "Newton",
x: data["config"]["main_window_x"],
y: data["config"]["main_window_y"],
width: data["config"]["main_window_width"],
height: data["config"]["main_window_height"],
minWidth: data["config"]["main_window_min_width"],
minHeight: data["config"]["main_window_min_height"],
show: false,
transparent: true,
icon: settingsManager.getIconPath(),
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
backgroundThrottling: false,
webSecurity: true,
sandbox: true,
nodeIntegration: false,
contextIsolation: true,
enableRemoteModule: false,
plugins: true,
}
});
window.once('close', () => {
settingsManager.saveConfig(window);
});
window.once('ready-to-show', () => {
window.show();
window.webContents.send('load-files', args);
});
menu.load(window);
systemTray.load(menu.menuStruct);
// window.setAutoHideMenuBar(true)
if (debug == true) {
window.webContents.openDevTools();
}
if (startType === "build") {
window.loadFile(
path.join(__dirname, `${BASE_PATH}/index.html`)
);
}
if (startType === "ng-serve") {
window.loadURL('http://localhost:4200');
}
// const childWindow = new BrowserWindow({parent: window, modal: true, show: false})
// childWindow.loadFile(
// path.join(__dirname, `${BASE_PATH}/index.html`)
// );
// childWindow.once('ready-to-show', () => {
// childWindow.show()
// });
return window;
}
module.exports = {
newton: {
createWindow: createWindow,
args: argsParser,
settings: settingsManager,
fs: newtonFs,
ipc: newtonIPC,
}
};