diff --git a/src/menu.js b/src/menu.js index 0b2bc1e7..a2b8b75b 100644 --- a/src/menu.js +++ b/src/menu.js @@ -20,7 +20,6 @@ const setting = isRenderer : nativeRequire('./setting') exports.get = function (props = {}) { - let toggleSetting = (key) => setting.set(key, !setting.get(key)) let selectTool = (tool) => ( sabaki.setMode('edit'), sabaki.setState({selectedTool: tool}) @@ -463,7 +462,7 @@ exports.get = function (props = {}) { type: 'checkbox', checked: !!showLeftSidebar, click: () => { - toggleSetting('view.show_leftsidebar') + setting.toggle('view.show_leftsidebar') sabaki.setState(({showLeftSidebar}) => ({ showLeftSidebar: !showLeftSidebar, })) @@ -570,7 +569,7 @@ exports.get = function (props = {}) { submenu: [ { label: i18n.t('menu.view', 'Toggle Menu &Bar'), - click: () => toggleSetting('view.show_menubar'), + click: () => setting.toggle('view.show_menubar'), }, { label: i18n.t('menu.view', 'Toggle &Full Screen'), @@ -588,7 +587,7 @@ exports.get = function (props = {}) { accelerator: 'CmdOrCtrl+Shift+C', type: 'checkbox', checked: !showCoordinates, - click: () => toggleSetting('view.show_coordinates'), + click: () => setting.toggle('view.show_coordinates'), }, {type: 'separator'}, { @@ -624,25 +623,25 @@ exports.get = function (props = {}) { label: i18n.t('menu.view', 'Show Move N&umbers'), type: 'checkbox', checked: !!showMoveNumbers, - click: () => toggleSetting('view.show_move_numbers'), + click: () => setting.toggle('view.show_move_numbers'), }, { label: i18n.t('menu.view', 'Show Move Colori&zation'), type: 'checkbox', checked: !!showMoveColorization, - click: () => toggleSetting('view.show_move_colorization'), + click: () => setting.toggle('view.show_move_colorization'), }, { label: i18n.t('menu.view', 'Show &Next Moves'), type: 'checkbox', checked: !!showNextMoves, - click: () => toggleSetting('view.show_next_moves'), + click: () => setting.toggle('view.show_next_moves'), }, { label: i18n.t('menu.view', 'Show &Sibling Variations'), type: 'checkbox', checked: !!showSiblings, - click: () => toggleSetting('view.show_siblings'), + click: () => setting.toggle('view.show_siblings'), }, { label: i18n.t('menu.view', 'Show &Heatmap'), @@ -652,7 +651,7 @@ exports.get = function (props = {}) { type: 'checkbox', checked: !showAnalysis, accelerator: 'CmdOrCtrl+H', - click: () => toggleSetting('board.show_analysis'), + click: () => setting.toggle('board.show_analysis'), }, {type: 'separator'}, { @@ -694,7 +693,7 @@ exports.get = function (props = {}) { checked: !!showWinrateGraph, enabled: !!showGameGraph || !!showCommentBox, click: () => { - toggleSetting('view.show_winrategraph') + setting.toggle('view.show_winrategraph') sabaki.setState(({showWinrateGraph}) => ({ showWinrateGraph: !showWinrateGraph, })) @@ -706,7 +705,7 @@ exports.get = function (props = {}) { checked: !!showGameGraph, accelerator: 'CmdOrCtrl+T', click: () => { - toggleSetting('view.show_graph') + setting.toggle('view.show_graph') sabaki.setState(({showGameGraph}) => ({ showGameGraph: !showGameGraph, })) @@ -718,7 +717,7 @@ exports.get = function (props = {}) { checked: !!showCommentBox, accelerator: 'CmdOrCtrl+Shift+T', click: () => { - toggleSetting('view.show_comments') + setting.toggle('view.show_comments') sabaki.setState(({showCommentBox}) => ({ showCommentBox: !showCommentBox, })) diff --git a/src/modules/sabaki.js b/src/modules/sabaki.js index 1290801b..d4a6793c 100644 --- a/src/modules/sabaki.js +++ b/src/modules/sabaki.js @@ -2724,6 +2724,8 @@ class Sabaki extends EventEmitter { // Menus openNodeMenu(treePosition, {x, y} = {}) { + let commentMenu = this.getCommentMenuTemplate(treePosition) + let t = i18n.context('menu.edit') let template = [ { @@ -2764,12 +2766,33 @@ class Sabaki extends EventEmitter { label: t('Remove &Other Variations'), click: () => this.removeOtherVariations(treePosition), }, + {type: 'separator'}, + { + label: t('Toggle Show Comments'), + click: () => { + setting.toggle('view.show_comments') + this.setState(({showCommentBox}) => ({ + showCommentBox: !showCommentBox, + })) + }, + }, + {type: 'separator'}, + { + label: t('Annotate'), + submenu: commentMenu, + }, ] helper.popupMenu(template, x, y) } openCommentMenu(treePosition, {x, y} = {}) { + let template = this.getCommentMenuTemplate(treePosition) + + helper.popupMenu(template, x, y) + } + + getCommentMenuTemplate(treePosition) { let t = i18n.context('menu.comment') let node = this.inferredState.gameTree.get(treePosition) @@ -2853,7 +2876,7 @@ class Sabaki extends EventEmitter { item.click = () => this.setComment(treePosition, item.data) } - helper.popupMenu(template, x, y) + return template } openVariationMenu( diff --git a/src/setting.js b/src/setting.js index 632a1745..487905a4 100644 --- a/src/setting.js +++ b/src/setting.js @@ -327,17 +327,21 @@ exports.save = function () { return exports } -exports.get = function (key) { +let get = (exports.get = function (key) { if (key in settings) return settings[key] if (key in defaults) return defaults[key] return null -} +}) -exports.set = function (key, value) { +let set = (exports.set = function (key, value) { settings[key] = value exports.save() exports.events.emit('change', {key, value}) return exports +}) + +exports.toggle = function (key) { + set(key, !get(key)) } exports.getThemes = function () {