preload.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. console.log('Preload script loaded');
  2. const {contextBridge, ipcRenderer} = require('electron');
  3. contextBridge.exposeInMainWorld('electronAPI', {
  4. openFileManager: async () => {
  5. try {
  6. const result = await ipcRenderer.invoke('dialog:open');
  7. return result;
  8. } catch (error) {
  9. console.error('打开文件管理器时出错:', error);
  10. throw error;
  11. }
  12. },
  13. downloadFile: async (url, fileName, savePath, overwriteFlag, dialogFlag, requestType, data) => {
  14. try {
  15. return await ipcRenderer.invoke('download-file', { url, fileName, savePath, overwriteFlag, dialogFlag, requestType, data });
  16. } catch (error) {
  17. console.error('下载文件时出错:', error);
  18. return { success: false, error: error.message };
  19. }
  20. },
  21. deleteFile: (fileName, savePath) => ipcRenderer.send('delete-file', {fileName, savePath}),
  22. onDeleteFileResponse: (callback) => ipcRenderer.once('delete-file-response', callback),
  23. uploadFile: async (filePath, uploadUrl) => ipcRenderer.send('upload-file', {filePath, uploadUrl}),
  24. onUploadFileResponse: (callback) => ipcRenderer.once('upload-file-response', callback),
  25. // dockerImport 函数现在接受两个参数:filePath 和 tag
  26. dockerImport: (filePath, tag) => {
  27. console.log('docker导入算法镜像文件:', filePath, '本地镜像版本:', tag);
  28. // 发送事件到主进程,并带上文件路径和文件名作为参数
  29. ipcRenderer.send('docker-import', filePath, tag);
  30. },
  31. onDockerImportResponse: (callback) => ipcRenderer.once('docker-import-response', callback),
  32. runSimulation: async (random_flag, count, obstacle_flag, default_start_flag, default_end_flag, start_point, end_point) => {
  33. // 异步
  34. ipcRenderer.send('run-simulation', {random_flag, count, obstacle_flag, default_start_flag, default_end_flag, start_point, end_point});
  35. // 同步
  36. // try {
  37. // const result = ipcRenderer.invoke('run-simulation', {obstacle_flag, default_start_flag, default_end_flag, start_point, end_point});
  38. // return result;
  39. // } catch (error) {
  40. // console.error('执行仿真测试出错:', error);
  41. // throw error;
  42. // }
  43. },
  44. onRunSimulationResponse: (callback) => ipcRenderer.once('run-simulation-response', callback),
  45. generateWorld: (rosbag_path) => {
  46. // 发送事件到主进程
  47. ipcRenderer.send('generate-world', {rosbag_path});
  48. },
  49. onGenerateWorldResponse: (callback) => ipcRenderer.once('generate-world-response', callback),
  50. startContainer: (zip_file_path, image_name, container_name) => {
  51. // 发送事件到主进程
  52. ipcRenderer.send('start-container', {zip_file_path, image_name, container_name});
  53. },
  54. onStartContainerResponse: (callback) => ipcRenderer.once('start-container-response', callback),
  55. processEvaluationFiles: async (N, equipmentNo, sceneNo) => {
  56. return await ipcRenderer.invoke('process-evaluation-files', {N, equipmentNo, sceneNo});
  57. },
  58. });