mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
started refactoring keyboard.js...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
c732687433
commit
7756a3b8ca
@ -22,12 +22,19 @@ var core = require('features/core')
|
|||||||
// XXX add this to the global doc...
|
// XXX add this to the global doc...
|
||||||
var GLOBAL_KEYBOARD =
|
var GLOBAL_KEYBOARD =
|
||||||
module.GLOBAL_KEYBOARD = {
|
module.GLOBAL_KEYBOARD = {
|
||||||
|
'Global':{
|
||||||
|
doc: 'Global bindings that take priority over other sections.',
|
||||||
|
pattern: '*',
|
||||||
|
|
||||||
|
// XXX
|
||||||
|
},
|
||||||
|
|
||||||
'Slideshow': {
|
'Slideshow': {
|
||||||
pattern: '.slideshow-running',
|
pattern: '.slideshow-running',
|
||||||
ignore: [
|
ignore: [
|
||||||
'Esc',
|
'Esc',
|
||||||
'Up', 'Down', 'Enter',
|
'Up', 'Down', 'Enter',
|
||||||
'R', 'L',
|
'R', 'L', 'G',
|
||||||
],
|
],
|
||||||
|
|
||||||
Esc: 'toggleSlideshow: "off"',
|
Esc: 'toggleSlideshow: "off"',
|
||||||
@ -57,7 +64,13 @@ module.GLOBAL_KEYBOARD = {
|
|||||||
Esc: 'toggleSingleImage: "off"',
|
Esc: 'toggleSingleImage: "off"',
|
||||||
},
|
},
|
||||||
|
|
||||||
'Global': {
|
// XXX cropped -- needs a class to indicate a crop...
|
||||||
|
'Cropped': {
|
||||||
|
// XXX
|
||||||
|
},
|
||||||
|
|
||||||
|
// XXX cleanup...
|
||||||
|
'Viewer': {
|
||||||
doc: 'NOTE: binding priority is the same as the order of sections '+
|
doc: 'NOTE: binding priority is the same as the order of sections '+
|
||||||
'on this page.',
|
'on this page.',
|
||||||
pattern: '*',
|
pattern: '*',
|
||||||
@ -68,6 +81,7 @@ module.GLOBAL_KEYBOARD = {
|
|||||||
Q: {
|
Q: {
|
||||||
meta: 'close',
|
meta: 'close',
|
||||||
},
|
},
|
||||||
|
// XXX
|
||||||
F5: keyboard.doc('Full reload viewer',
|
F5: keyboard.doc('Full reload viewer',
|
||||||
function(){
|
function(){
|
||||||
//a.stop()
|
//a.stop()
|
||||||
@ -331,7 +345,8 @@ var KeyboardActions = actions.Actions({
|
|||||||
delete this.__keyboard_handler
|
delete this.__keyboard_handler
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
['on', 'off'])]
|
['on', 'off'])],
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
var Keyboard =
|
var Keyboard =
|
||||||
|
|||||||
@ -224,6 +224,44 @@ function dropRepeatingkeys(handler, max_rate){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// supported action format:
|
||||||
|
// <actio-name>[!][: <args>][-- <doc>]
|
||||||
|
//
|
||||||
|
// <args> can contain space seporated:
|
||||||
|
// - numbers
|
||||||
|
// - strings
|
||||||
|
// - non-nested arrays or objects
|
||||||
|
var parseActionCall =
|
||||||
|
module.parseActionCall =
|
||||||
|
function parseActionCall(txt){
|
||||||
|
// split off the doc...
|
||||||
|
var c = txt.split('--')
|
||||||
|
var doc = (c[1] || '').trim()
|
||||||
|
// the actual code...
|
||||||
|
c = c[0].split(':')
|
||||||
|
|
||||||
|
// action and no default flag...
|
||||||
|
var action = c[0].trim()
|
||||||
|
var no_default = action.slice(-1) == '!'
|
||||||
|
action = no_default ? action.slice(0, -1) : action
|
||||||
|
|
||||||
|
// parse arguments...
|
||||||
|
var args = JSON.parse('['+(
|
||||||
|
((c[1] || '')
|
||||||
|
.match(/"[^"]*"|'[^']*'|\{[^\}]*\}|\[[^\]]*\]|\d+|\d+\.\d*/gm)
|
||||||
|
|| [])
|
||||||
|
.join(','))+']')
|
||||||
|
|
||||||
|
return {
|
||||||
|
action: action,
|
||||||
|
arguments: args,
|
||||||
|
doc: doc,
|
||||||
|
'no-default': no_default,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Key handler getter
|
/* Key handler getter
|
||||||
*
|
*
|
||||||
* For doc on format see makeKeyboardHandler(...)
|
* For doc on format see makeKeyboardHandler(...)
|
||||||
@ -387,7 +425,7 @@ function getKeyHandlers(key, modifiers, keybindings, modes, shifted_keys, action
|
|||||||
|
|
||||||
// alias...
|
// alias...
|
||||||
// XXX should this be before after or combined with ignore handling...
|
// XXX should this be before after or combined with ignore handling...
|
||||||
while( handler != null && typeof(handler) != 'function'){
|
while(handler != null && typeof(handler) != 'function'){
|
||||||
|
|
||||||
// do the complex handler aliases...
|
// do the complex handler aliases...
|
||||||
if(handler != null && handler.constructor == Object){
|
if(handler != null && handler.constructor == Object){
|
||||||
@ -418,29 +456,12 @@ function getKeyHandlers(key, modifiers, keybindings, modes, shifted_keys, action
|
|||||||
handler = keybindings[handler]
|
handler = keybindings[handler]
|
||||||
|
|
||||||
// actions...
|
// actions...
|
||||||
//
|
|
||||||
// supported action format:
|
|
||||||
// <actio-name>[!][: <args>]
|
|
||||||
//
|
|
||||||
// <args> can contain space seporated:
|
|
||||||
// - numbers
|
|
||||||
// - strings
|
|
||||||
// - non-nested arrays or arrays
|
|
||||||
} else if(handler in actions
|
} else if(handler in actions
|
||||||
|| handler.split(/!?\s*:\s*|!/)[0].trim() in actions){
|
|| handler.split(/!?\s*:\s*|!/)[0].trim() in actions){
|
||||||
var c = handler.split(':')
|
|
||||||
|
|
||||||
handler = c[0].trim()
|
var c = parseActionCall(handler)
|
||||||
var no_default = handler.slice(-1) == '!'
|
|
||||||
handler = no_default ? handler.slice(0, -1) : handler
|
|
||||||
|
|
||||||
var args = JSON.parse('['+(
|
handler = function(n, no_default, args, doc){
|
||||||
((c[1] || '')
|
|
||||||
.match(/"[^"]*"|'[^']*'|\{[^\}]*\}|\[[^\]]*\]|\d+|\d+\.\d*/gm)
|
|
||||||
|| [])
|
|
||||||
.join(','))+']')
|
|
||||||
|
|
||||||
handler = function(n, no_default, args){
|
|
||||||
if(no_default){
|
if(no_default){
|
||||||
var f = function(){
|
var f = function(){
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
@ -459,8 +480,13 @@ function getKeyHandlers(key, modifiers, keybindings, modes, shifted_keys, action
|
|||||||
f.args = args
|
f.args = args
|
||||||
f.no_default = no_default
|
f.no_default = no_default
|
||||||
|
|
||||||
|
// use the inherited doc if no specific doc is defined...
|
||||||
|
if(doc && doc.length > 0){
|
||||||
|
f.doc = doc
|
||||||
|
}
|
||||||
|
|
||||||
return f
|
return f
|
||||||
}(handler, no_default, args.slice())
|
}(c.action, c['no-default'], c.args, c.doc)
|
||||||
|
|
||||||
// key code...
|
// key code...
|
||||||
} else if(typeof(handler) == typeof(1)) {
|
} else if(typeof(handler) == typeof(1)) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user