You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.1 KiB
46 lines
2.1 KiB
"use strict";
|
|
|
|
const {contextBridge, ipcRenderer, webFrame} = require("electron");
|
|
|
|
let fileOpenListener = null;
|
|
let closeFileListener = null;
|
|
let settingsChangeListener = null;
|
|
|
|
contextBridge.exposeInMainWorld("api", {
|
|
openFileDialog : () => ipcRenderer.send("WindowManager::openFileDialog"),
|
|
onFileOpen : callback => {
|
|
if (fileOpenListener)
|
|
ipcRenderer.off("Ation::openFile", fileOpenListener);
|
|
fileOpenListener = (_, presentation) => callback(presentation);
|
|
ipcRenderer.on("Ation::openFile", fileOpenListener);
|
|
},
|
|
onFileClose : callback => {
|
|
if (closeFileListener)
|
|
ipcRenderer.off("Ation::closeFile", closeFileListener);
|
|
closeFileListener = () => callback();
|
|
ipcRenderer.on("Ation::closeFile", closeFileListener);
|
|
},
|
|
openFile : filePath => ipcRenderer.send("WindowManager::openFile", filePath),
|
|
closeFile : () => ipcRenderer.send("Ation::closeFile"),
|
|
saveFile : async newContent => await ipcRenderer.invoke("Ation::saveFile", newContent),
|
|
|
|
clearCache : () => webFrame.clearCache(),
|
|
appVersion : async () => await ipcRenderer.invoke("Ation::appVersion"),
|
|
fonts : async () => await ipcRenderer.invoke("FontManager::fonts"),
|
|
resize : size => ipcRenderer.invoke("WindowManager::resize", size),
|
|
fullscreen : fullscreen => ipcRenderer.invoke("WindowManager::presentFullscreen", fullscreen),
|
|
maximize : () => ipcRenderer.send("WindowManager::toggleMaximize")
|
|
});
|
|
|
|
contextBridge.exposeInMainWorld("appSettings", {
|
|
get : async (key, defaultValue = null) => await ipcRenderer.invoke("SettingsManager::get", key, defaultValue),
|
|
set : async (key, value) => await ipcRenderer.invoke("SettingsManager::set", key, value),
|
|
all : async () => await ipcRenderer.invoke("SettingsManager::all"),
|
|
onChange : callback => {
|
|
if (settingsChangeListener)
|
|
ipcRenderer.off("SettingsManager::change", settingsChangeListener);
|
|
settingsChangeListener = (_, settings) => callback(settings);
|
|
ipcRenderer.on("SettingsManager::change", settingsChangeListener);
|
|
},
|
|
reset : () => ipcRenderer.send("SettingsManager::reset")
|
|
}); |