Repository navigation
Expand file tree
/
Copy pathpreload.js
More file actions
50 lines (49 loc) · 2.45 KB
/
Copy pathpreload.js
File metadata and controls
50 lines (49 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const { contextBridge, ipcRenderer } = require('electron');
const fs = require('fs');
const path = require('path');
contextBridge.exposeInMainWorld('electronAPI', {
saveFile: (content, defaultName) => ipcRenderer.invoke('save-file', content, defaultName),
saveFileDirect: (filePath, content) => ipcRenderer.invoke('save-file-direct', filePath, content),
exportBas: (content, defaultName) => ipcRenderer.invoke('export-bas', content, defaultName),
exportBin: (buffer, defaultName) => ipcRenderer.invoke('export-bin', buffer, defaultName),
exportChr: (buffer, defaultName) => ipcRenderer.invoke('export-chr', buffer, defaultName),
exportCh8: (buffer, defaultName) => ipcRenderer.invoke('export-ch8', buffer, defaultName),
exportSp1Asm: (content, defaultName) => ipcRenderer.invoke('export-sp1-asm', content, defaultName),
openExternal: (url) => ipcRenderer.invoke('open-external', url),
exportCydJson: (content, defaultName) => ipcRenderer.invoke('export-cyd-json', content, defaultName),
exportPng: (dataURL) => ipcRenderer.invoke('export-png', dataURL),
loadFile: () => ipcRenderer.invoke('load-file'),
loadFileBas: () => ipcRenderer.invoke('load-file-bas'),
loadFilePath: (filePath) => ipcRenderer.invoke('load-file-path', filePath),
addRecentFile: (filePath) => ipcRenderer.send('add-recent-file', filePath),
loadImage: () => ipcRenderer.invoke('load-image'),
setDocumentDirty: (isDirty) => ipcRenderer.send('set-document-dirty', isDirty),
closeWindow: () => ipcRenderer.send('close-window'),
onMenuEvent: (channel, cb) => ipcRenderer.on(channel, cb),
openDevTools: () => ipcRenderer.send('open-devtools'),
// Synchronous locale via IPC — guaranteed available before DOMContentLoaded,
// even when contextBridge is still being set up. Avoids any async latency.
getLocale: (lang) => {
try {
return ipcRenderer.sendSync('get-locale-sync', lang);
} catch (e) {
console.error('preload.getLocale error', e);
return null;
}
}
,
setAppLanguage: (lang) => ipcRenderer.send('set-language', lang),
setClipboard: (data) => ipcRenderer.invoke('zxdrawer-clipboard-set', data),
getClipboard: () => ipcRenderer.invoke('zxdrawer-clipboard-get')
,
getAppVersion: () => {
try {
const pkg = fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8');
const obj = JSON.parse(pkg);
return obj.version || null;
} catch (e) {
console.error('preload.getAppVersion error', e);
return null;
}
}
});