doc + now new/edited kb items should be selected after edit in kb editor (+/- a known bug, see code)...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-01-25 07:38:38 +03:00
parent fb23c7bc27
commit 7f91b64360
2 changed files with 117 additions and 12 deletions

View File

@ -358,7 +358,7 @@ module.Util = ImageGridFeatures.Feature({
// //
// Example: // Example:
// someAction: ['Test/Some action title', // someAction: ['Test/Some action title',
// doc`This is an example... // core.doc`This is an example...
// mult-iline... // mult-iline...
// ...doc string that will be normalized and look the same but` // ...doc string that will be normalized and look the same but`
// without the indent...`, // without the indent...`,

View File

@ -396,6 +396,7 @@ module.GLOBAL_KEYBOARD = {
// XXX experimenting with new style of doc strings, usable from the // XXX experimenting with new style of doc strings, usable from the
// system... (for details see: core.doc) // system... (for details see: core.doc)
// XXX need a clean deep copy to restore...
var KeyboardActions = actions.Actions({ var KeyboardActions = actions.Actions({
config: { config: {
// Sets the target element to which the keyboard event handler // Sets the target element to which the keyboard event handler
@ -487,6 +488,84 @@ var KeyboardActions = actions.Actions({
function(){ function(){
thiis.__keyboard_config = GLOBAL_KEYBOARD }], thiis.__keyboard_config = GLOBAL_KEYBOARD }],
keyHandler: ['- Interface/Get or set key handler', keyHandler: ['- Interface/Get or set key handler',
// XXX this is essentially a copy of the docs for keyboard.handler(..),
// find a way to reuse...
core.doc`Get/set/unset handler for key...
In general if handler is not passed this will get the handlers,
if a handler is given this will set the handler, if the passed
handler is either null or '' then it will be unbound.
Get handler for key in all modes...
.keyHandler(<key>)
.keyHandler('*', <key>)
-> <info>
Get handlers for key in applicable modes...
.keyHandler('?', <key>)
.keyHandler('test', <key>)
-> <info>
Get handler for key in a specific mode...
.keyHandler(<mode>, <key>)
-> <info>
Get handler for key in a specific list of modes...
.keyHandler([ <mode>, .. ], <key>)
-> <info>
Bind handler to key in specific mode...
.keyHandler(mode, key, handler)
-> this
Bind handler to key in all modes...
.keyHandler('*', key, handler)
-> this
Bind handler to key in applicable modes...
.keyHandler('?', key, handler)
.keyHandler('test', key, handler)
-> this
Bind handler to key in a specific list of modes...
.keyHandler([mode, ..], key, handler)
-> this
Unbind handler from key in specific mode...
.keyHandler(mode, key, null)
.keyHandler(mode, key, '')
-> this
Unbind handler from key in all modes...
.keyHandler('*', key, null)
.keyHandler('*', key, '')
-> this
Unbind handler from key in applicable modes...
.keyHandler('?', key, null)
.keyHandler('?', key, '')
.keyHandler('test', key, null)
.keyHandler('test', key, '')
-> this
Unbind handler from key in a specific list of modes...
.keyHandler([mode, ..], key, null)
.keyHandler([mode, ..], key, '')
-> this
<info> format:
{
<mode>: <handler>,
...
}
NOTE: this is essentially aproxy to .keyboard.handler(..) for
more info see its docs.
`,
function(mode, key, action){ function(mode, key, action){
var res = this.keyboard.handler(mode, key, action) var res = this.keyboard.handler(mode, key, action)
// return res only if we get a handler... // return res only if we get a handler...
@ -743,14 +822,13 @@ module.Keyboard = core.ImageGridFeatures.Feature({
var KeyboardUIActions = actions.Actions({ var KeyboardUIActions = actions.Actions({
config: { config: {
// NOTE: this is defined in ui-dialogs // NOTE: this is defined in ui-dialogs feature...
//'ui-confirm-timeout': 2000, //'ui-confirm-timeout': 2000,
}, },
// Interface stuff ------------------------------------------------
// XXX BUG sections with doc do not show up in title... // XXX BUG sections with doc do not show up in title...
// XXX BUG: for some reason modes are unclickable... // XXX BUG: for some reason modes are not clickable and not selected
// XXX slow on update... // via .select(..) with pattern...
// XXX sub-group by path (???) // XXX sub-group by path (???)
browseKeyboardBindings: ['Help/Keyboard bindings...', browseKeyboardBindings: ['Help/Keyboard bindings...',
core.doc`Keyboard bindings viewer... core.doc`Keyboard bindings viewer...
@ -1015,6 +1093,7 @@ var KeyboardUIActions = actions.Actions({
For more details see: .browseKeyboardBindings(..)`, For more details see: .browseKeyboardBindings(..)`,
widgets.uiDialog(function(path){ widgets.uiDialog(function(path){
var that = this var that = this
var to_select
var sortModes = function(list){ var sortModes = function(list){
that.keyboard.sortModes( that.keyboard.sortModes(
@ -1071,19 +1150,26 @@ var KeyboardUIActions = actions.Actions({
// XXX make this work on click... // XXX make this work on click...
// XXX focus resulting mode... // XXX focus resulting mode...
['&ctdot;', function(_, cur){ ['&ctdot;', function(_, cur){
that.editKeyboardMode(cur.attr('mode')) that.editKeyboardMode(
cur.attr('mode'),
function(e){ to_select = e })
.close(function(){ dialog.update() }) }], .close(function(){ dialog.update() }) }],
], ],
mode_actions: [ mode_actions: [
// XXX focus resulting key... // XXX focus resulting key...
['key', function(_, cur){ ['key', function(_, cur){
that.editKeyBinding(cur.attr('mode')) that.editKeyBinding(
cur.attr('mode'),
null,
function(e){ to_select = e })
.close(function(){ dialog.update() }) }], .close(function(){ dialog.update() }) }],
// XXX place element... // XXX place element...
// XXX focus resulting mode... // XXX focus resulting mode...
['mode', function(_, cur){ ['mode', function(_, cur){
// XXX need to pass order info... // XXX need to pass order info...
that.editKeyboardMode() that.editKeyboardMode(
null,
function(e){ to_select = e })
.close(function(){ dialog.update() }) }], .close(function(){ dialog.update() }) }],
], ],
}) })
@ -1096,13 +1182,19 @@ var KeyboardUIActions = actions.Actions({
// key... // key...
if(cur.hasClass('key')){ if(cur.hasClass('key')){
sub_dialog = that sub_dialog = that
.editKeyBinding(cur.attr('mode'), cur.attr('code')) .editKeyBinding(
cur.attr('mode'),
cur.attr('code'),
function(e){ to_select = e })
// mode... // mode...
// XXX BUG: for some reason modes are unclickable... // XXX BUG: for some reason modes are unclickable...
} else if(cur.hasClass('mode')){ } else if(cur.hasClass('mode')){
sub_dialog = that sub_dialog = that
.editKeyboardMode(cur.attr('mode')) .editKeyboardMode(
cur.attr('mode'),
null,
function(e){ to_select = e })
// dropped... // dropped...
} else if(cur.hasClass('drop-list')){ } else if(cur.hasClass('drop-list')){
@ -1114,11 +1206,18 @@ var KeyboardUIActions = actions.Actions({
&& sub_dialog && sub_dialog
.close(function(){ dialog.update() }) .close(function(){ dialog.update() })
}) })
// select updated/new items...
.on('update', function(){
to_select
// XXX this does not work for modes...
&& dialog.select(to_select)
to_select = null
})
return dialog return dialog
})], })],
// XXX add action completion... // XXX add action completion...
editKeyBinding: ['- Interface/Key mapping...', editKeyBinding: ['- Interface/Key mapping...',
widgets.makeUIDialog(function(mode, code){ widgets.makeUIDialog(function(mode, code, callback){
var that = this var that = this
var abort = false var abort = false
var orig_code = code var orig_code = code
@ -1222,12 +1321,15 @@ var KeyboardUIActions = actions.Actions({
new_keys new_keys
.forEach(function(k){ .forEach(function(k){
that.keyHandler(mode, k, code) }) that.keyHandler(mode, k, code) })
callback
&& callback.call(that, code)
}) })
return dialog return dialog
})], })],
editKeyboardMode: ['- Interface/Mode...', editKeyboardMode: ['- Interface/Mode...',
widgets.makeUIDialog(function(mode){ widgets.makeUIDialog(function(mode, callback){
var that = this var that = this
var abort = false var abort = false
var doc = (that.keybindings[mode] || {}).doc var doc = (that.keybindings[mode] || {}).doc
@ -1295,6 +1397,9 @@ var KeyboardUIActions = actions.Actions({
that.keyboard.sortModes(order) that.keyboard.sortModes(order)
} }
callback
&& callback.call(that, mode)
}) })
return dialog return dialog