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() | |
} | |
}) |