several fixes + custom keyboard action help getter...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-01-04 20:27:47 +03:00
parent 4617fe512b
commit f09fae92e1
2 changed files with 19 additions and 6 deletions

View File

@ -536,13 +536,18 @@ var KeyboardActions = actions.Actions({
//
getKeysForAction: ['- Interface/',
function(actions){
actions = arguments.length == null || actions == '*' ? this.actions
actions = arguments.length == 0 || actions == '*' ? this.actions
: arguments.length > 1 ? [].slice.call(arguments)
: actions
actions = actions instanceof Array ? actions : [actions]
var paths = this.getPath(actions)
var help = keyboard.buildKeybindingsHelp(this.keyboard, null, this)
var help = keyboard.buildKeybindingsHelp(
this.keyboard,
null,
this,
function(action){
return Object.keys(this.getPath(action))[0] })
var res = {}
@ -572,7 +577,11 @@ var KeyboardActions = actions.Actions({
showKeyboardBindings: ['Interface/Show keyboard bindings...',
widgets.makeUIDialog('Drawer',
function(){
return keyboard.buildKeybindingsHelpHTML(this.__keyboard_config, this)
return keyboard.buildKeybindingsHelpHTML(
this.__keyboard_config,
this,
function(action){
return Object.keys(this.getPath(action))[0] })
},
{
background: 'white',

View File

@ -810,7 +810,7 @@ function makeKeyboardHandler(keybindings, unhandled, actions){
// XXX do we show overloaded keys???
var buildKeybindingsHelp =
module.buildKeybindingsHelp =
function buildKeybindingsHelp(keybindings, shifted_keys, actions){
function buildKeybindingsHelp(keybindings, shifted_keys, actions, doc_getter){
shifted_keys = shifted_keys == null ? _SHIFT_KEYS : shifted_keys
var res = {}
var mode, title
@ -861,6 +861,10 @@ function buildKeybindingsHelp(keybindings, shifted_keys, actions){
var doc = 'Ignored'
//continue
// custom doc getter...
} else if(doc_getter && handler.action){
var doc = doc_getter.call(actions, handler.action)
// standard object doc...
} else if('doc' in handler){
var doc = handler.doc
@ -967,8 +971,8 @@ function getKeysByDoc(doc, help){
//
var buildKeybindingsHelpHTML =
module.buildKeybindingsHelpHTML =
function buildKeybindingsHelpHTML(keybindings, actions){
var doc = buildKeybindingsHelp(keybindings, null, actions)
function buildKeybindingsHelpHTML(keybindings, actions, doc_getter){
var doc = buildKeybindingsHelp(keybindings, null, actions, doc_getter)
var res = '<table class="keyboard-help">'
for(var mode in doc){