Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| const PRODUCTION = process.mainModule.filename.includes("resources") | |
| const path = PRODUCTION ? "resources/app" : "." | |
| const remoteMain = require("@electron/remote/main") | |
| remoteMain.initialize() | |
| const fs = require("fs") | |
| const {shell, app, BrowserWindow, ipcMain, Menu} = require("electron") | |
| const {spawn} = require("child_process") | |
| let pythonProcess | |
| if (PRODUCTION) { | |
| // pythonProcess = spawn(`${path}/cpython/server.exe`, {stdio: "ignore"}) | |
| } else { | |
| pythonProcess = spawn("python", [`${path}/server.py`], {stdio: "ignore"}) | |
| } | |
| let mainWindow | |
| let discordClient | |
| let discordClientStart = Date.now() | |
| const createWindow = () => { | |
| mainWindow = new BrowserWindow({ | |
| width: 1200, | |
| height: 1000, | |
| minHeight: 800, | |
| minWidth: 1300, | |
| frame: false, | |
| webPreferences: { | |
| nodeIntegration: true, | |
| enableRemoteModule: true, | |
| contextIsolation: false | |
| }, | |
| icon: `${__dirname}/assets/x-icon.png`, | |
| // show: false, | |
| }) | |
| remoteMain.enable(mainWindow.webContents) | |
| app.on('browser-window-created', (_, window) => { | |
| require("@electron/remote/main").enable(mainWindow.webContents) | |
| }) | |
| mainWindow.loadFile("index.html") | |
| mainWindow.shell = shell | |
| mainWindow.on("ready-to-show", () => { | |
| mainWindow.show() | |
| }) | |
| mainWindow.on("closed", () => mainWindow = null) | |
| } | |
| ipcMain.on("resize", (event, arg) => { | |
| mainWindow.setSize(arg.width, arg.height) | |
| }) | |
| ipcMain.on("updatePosition", (event, arg) => { | |
| const bounds = mainWindow.getBounds() | |
| bounds.x = parseInt(arg.details[0]) | |
| bounds.y = parseInt(arg.details[1]) | |
| mainWindow.setBounds(bounds) | |
| }) | |
| ipcMain.on("updateDiscord", (event, arg) => { | |
| // Disconnect if turned off | |
| if (!Object.keys(arg).includes("details")) { | |
| if (discordClient) { | |
| try { | |
| discordClient.disconnect() | |
| } catch (e) {} | |
| } | |
| discordClient = undefined | |
| return | |
| } | |
| if (!discordClient) { | |
| discordClient = require('discord-rich-presence')('885096702648938546') | |
| } | |
| discordClient.updatePresence({ | |
| state: 'Generating AI voice acting', | |
| details: arg.details, | |
| startTimestamp: discordClientStart, | |
| largeImageKey: 'xvasynth_512_512', | |
| largeImageText: "xVASynth", | |
| smallImageKey: 'xvasynth_512_512', | |
| smallImageText: "xVASynth", | |
| instance: true, | |
| }) | |
| }) | |
| ipcMain.on("show-context-menu-editor", (event) => { | |
| const template = [ | |
| { | |
| label: 'Copy ARPAbet [v3]', | |
| click: () => { event.sender.send('context-menu-command', 'context-copy-editor') } | |
| }, | |
| ] | |
| const menu = Menu.buildFromTemplate(template) | |
| menu.popup(BrowserWindow.fromWebContents(event.sender)) | |
| }) | |
| ipcMain.on("show-context-menu", (event) => { | |
| const template = [ | |
| { | |
| label: 'Copy', | |
| click: () => { event.sender.send('context-menu-command', 'context-copy') } | |
| }, | |
| { | |
| label: 'Paste', | |
| click: () => { event.sender.send('context-menu-command', 'context-paste') } | |
| }, | |
| // { type: 'separator' }, | |
| ] | |
| const menu = Menu.buildFromTemplate(template) | |
| menu.popup(BrowserWindow.fromWebContents(event.sender)) | |
| }) | |
| // This method will be called when Electron has finished | |
| // initialization and is ready to create browser windows. | |
| // Some APIs can only be used after this event occurs. | |
| app.on("ready", createWindow) | |
| // Quit when all windows are closed. | |
| app.on("window-all-closed", () => { | |
| // On OS X it is common for applications and their menu bar | |
| // to stay active until the user quits explicitly with Cmd + Q | |
| if (process.platform !== "darwin") { | |
| app.quit() | |
| } | |
| }) | |
| app.on("activate", () => { | |
| // On OS X it"s common to re-create a window in the app when the | |
| // dock icon is clicked and there are no other windows open. | |
| if (mainWindow === null) { | |
| createWindow() | |
| } | |
| }) |