feat(menu): add support for custom menu (#118)

feat(menu): add support for custom menu
This commit is contained in:
André Neves 2019-05-27 15:03:31 -04:00 committed by GitHub
commit f31fd928d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 170 additions and 81 deletions

78
app/menu.js Normal file
View File

@ -0,0 +1,78 @@
// @flow
import { openExternal } from './utils/open-external';
import packageJson from '../package.json';
const DOCS_URL = 'https://zepiowallet.com/';
const REPOSITORY_URL = 'https://github.com/ZcashFoundation/zepio/issues';
const menu = [
{
label: 'Edit',
submenu: [
{ role: 'undo' },
{ role: 'redo' },
{ type: 'separator' },
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },
{ role: 'delete' },
{ role: 'selectall' },
],
},
{
label: 'View',
submenu: [
{ role: 'togglefullscreen' },
],
},
];
const helpMenu = {
role: 'help',
submenu: [
{
label: `v${packageJson.version}`,
enabled: false,
},
{ type: 'separator' },
{
label: 'Help / FAQ',
click() {
openExternal(DOCS_URL);
},
},
{
label: 'Report a Bug',
click() {
openExternal(REPOSITORY_URL);
},
},
],
};
if (process.platform === 'darwin') {
menu.unshift({
label: packageJson.name,
submenu: [
{ role: 'about' },
{ type: 'separator' },
{ role: 'hide' },
{ role: 'hideothers' },
{ role: 'unhide' },
{ type: 'separator' },
{ role: 'quit' },
],
});
menu.push({
...helpMenu,
submenu: [
...helpMenu.submenu,
],
});
} else {
menu.push(helpMenu);
}
export const MENU = menu;

View File

@ -6,7 +6,9 @@ import dotenv from 'dotenv';
import path from 'path';
/* eslint-disable import/no-extraneous-dependencies */
import { app, BrowserWindow, typeof BrowserWindow as BrowserWindowType } from 'electron';
import {
app, BrowserWindow, typeof BrowserWindow as BrowserWindowType, Menu,
} from 'electron';
import { autoUpdater } from 'electron-updater';
import isDev from 'electron-is-dev';
import { registerDebugShortcut } from '../utils/debug-shortcut';
@ -15,6 +17,7 @@ import { log as zcashLog, cleanLogs } from './daemon/logger';
import getZecPrice from '../services/zec-price';
import store from './electron-store';
import { handleDeeplink } from './handle-deeplink';
import { MENU } from '../app/menu';
dotenv.config();
@ -62,8 +65,7 @@ const createWindow = () => {
frame: true,
resizable: true,
webPreferences: {
devTools: true,
// devTools: false,
devTools: false,
webSecurity: true,
},
});
@ -77,6 +79,8 @@ const createWindow = () => {
isDev ? 'http://localhost:8080/' : `file://${path.join(__dirname, '../build/index.html')}`,
);
Menu.setApplicationMenu(Menu.buildFromTemplate(MENU));
exports.app = app;
exports.mainWindow = mainWindow;
};

View File

@ -1,10 +1,23 @@
{
"name": "zepio",
"productName": "Zepio",
"version": "0.6.2",
"description": "Zepio",
"description": "Zepio | Cross-platform sapling-enabled full-node Zcash wallet",
"main": "config/main.js",
"license": "MIT",
"homepage": "https://zepiowallet.com",
"license": "MIT",
"author": {
"name": "André Neves",
"email": "andrerfneves@protonmail.com",
"url": "https://andrenev.es"
},
"bugs": {
"url": "https://github.com/ZcashFoundation/zepio/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ZcashFoundation/zepio"
},
"scripts": {
"start": "yarn check --integrity && concurrently \"cross-env BROWSER=none yarn dev\" \"wait-on http://0.0.0.0:8080 && yarn electron:dev\"",
"dev": "webpack-dev-server --config config/webpack-dev.config.js --mode development --open --hot",
@ -32,12 +45,77 @@
"e2e:serve": "node -r @babel/register ./__tests__/setup/mockAPI.js",
"e2e:run": "yarn test e2e"
},
"author": {
"name": "André Neves",
"email": "andrerfneves@protonmail.com",
"url": "https://andrenev.es"
"pre-commit": [
"flow:generate-coverage-badge",
"lint:precommit",
"flow:precommit"
],
"build": {
"appId": "com.zcashfoundation",
"productName": "Zepio",
"asar": true,
"directories": {
"buildResources": "build",
"output": "dist"
},
"files": [
"node_modules/",
"services/",
"config/",
"utils/",
"app/",
"bin/",
"public/",
"build/"
],
"extraFiles": [
{
"from": "bin/",
"to": "resources/bin",
"filter": [
"**/*"
]
}
],
"linux": {
"icon": "./build/icons/png",
"target": [
"deb"
]
},
"mac": {
"category": "public.app-category.productivity",
"type": "distribution",
"target": [
"dmg"
],
"icon": "./build/icons/mac/icon.icns"
},
"win": {
"target": "nsis",
"icon": "./build/icons/win/icon.ico"
},
"protocols": {
"name": "zcash",
"schemes": [
"zcash"
]
}
},
"jest": {
"setupFilesAfterEnv": [
"<rootDir>/__tests__/setup/jest.js"
],
"testPathIgnorePatterns": [
"<rootDir>/__tests__/setup/"
],
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__tests__/setup/assetTransformer.js"
}
},
"resolutions": {
"babel-core": "7.0.0-bridge.0"
},
"private": true,
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
@ -135,76 +213,5 @@
"styled-components": "^4.1.1",
"styled-theming": "^2.2.0",
"uuid": "^3.3.2"
},
"pre-commit": [
"flow:generate-coverage-badge",
"lint:precommit",
"flow:precommit"
],
"build": {
"appId": "com.zcashfoundation",
"productName": "Zepio",
"asar": true,
"directories": {
"buildResources": "build",
"output": "dist"
},
"files": [
"node_modules/",
"services/",
"config/",
"utils/",
"app/",
"bin/",
"public/",
"build/"
],
"extraFiles": [
{
"from": "bin/",
"to": "resources/bin",
"filter": [
"**/*"
]
}
],
"linux": {
"icon": "./build/icons/png",
"target": [
"deb"
]
},
"mac": {
"category": "public.app-category.productivity",
"type": "distribution",
"target": [
"dmg"
],
"icon": "./build/icons/mac/icon.icns"
},
"win": {
"target": "nsis",
"icon": "./build/icons/win/icon.ico"
},
"protocols": {
"name": "zcash",
"schemes": [
"zcash"
]
}
},
"jest": {
"setupFilesAfterEnv": [
"<rootDir>/__tests__/setup/jest.js"
],
"testPathIgnorePatterns": [
"<rootDir>/__tests__/setup/"
],
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__tests__/setup/assetTransformer.js"
}
},
"resolutions": {
"babel-core": "7.0.0-bridge.0"
}
}