设置窗口菜单

 
   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
  })
posted @ 2022-02-06 15:28  13522679763-任国强  阅读(61)  评论(0)    收藏  举报