eric-share
 
   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
  })

分类:

技术点:

相关文章:

  • 2021-11-04
  • 2021-09-16
  • 2021-07-21
  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2022-02-20
  • 2022-01-28
猜你喜欢
  • 2021-10-19
  • 2021-10-28
  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2021-08-02
相关资源
相似解决方案