preload.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. console.log('Preload script loaded');
  2. const {contextBridge, ipcRenderer} = require('electron');
  3. contextBridge.exposeInMainWorld('electronAPI', {
  4. openGazebo: () => {
  5. console.log('打开 gazebo');
  6. ipcRenderer.send('open-gazebo');
  7. },
  8. openRviz: () => {
  9. console.log('打开 rviz');
  10. ipcRenderer.send('open-rviz');
  11. },
  12. closeGazebo: () => {
  13. console.log('关闭 gazebo');
  14. ipcRenderer.send('close-gazebo');
  15. },
  16. closeRviz: () => {
  17. console.log('关闭 rviz');
  18. ipcRenderer.send('close-rviz');
  19. },
  20. openFileManager: async () => {
  21. try {
  22. const result = await ipcRenderer.invoke('dialog:open');
  23. return result;
  24. } catch (error) {
  25. console.error('打开文件管理器时出错:', error);
  26. throw error;
  27. }
  28. },
  29. // dockerImport 函数现在接受两个参数:filePath 和 tag
  30. dockerImport: (filePath, tag) => {
  31. console.log('docker导入算法镜像文件:', filePath, '本地镜像版本:', tag);
  32. // 发送事件到主进程,并带上文件路径和文件名作为参数
  33. ipcRenderer.send('docker-import', filePath, tag);
  34. },
  35. onDockerImportResponse: (callback) => ipcRenderer.on('docker-import-response', callback),
  36. generateWorld: (rosbag_path) => {
  37. // 发送事件到主进程
  38. ipcRenderer.send('generate-world', {rosbag_path});
  39. },
  40. onGenerateWorldResponse: (callback) => ipcRenderer.on('generate-world-result', callback),
  41. startContainer: (zip_file_path, image_name, container_name) => {
  42. // 发送事件到主进程
  43. ipcRenderer.send('start-container', {zip_file_path, image_name, container_name});
  44. },
  45. onStartContainerResponse: (callback) => ipcRenderer.on('start-container-result', callback),
  46. downloadFile: async (url, fileName, savePath, overwriteFlag) => {
  47. try {
  48. return await ipcRenderer.invoke('download-file', { url, fileName, savePath, overwriteFlag });
  49. } catch (error) {
  50. console.error('下载文件时出错:', error);
  51. return { success: false, error: error.message };
  52. }
  53. },
  54. deleteFile: (fileName, savePath) => ipcRenderer.send('delete-file', {fileName, savePath}),
  55. onDeleteFileResponse: (callback) => ipcRenderer.on('delete-file-response', callback),
  56. });