From 1b04aa32e7075c2ba942d32c2120754c414f8f83 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 08:48:41 +0100 Subject: [PATCH] Electron wrapper for binaries --- electron-wrapper.js | 130 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 electron-wrapper.js diff --git a/electron-wrapper.js b/electron-wrapper.js new file mode 100644 index 000000000..b47a036be --- /dev/null +++ b/electron-wrapper.js @@ -0,0 +1,130 @@ +const {app, Menu, BrowserWindow} = require('electron') + +const path = require('path') +const fs = require('fs') + +const WINDOW_WIDTH = null +const WINDOW_HEIGHT = null + +var w + +var app_ready = false +var server_ready = false + +const port = 34248 // Default HTTP port + +/* To check if the folders where user data do exist. If not, create them */ +function userData() { + const dataStorage = path.join(process.cwd(), '/Platform/My-Data-Storage') + const logFiles = path.join(process.cwd(), '/Platform/My-Log-Files') + const workspace = path.join(process.cwd(), '/Platform/My-Workspaces') + + if (!fs.existsSync(dataStorage)) { + fs.mkdirSync(dataStorage) + } + + if (!fs.existsSync(logFiles)) { + fs.mkdirSync(logFiles) + } + + if (!fs.existsSync(workspace)) { + fs.mkdirSync(workspace) + } +} +run() + +function run() { + userData() + const { fork } = require('child_process') + fork(path.join(__dirname, './PlatformRoot.js'), { + execArgv: ['noBrowser'] + }) + + server_ready = true + if (app_ready) open() +} + +function open () { + let bw_options = { + width: WINDOW_WIDTH ? WINDOW_WIDTH : 1280, + height: WINDOW_HEIGHT ? WINDOW_HEIGHT : 720, + resizable: true + } + + w = new BrowserWindow( + bw_options + ) + + w.setResizable(true) + + w.loadURL("http://localhost:" + port) + + // w.webContents.openDevTools() + + w.on('closed', function () { + w = null + }) +} + +app.on('ready', function () { + app_ready = true + create_menus() + if (server_ready) open() +}) + +app.on('window-all-closed', function () { + app.quit() +}) + +function create_menus () { + const template = [ + { + label: app.getName(), + submenu: [ + { + role: 'quit' + } + ] + }, + { + label: 'Edit', + submenu: [ + {role: 'undo'}, + {role: 'redo'}, + {type: 'separator'}, + {role: 'cut'}, + {role: 'copy'}, + {role: 'paste'}, + {role: 'pasteandmatchstyle'}, + {role: 'delete'}, + {role: 'selectall'} + ] + }, + { + label: 'View', + submenu: [ + { + label: 'Open in Browser...', + click () { + require('electron').shell.openExternal('http://localhost:' + port) + } + }, + { + type: 'separator' + }, + {role: 'reload'}, + {role: 'forcereload'}, + {role: 'toggledevtools'}, + {type: 'separator'}, + {role: 'resetzoom'}, + {role: 'zoomin'}, + {role: 'zoomout'}, + {type: 'separator'}, + {role: 'togglefullscreen'} + ] + } + ] + + const menu = Menu.buildFromTemplate(template) + Menu.setApplicationMenu(menu) +} \ No newline at end of file