"label": "Develop",
"devTools": "Toggle developer tools",
"fullScreen": "Toggle full screen",
- "logFiles": "Show log files"
+ "logFiles": "Show log files",
+ "startMining": "⛏ Start mining",
+ "stopMining": "⛏ Stop mining"
},
"help": {
"label": "Help",
"label": "开发",
"devTools": "切换开发者工具",
"fullScreen": "切换全屏",
- "logFiles": "显示日志文件"
+ "logFiles": "显示日志文件",
+ "startMining": "⛏ 开启挖矿",
+ "stopMining": "⛏ 停止挖矿"
},
"help": {
"label": "帮助"
-const { Menu, app, shell } = require('electron')
+const { Menu, app, shell, ipcMain } = require('electron')
const settings = require('electron-settings')
global.language = settings.get('browserSetting.core.lang') || app.getLocale()
const i18n = require('../i18n.js')
log.error(error)
}
},
+ },{
+ type: 'separator'
+ },{
+ label: (global.mining.isMining) ? i18n.t('desktop.applicationMenu.develop.stopMining') : i18n.t('desktop.applicationMenu.develop.startMining'),
+ accelerator: 'CommandOrControl+Shift+M',
+ enabled: true,
+ click: (item, focusedWindow) => {
+ if (focusedWindow) {
+ if (global.mining.isMining) {
+ stopMining(focusedWindow)
+ } else {
+ startMining(focusedWindow)
+ }
+ }
+ }
})
menu.push({
return menu
}
-//
-// function findReopenMenuItem () {
-// const menu = Menu.getApplicationMenu()
-// if (!menu) return
-//
-// let reopenMenuItem
-// menu.items.forEach(item => {
-// if (item.submenu) {
-// item.submenu.items.forEach(item => {
-// if (item.key === 'reopenMenuItem') {
-// reopenMenuItem = item
-// }
-// })
-// }
-// })
-// return reopenMenuItem
-// }
+const startMining = (focusedWindow) => {
+ focusedWindow.webContents.send('mining', 'true')
+ global.mining.isMining = true
+ createMenu()
+}
+
+const stopMining = (focusedWindow) => {
+ focusedWindow.webContents.send('mining', 'false')
+ global.mining.isMining = false
+ createMenu()
+}
const createMenu = function () {
log.info('Create Menu')
Menu.setApplicationMenu(menu)
}
-
settings.watch('browserSetting.app.navAdvancedState', newValue => {
advNav = newValue
menu.items[2].submenu.items[1].checked = ( advNav === 'advance' )
})
})
+ipcMain.on('refresh-menu', function() {
+ createMenu()
+})
+
module.exports = createMenu()
let win, bytomdInit, bytomdMining
global.fileExist = false
+global.mining = {isMining: false}
function initialize () {
const bytomdDataPath = path.join(app.getPath('userData'), '/.bytomd')
function setBytomMining(event) {
- bytomdMining = spawn( `${bytomdPath}`, ['node', '--mining', '--home' , `${bytomdDataPath}`, '--web.closed'] )
+ bytomdMining = spawn( `${bytomdPath}`, ['node', '--home' , `${bytomdDataPath}`, '--web.closed'] )
bytomdMining.stdout.on('data', function(data) {
bytomdLog.info(`bytomd mining stdout: ${data}`)
this.props.updateConfiguredStatus()
}
})
+ window.ipcRenderer.on('mining', (event, arg) => {
+ let isMining = (arg == 'true')
+ this.props.updateMiningState(isMining)
+ })
}
}
}),
(dispatch) => ({
fetchInfo: options => dispatch(actions.core.fetchCoreInfo(options)),
+ updateMiningState: param => dispatch(actions.core.updateMiningState(param)),
showRoot: () => dispatch(actions.app.showRoot),
showConfiguration: () => dispatch(actions.app.showConfiguration()),
uptdateBtmAmountUnit: (param) => dispatch(actions.core.updateBTMAmountUnit(param)),
const mingStatus = (state = false, action) => {
if (action.type == 'UPDATE_CORE_INFO') {
+ if(window.remote && window.remote.getGlobal('mining').isMining!= action.param.data.mining){
+ window.remote.getGlobal('mining').isMining = action.param.data.mining
+ window.ipcRenderer.send('refresh-menu')
+ }
return action.param.data.mining
}
return state