mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 10:20:08 +00:00
more cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
664743a975
commit
17f4b7c448
@ -435,6 +435,7 @@ var KeyboardActions = actions.Actions({
|
|||||||
get keyboard(){
|
get keyboard(){
|
||||||
return this.__keyboard_object },
|
return this.__keyboard_object },
|
||||||
|
|
||||||
|
|
||||||
pauseKeyboardRepeat: ['- Interface/',
|
pauseKeyboardRepeat: ['- Interface/',
|
||||||
function(){
|
function(){
|
||||||
this.__keyboard_repeat_paused = true }],
|
this.__keyboard_repeat_paused = true }],
|
||||||
@ -558,6 +559,7 @@ var KeyboardActions = actions.Actions({
|
|||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// XXX this does not check overloading between modes...
|
// XXX this does not check overloading between modes...
|
||||||
|
// XXX do we need this???
|
||||||
getKeysForAction: ['- Interface/',
|
getKeysForAction: ['- Interface/',
|
||||||
function(actions, modes){
|
function(actions, modes){
|
||||||
var that = this
|
var that = this
|
||||||
@ -601,26 +603,6 @@ var KeyboardActions = actions.Actions({
|
|||||||
}],
|
}],
|
||||||
|
|
||||||
|
|
||||||
// XXX move to gen2
|
|
||||||
// XXX need to pre-process the docs...
|
|
||||||
// - remove the path component...
|
|
||||||
// - insert the action name where not doc present...
|
|
||||||
// XXX cleanup CSS
|
|
||||||
showKeyboardBindings: ['Interface/Show keyboard bindings...',
|
|
||||||
widgets.makeUIDialog('Drawer',
|
|
||||||
function(){
|
|
||||||
return keyboard.buildKeybindingsHelpHTML(
|
|
||||||
this.__keyboard_config,
|
|
||||||
this,
|
|
||||||
function(action){
|
|
||||||
return Object.keys(this.getPath(action))[0] })
|
|
||||||
},
|
|
||||||
{
|
|
||||||
background: 'white',
|
|
||||||
focusable: true,
|
|
||||||
})],
|
|
||||||
|
|
||||||
|
|
||||||
// XXX Things not to forget:
|
// XXX Things not to forget:
|
||||||
// * sort modes
|
// * sort modes
|
||||||
// * sort actions
|
// * sort actions
|
||||||
@ -805,203 +787,30 @@ var KeyboardActions = actions.Actions({
|
|||||||
function(){
|
function(){
|
||||||
thiis.__keyboard_config = GLOBAL_KEYBOARD }],
|
thiis.__keyboard_config = GLOBAL_KEYBOARD }],
|
||||||
|
|
||||||
// XXX do we look for aliases in this mode only or in all modes?
|
keyHandler: ['- Interface/',
|
||||||
getKeyHandler: ['- Interface/',
|
|
||||||
function(modes, key, action){
|
|
||||||
var that = this
|
|
||||||
|
|
||||||
// XXX normalize key...
|
|
||||||
var full_key = key
|
|
||||||
var modifiers = key.split('+')
|
|
||||||
key = modifiers.pop()
|
|
||||||
|
|
||||||
var code = keyboard.toKeyCode(key)
|
|
||||||
var args = [].slice.call(arguments).slice(3)
|
|
||||||
|
|
||||||
// set handler...
|
|
||||||
if(action){
|
|
||||||
modes = modes instanceof Array ? modes : [modes]
|
|
||||||
// ignore all but the first mode...
|
|
||||||
modes = modes.slice(0, 1)
|
|
||||||
|
|
||||||
// get handler...
|
|
||||||
} else {
|
|
||||||
var shift_key = (modifiers.indexOf('shift') >= 0 ?
|
|
||||||
keyboard._SHIFT_KEYS[key]
|
|
||||||
: keyboard._UNSHIFT_KEYS[key])
|
|
||||||
|| ''
|
|
||||||
var shift_modifiers = shift_key != ''
|
|
||||||
&& (((modifiers.indexOf('shift') >= 0 ?
|
|
||||||
modifiers.filter(function(k){ return k != 'shift' })
|
|
||||||
: modifiers.concat(['shift'])))
|
|
||||||
|| modifiers).join('+')
|
|
||||||
var full_shift_key = shift_modifiers == '' ?
|
|
||||||
shift_key
|
|
||||||
: shift_modifiers +'+'+ shift_key
|
|
||||||
|
|
||||||
var any = modes == 'any'
|
|
||||||
modes = any ? this.keyboard.modes()
|
|
||||||
: modes == '*' ? Object.keys(this.keybindigs)
|
|
||||||
: modes
|
|
||||||
modes = modes instanceof Array ? modes : [modes]
|
|
||||||
|
|
||||||
// filter modes...
|
|
||||||
var ignore = false
|
|
||||||
modes = any ?
|
|
||||||
modes
|
|
||||||
.filter(function(mode){
|
|
||||||
if(ignore){
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
var i = that.keybindigs[mode].ignore || []
|
|
||||||
|
|
||||||
ignore = i.indexOf(full_key) >= 0
|
|
||||||
|| i.indexOf(key) >= 0
|
|
||||||
|| i.indexOf(shift_key) >= 0
|
|
||||||
|| i.indexOf(full_shift_key) >= 0
|
|
||||||
|| i.indexOf(code) >= 0
|
|
||||||
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
: modes
|
|
||||||
}
|
|
||||||
|
|
||||||
modifiers = modifiers.join('+')
|
|
||||||
|
|
||||||
|
|
||||||
// search modes...
|
|
||||||
var res = {}
|
|
||||||
ignore = false
|
|
||||||
modes
|
|
||||||
.forEach(function(mode){
|
|
||||||
if(ignore){
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
var bindings = that.keybindigs[mode]
|
|
||||||
|
|
||||||
if(action){
|
|
||||||
var match = 'direct'
|
|
||||||
var alias = code in bindings ? code : key
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// direct match...
|
|
||||||
var match = 'direct'
|
|
||||||
var alias = full_key in bindings ? full_key
|
|
||||||
: key in bindings ? key
|
|
||||||
: null
|
|
||||||
// shift key match...
|
|
||||||
match = alias == null ? 'shifted' : match
|
|
||||||
alias = alias == null ?
|
|
||||||
(full_shift_key in bindings ? full_shift_key
|
|
||||||
: shift_key in bindings ? shift_key
|
|
||||||
: null)
|
|
||||||
: alias
|
|
||||||
// code match...
|
|
||||||
match = alias == null ? 'code' : match
|
|
||||||
alias = alias == null ?
|
|
||||||
(code in bindings ? code : null)
|
|
||||||
: alias
|
|
||||||
}
|
|
||||||
|
|
||||||
var mod = (match == 'code' || match == 'direct') ?
|
|
||||||
modifiers
|
|
||||||
: shift_modifiers
|
|
||||||
mod = mod == '' ? 'default' : mod
|
|
||||||
|
|
||||||
var handler = alias
|
|
||||||
|
|
||||||
// spin through aliases...
|
|
||||||
// XXX do we look for aliases in this mode only or in all modes?
|
|
||||||
var seen = []
|
|
||||||
while(handler in bindings){
|
|
||||||
// handler loop...
|
|
||||||
if(seen.indexOf(handler) >= 0){
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
alias = handler
|
|
||||||
handler = bindings[alias]
|
|
||||||
seen.push(alias)
|
|
||||||
|
|
||||||
// go into the map structure...
|
|
||||||
if(!action && typeof(handler) != typeof('str')){
|
|
||||||
handler = handler[mod]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// set the action...
|
|
||||||
if(action){
|
|
||||||
if(handler == null || typeof(handler) == typeof('str')){
|
|
||||||
bindings[alias] = modifiers.length == 0 ?
|
|
||||||
action
|
|
||||||
: { modifiers : action }
|
|
||||||
|
|
||||||
} else if(modifiers.length == 0){
|
|
||||||
handler['default'] = action
|
|
||||||
|
|
||||||
} else {
|
|
||||||
handler[modifiers] = action
|
|
||||||
}
|
|
||||||
|
|
||||||
// get the action...
|
|
||||||
} else {
|
|
||||||
if(handler){
|
|
||||||
res[mode] = handler
|
|
||||||
}
|
|
||||||
|
|
||||||
ignore = any && handler == 'DROP'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return !action ?
|
|
||||||
(modes.length == 1 ? res[modes[0]] : res) || null
|
|
||||||
: undefined
|
|
||||||
}],
|
|
||||||
// XXX move this to lib/keyboard.js
|
|
||||||
// XXX not done yet...
|
|
||||||
bindKey: ['- Interface/',
|
|
||||||
function(mode, key, action){
|
function(mode, key, action){
|
||||||
var modifiers = key.split('+')
|
return this.keyboard.handler(mode, key, action) }],
|
||||||
key = modifiers.pop()
|
|
||||||
modifiers = modifiers.join('+')
|
|
||||||
var code = keyboard.toKeyCode(key)
|
|
||||||
var args = [].slice.call(arguments).slice(3)
|
|
||||||
action = action
|
|
||||||
+ (args.length > 0 ?
|
|
||||||
': '+ args.map(JSON.stringify).join(' ')
|
|
||||||
: '')
|
|
||||||
var bindings = this.keybindigs[mode]
|
|
||||||
|
|
||||||
var alias = code in bindings ? code : key
|
|
||||||
var handler = bindings[key] || bindings[code]
|
|
||||||
|
|
||||||
// spin through aliases...
|
|
||||||
var seen = []
|
|
||||||
while(handler in bindings){
|
|
||||||
// handler loop...
|
|
||||||
if(seen.indexOf(handler) >= 0){
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
alias = handler
|
// XXX move to gen2
|
||||||
handler = bindings[alias]
|
// XXX need to pre-process the docs...
|
||||||
seen.push(alias)
|
// - remove the path component...
|
||||||
}
|
// - insert the action name where not doc present...
|
||||||
|
// XXX cleanup CSS
|
||||||
if(handler == null || typeof(handler) == typeof('str')){
|
showKeyboardBindings: ['Interface/Show keyboard bindings...',
|
||||||
bindings[alias] = modifiers.length == 0 ?
|
widgets.makeUIDialog('Drawer',
|
||||||
action
|
function(){
|
||||||
: { modifiers : action }
|
return keyboard.buildKeybindingsHelpHTML(
|
||||||
|
this.__keyboard_config,
|
||||||
} else if(modifiers.length == 0){
|
this,
|
||||||
handler['default'] = action
|
function(action){
|
||||||
|
return Object.keys(this.getPath(action))[0] })
|
||||||
} else {
|
},
|
||||||
handler[modifiers] = action
|
{
|
||||||
}
|
background: 'white',
|
||||||
}],
|
focusable: true,
|
||||||
|
})],
|
||||||
})
|
})
|
||||||
|
|
||||||
var Keyboard =
|
var Keyboard =
|
||||||
|
|||||||
@ -106,7 +106,7 @@ for(var k in SPECIAL_KEYS){
|
|||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
// documentation wrapper...
|
// Documentation wrapper...
|
||||||
var doc =
|
var doc =
|
||||||
module.doc =
|
module.doc =
|
||||||
function doc(text, func){
|
function doc(text, func){
|
||||||
@ -116,7 +116,9 @@ function doc(text, func){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// supported action format:
|
// Parse action call format...
|
||||||
|
//
|
||||||
|
// supported format:
|
||||||
// <actio-name>[!][: <args>][-- <doc>]
|
// <actio-name>[!][: <args>][-- <doc>]
|
||||||
//
|
//
|
||||||
// <args> can contain space seporated:
|
// <args> can contain space seporated:
|
||||||
@ -126,6 +128,8 @@ function doc(text, func){
|
|||||||
//
|
//
|
||||||
// XXX should this be here???
|
// XXX should this be here???
|
||||||
// XXX add support for suffix to return false / stop_propagation...
|
// XXX add support for suffix to return false / stop_propagation...
|
||||||
|
// XXX should this handle calls???
|
||||||
|
// i.e. have .call(..) / .apply(..) methods???
|
||||||
var parseActionCall =
|
var parseActionCall =
|
||||||
module.parseActionCall =
|
module.parseActionCall =
|
||||||
function parseActionCall(txt){
|
function parseActionCall(txt){
|
||||||
@ -596,17 +600,15 @@ var KeyboardHandlerPrototype = {
|
|||||||
// - search for key code without modifiers
|
// - search for key code without modifiers
|
||||||
// - if an alias is found it is first checked with and then
|
// - if an alias is found it is first checked with and then
|
||||||
// without modifiers
|
// without modifiers
|
||||||
//
|
|
||||||
// XXX getting '(' yields a different result from 'shift-#9'
|
|
||||||
handler: function(mode, key, handler){
|
handler: function(mode, key, handler){
|
||||||
var that = this
|
var that = this
|
||||||
var keyboard = this.keyboard
|
var keyboard = this.keyboard
|
||||||
var key_separators = KEY_SEPARATORS
|
var key_separators = KEY_SEPARATORS
|
||||||
|
|
||||||
if(arguments.length == 0){
|
if(mode == null){
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
if(arguments.length == 1 && this.isKey(mode)){
|
if(key == null && this.isKey(mode)){
|
||||||
key = mode
|
key = mode
|
||||||
mode = '*'
|
mode = '*'
|
||||||
}
|
}
|
||||||
@ -753,6 +755,7 @@ var KeyboardHandlerPrototype = {
|
|||||||
: Object.keys(this.keyboard) },
|
: Object.keys(this.keyboard) },
|
||||||
|
|
||||||
|
|
||||||
|
// init base data...
|
||||||
__init__: function(keyboard, is_mode_applicable){
|
__init__: function(keyboard, is_mode_applicable){
|
||||||
this.keyboard = keyboard
|
this.keyboard = keyboard
|
||||||
|
|
||||||
@ -770,8 +773,11 @@ object.makeConstructor('Keyboard',
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
|
// Base event handler wrapper of Keyboard...
|
||||||
|
//
|
||||||
var makeKeyboardHandler =
|
var makeKeyboardHandler =
|
||||||
module.makeKeyboardHandler =
|
module.makeKeyboardHandler =
|
||||||
function makeKeyboardHandler(keyboard, unhandled, actions){
|
function makeKeyboardHandler(keyboard, unhandled, actions){
|
||||||
@ -835,6 +841,7 @@ function makeKeyboardHandler(keyboard, unhandled, actions){
|
|||||||
|
|
||||||
// Event handler wrapper to stop handling keys if check callback does
|
// Event handler wrapper to stop handling keys if check callback does
|
||||||
// not pass (returns false)...
|
// not pass (returns false)...
|
||||||
|
//
|
||||||
var stoppableKeyboardRepeat =
|
var stoppableKeyboardRepeat =
|
||||||
module.stoppableKeyboardRepeat =
|
module.stoppableKeyboardRepeat =
|
||||||
function(handler, check){
|
function(handler, check){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user