84 lines
3.9 KiB
TypeScript
84 lines
3.9 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron'
|
|
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
console.log('预加载脚本已加载')
|
|
})
|
|
|
|
// 暴露安全的 API 给渲染进程
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
openDevTools: () => ipcRenderer.invoke('open-dev-tools'),
|
|
selectFolder: () => ipcRenderer.invoke('select-folder'),
|
|
selectFile: (filters?: any[]) => ipcRenderer.invoke('select-file', filters),
|
|
openUrl: (url: string) => ipcRenderer.invoke('open-url', url),
|
|
|
|
// 窗口控制
|
|
windowMinimize: () => ipcRenderer.invoke('window-minimize'),
|
|
windowMaximize: () => ipcRenderer.invoke('window-maximize'),
|
|
windowClose: () => ipcRenderer.invoke('window-close'),
|
|
windowIsMaximized: () => ipcRenderer.invoke('window-is-maximized'),
|
|
appQuit: () => ipcRenderer.invoke('app-quit'),
|
|
|
|
// 进程管理
|
|
getRelatedProcesses: () => ipcRenderer.invoke('get-related-processes'),
|
|
killAllProcesses: () => ipcRenderer.invoke('kill-all-processes'),
|
|
forceExit: () => ipcRenderer.invoke('force-exit'),
|
|
|
|
// 初始化相关API
|
|
checkEnvironment: () => ipcRenderer.invoke('check-environment'),
|
|
checkCriticalFiles: () => ipcRenderer.invoke('check-critical-files'),
|
|
downloadPython: (mirror?: string) => ipcRenderer.invoke('download-python', mirror),
|
|
installPip: () => ipcRenderer.invoke('install-pip'),
|
|
downloadGit: () => ipcRenderer.invoke('download-git'),
|
|
checkGitUpdate: () => ipcRenderer.invoke('check-git-update'),
|
|
installDependencies: (mirror?: string) => ipcRenderer.invoke('install-dependencies', mirror),
|
|
cloneBackend: (repoUrl?: string) => ipcRenderer.invoke('clone-backend', repoUrl),
|
|
updateBackend: (repoUrl?: string) => ipcRenderer.invoke('update-backend', repoUrl),
|
|
startBackend: () => ipcRenderer.invoke('start-backend'),
|
|
stopBackend: () => ipcRenderer.invoke('stop-backend'),
|
|
|
|
// 管理员权限相关
|
|
checkAdmin: () => ipcRenderer.invoke('check-admin'),
|
|
restartAsAdmin: () => ipcRenderer.invoke('restart-as-admin'),
|
|
|
|
// 配置文件操作
|
|
saveConfig: (config: any) => ipcRenderer.invoke('save-config', config),
|
|
loadConfig: () => ipcRenderer.invoke('load-config'),
|
|
resetConfig: () => ipcRenderer.invoke('reset-config'),
|
|
|
|
// 托盘设置实时更新
|
|
updateTraySettings: (uiSettings: any) => ipcRenderer.invoke('update-tray-settings', uiSettings),
|
|
|
|
// 日志文件操作
|
|
getLogPath: () => ipcRenderer.invoke('get-log-path'),
|
|
getLogFiles: () => ipcRenderer.invoke('get-log-files'),
|
|
getLogs: (lines?: number, fileName?: string) => ipcRenderer.invoke('get-logs', lines, fileName),
|
|
clearLogs: (fileName?: string) => ipcRenderer.invoke('clear-logs', fileName),
|
|
cleanOldLogs: (daysToKeep?: number) => ipcRenderer.invoke('clean-old-logs', daysToKeep),
|
|
|
|
// 保留原有方法以兼容现有代码
|
|
saveLogsToFile: (logs: string) => ipcRenderer.invoke('save-logs-to-file', logs),
|
|
loadLogsFromFile: () => ipcRenderer.invoke('load-logs-from-file'),
|
|
|
|
// 文件系统操作
|
|
openFile: (filePath: string) => ipcRenderer.invoke('open-file', filePath),
|
|
showItemInFolder: (filePath: string) => ipcRenderer.invoke('show-item-in-folder', filePath),
|
|
|
|
// 对话框相关
|
|
showQuestionDialog: (questionData: any) => ipcRenderer.invoke('show-question-dialog', questionData),
|
|
dialogResponse: (messageId: string, choice: boolean) => ipcRenderer.invoke('dialog-response', messageId, choice),
|
|
resizeDialogWindow: (height: number) => ipcRenderer.invoke('resize-dialog-window', height),
|
|
moveWindow: (deltaX: number, deltaY: number) => ipcRenderer.invoke('move-window', deltaX, deltaY),
|
|
|
|
// 主题信息获取
|
|
getThemeInfo: () => ipcRenderer.invoke('get-theme-info'),
|
|
getTheme: () => ipcRenderer.invoke('get-theme'),
|
|
|
|
// 监听下载进度
|
|
onDownloadProgress: (callback: (progress: any) => void) => {
|
|
ipcRenderer.on('download-progress', (_, progress) => callback(progress))
|
|
},
|
|
removeDownloadProgressListener: () => {
|
|
ipcRenderer.removeAllListeners('download-progress')
|
|
},
|
|
})
|