0
点赞
收藏
分享

微信扫一扫

设置窗口菜单

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

 })

举报

相关推荐

0 条评论