设置窗口菜单

     const {app,shell } = require('electron')

 

let template = [     {         label:'文件',         submenu:[             {                 label:'新建',                 accelerator:'CmdOrCtrl+N',                 click:(menuItem,browserWindow,event) => {                     browserWindow.webContents.send('create-new-file')                 }             },             {                 label:'保存',                 accelerator:'CmdOrCtrl+S',                 click:(menuItem,browserWindow,event) => {                     browserWindow.webContents.send('create-edit-file')                 }             },             {                 label:'搜索',                 accelerator:'CmdOrCtrl+F',                 click:(menuItem,browserWindow,event) => {                     browserWindow.webContents.send('search-file')                 }             },             {                 label:'导入',                 accelerator:'CmdOrCtrl+O',                 click:(menuItem,browserWindow,event) => {                     browserWindow.webContents.send('import-file')                 }             },         ]     },     {         label:'编辑',         submenu:[             {                 label:'撤销',                 accelerator:'CmdOrCtrl+Z',                 role:'undo'             },             {                 label:'重做',                 accelerator:'Shift+CmdOrCtrl+Z',                 role:'undo'             },             {                 type:'separator'             },             {                 label:'剪贴',                 accelerator:'CmdOrCtrl+X',                 role:'cut'             },             {                 label:'复制',                 accelerator:'CmdOrCtrl+C',                 role:'copy'             },             {                 label:'粘贴',                 accelerator:'CmdOrCtrl+V',                 role:'paste'             },             {                 label:'全选',                 accelerator:'CmdOrCtrl+A',                 role:'selectall'             },         ]     },     {         label:'视图',         submenu:[             {                 label:'刷新当前页面',                 accelerator:'CmdOrCtrl+R',                 click:(item,focusedWindow) => {                     if(focusedWindow){                         focusedWindow.reload()                     }                 }             },             {                 label:'切换全屏幕',                 accelerator:(() => {                     if(process.platform === 'darwin'){                         return 'Ctrl+Command+F'                     }else{                         return 'F11'                     }                 })(),                 click:(item,focusedWindow) => {                     if(focusedWindow){                         focusedWindow.setFullScreen(!focusedWindow.isFullScreen())                     }                 }             },             {                 label:'切换开发者工具',                 accelerator:(function(){                     if(process.platform === 'darwin'){                         return 'A+Command+I'                     }else{                         return 'Ctrl + Shift + I'                     }                 })(),                 click:(item,focusedWindow) => {                     if(focusedWindow){                         focusedWindow.toggleDevTools()                     }                 }             }         ]     },     {         label:'窗口',         role:"window",         submenu:[             {                 label:'最小化',                 accelerator:'CmdOrCtrl+M',                 role:"minimize"             },             {                 label:'关闭',                 accelerator:'CmdOrCtrl+W',                 role:"close"             }         ]     },     {         label:'帮助',         role:"help",         submenu:[             {                 label:'学习更多',                click:() => {                    shell.openExternal('http://electron.atom.io')                }             }         ]     }, ]

 

if(process.platform === 'darwin'){     const name = app.getName()     template.unshift({         label:name,         submenu:[{             label: `关于${name}`,             role:"about"         },{             type:'separator'         },{             label:'设置',             accelerator:'Command+,',             click:() => {

 

            }         },{             label:'服务',             role:'services',             submenu:[],         },{             type:'separator'         },{             label: `隐藏${name}`,             accelerator:'Command+ H',             role:"hide"         },{             label: `隐藏其它`,             accelerator:'Command + Alt + H',             role:"hideotheres"           },{             label: `显示全部`,             role:"unhide"           },{             type:'separator'         },{             label: '退出',             accelerator:'Command + Q',             click: () => {                 app.quit()             }         }]     }) }

 

module.exports = template

 

const { app,BrowserWindow,Menu } = require('electron') const isDev = require('electron-is-dev')

 

const menuTemplate = require('./src/menuTemplate')     const menu = Menu.buildFromTemplate(menuTemplate)     Menu.setApplicationMenu(menu)



    ---监听点击的事件----      useEffect(()=>{     const callback = () => {       console.log('hello from menu');     }

 

    ipcRenderer.on('create-new-file',callback)     return () => {       ipcRenderer.removeListener('create-new-file',callback)     }

 

  })\

 

------------------ import { useEffect } from 'react'; const { ipcRenderer } = window.require('electron')

 

// const obj = { //     'create-file':()=>{} // }

 

const useIpcRenerer = (keyCallbackMap) => {     useEffect(()=>{         Object.keys(keyCallbackMap).forEach( key => {             ipcRenderer.on(key,keyCallbackMap[key])         })         return () => {             Object.keys(keyCallbackMap).forEach( key => {                 ipcRenderer.removeListener(key,keyCallbackMap[key])             })         }       }) }

 

export default useIpcRenerer

 

import useIpcRenerer from './hooks/useIpcRenderer';

 

  useIpcRenerer({     'create-new-file':createNewFile,     'import-file':importFiles,     'save-edit-file': saveCurrentFile   })
上一篇:继承是原型的继承


下一篇:laravel8.5与layuiadmin整合(12)