目次
動作環境
Electron: 1.3.9
ウィンドウのメニューをカスタムしたい
良くホームページとかには、グローバルメニューのようにページを横断して移動できるリンクがあります。
Electronで作ったアプリでもグローバルメニュー付けたいなーと思っていたのですが、
せっかくアプリを作っているのですから、HTMLで記述するのでは無く、ウィンドウメニューに付けられないかなーと思い調べてみました。
公式のドキュメントにやり方が乗ってました。
■Menu
http://electron.atom.io/docs/api/menu/
という訳で実装してみます。
導入
'use strict'; // Electronのモジュール const electron = require("electron"); // アプリケーションをコントロールするモジュール const app = electron.app; const Menu = electron.Menu; // ウィンドウを作成するモジュール const BrowserWindow = electron.BrowserWindow; // メインウィンドウはGCされないようにグローバル宣言 let mainWindow; // 全てのウィンドウが閉じたら終了 app.on('window-all-closed', function() { if (process.platform != 'darwin') { app.quit(); } }); // Electronの初期化完了後に実行 app.on('ready', function() { // メイン画面の表示。ウィンドウの幅、高さを指定できる mainWindow = new BrowserWindow({width: 800, height: 600}); mainWindow.loadURL('https://www.kabanoki.net/'); // ウィンドウメニューをカスタマイズ initWindowMenu(); // ウィンドウが閉じられたらアプリも終了 mainWindow.on('closed', function() { mainWindow = null; }); }); function initWindowMenu(){ const template = [ { label: 'リンク', submenu: [ { label: 'トップ', click () { mainWindow.loadURL('https://www.kabanoki.net/'); } }, { label: 'Electron', click () { mainWindow.loadURL('https://www.kabanoki.net/category/electron'); } }, { label: 'Codeingter', click () { mainWindow.loadURL('https://www.kabanoki.net/category/codeingter'); } } ] }, { label: '外部リンク', submenu: [ { label: 'Google', click () { mainWindow.loadURL('https://www.google.co.jp/'); } }, { label: 'Yahoo', click () { mainWindow.loadURL('http://www.yahoo.co.jp/'); } }, { labal: 'カバの樹', click(item, window, event) { window.loadURL('https://www.kabanoki.net'); } } ] } ] const menu = Menu.buildFromTemplate(template) Menu.setApplicationMenu(menu) }
これで、Electronを起動すると
見事にメニューがカスタマイズできました。
今日はこの辺でー