a simple keynote software for Markdown files – written in electron
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

"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")
});