2013-05-03 01:29:43 +04:00
|
|
|
/**********************************************************************
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
**********************************************************************/
|
|
|
|
|
|
|
|
|
|
//var DEBUG = DEBUG != null ? DEBUG : true
|
|
|
|
|
|
|
|
|
|
var STEPS_TO_CHANGE_DIRECTION = 2
|
|
|
|
|
var _STEPS_LEFT_TO_CHANGE_DIRECTION = STEPS_TO_CHANGE_DIRECTION
|
|
|
|
|
// XXX code related to this needs testing...
|
|
|
|
|
var DIRECTION = 'next'
|
|
|
|
|
|
|
|
|
|
|
2013-05-03 02:11:24 +04:00
|
|
|
|
|
|
|
|
/*********************************************************************/
|
|
|
|
|
|
2013-05-03 01:29:43 +04:00
|
|
|
var KEYBOARD_CONFIG = {
|
|
|
|
|
// general setup...
|
|
|
|
|
'.viewer': {
|
|
|
|
|
// Navigation...
|
|
|
|
|
// XXX need to cancel the animation of the prev action...
|
|
|
|
|
Left: {
|
|
|
|
|
default: function(){
|
2013-05-03 15:58:22 +04:00
|
|
|
// update direction...
|
2013-05-03 01:29:43 +04:00
|
|
|
if(DIRECTION != 'prev'){
|
|
|
|
|
_STEPS_LEFT_TO_CHANGE_DIRECTION--
|
|
|
|
|
if(_STEPS_LEFT_TO_CHANGE_DIRECTION == 0){
|
|
|
|
|
DIRECTION = 'prev'
|
|
|
|
|
_STEPS_LEFT_TO_CHANGE_DIRECTION = 2
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
_STEPS_LEFT_TO_CHANGE_DIRECTION = 2
|
|
|
|
|
}
|
|
|
|
|
prevImage()
|
2013-05-03 05:38:40 +04:00
|
|
|
centerRibbons()
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
ctrl: function(){
|
2013-05-03 02:27:54 +04:00
|
|
|
prevScreenImages()
|
2013-05-03 05:38:40 +04:00
|
|
|
centerRibbons()
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Right: {
|
|
|
|
|
default: function(){
|
2013-05-03 15:58:22 +04:00
|
|
|
// update direction...
|
2013-05-03 01:29:43 +04:00
|
|
|
if(DIRECTION != 'next'){
|
|
|
|
|
_STEPS_LEFT_TO_CHANGE_DIRECTION--
|
|
|
|
|
if(_STEPS_LEFT_TO_CHANGE_DIRECTION == 0){
|
|
|
|
|
DIRECTION = 'next'
|
|
|
|
|
_STEPS_LEFT_TO_CHANGE_DIRECTION = 2
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
_STEPS_LEFT_TO_CHANGE_DIRECTION = 2
|
|
|
|
|
}
|
|
|
|
|
nextImage()
|
2013-05-03 05:38:40 +04:00
|
|
|
centerRibbons()
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
ctrl: function(){
|
2013-05-03 02:27:54 +04:00
|
|
|
nextScreenImages()
|
2013-05-03 05:38:40 +04:00
|
|
|
centerRibbons()
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Space: {
|
|
|
|
|
default: 'Right',
|
|
|
|
|
shift: 'Left',
|
2013-05-03 02:30:51 +04:00
|
|
|
// screen-oriented movement...
|
|
|
|
|
ctrl: 'Right',
|
|
|
|
|
'ctrl+shift': 'Left',
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
/* XXX for some reason this does not work,,,
|
|
|
|
|
// XXX for some odd reason, returning false does not cancel
|
|
|
|
|
// default behaviour here...
|
|
|
|
|
Backspace: {
|
|
|
|
|
default: 'Left',
|
|
|
|
|
shift: 'Right',
|
|
|
|
|
},
|
|
|
|
|
*/
|
|
|
|
|
Home: function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 01:29:43 +04:00
|
|
|
firstImage()
|
2013-05-03 05:38:40 +04:00
|
|
|
centerRibbons()
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
End: function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 01:29:43 +04:00
|
|
|
lastImage()
|
2013-05-03 05:38:40 +04:00
|
|
|
centerRibbons()
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
2013-05-03 02:11:24 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
// combined navigation and editor actions...
|
2013-05-03 01:29:43 +04:00
|
|
|
Up: {
|
2013-05-03 05:38:40 +04:00
|
|
|
default: function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 05:38:40 +04:00
|
|
|
prevRibbon(DIRECTION)
|
|
|
|
|
centerRibbons()
|
|
|
|
|
},
|
|
|
|
|
shift: function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 05:38:40 +04:00
|
|
|
shiftImageUp(null, DIRECTION)
|
|
|
|
|
centerRibbons()
|
|
|
|
|
},
|
|
|
|
|
'ctrl+shift': function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 05:38:40 +04:00
|
|
|
shiftImageUpNewRibbon(null, DIRECTION)
|
|
|
|
|
centerRibbons()
|
|
|
|
|
},
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
Down: {
|
2013-05-03 05:38:40 +04:00
|
|
|
default: function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 05:38:40 +04:00
|
|
|
nextRibbon(DIRECTION)
|
|
|
|
|
centerRibbons()
|
|
|
|
|
},
|
|
|
|
|
shift: function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 05:38:40 +04:00
|
|
|
shiftImageDown(null, DIRECTION)
|
|
|
|
|
centerRibbons()
|
|
|
|
|
},
|
|
|
|
|
'ctrl+shift': function(){
|
2013-05-07 02:16:57 +04:00
|
|
|
event.preventDefault()
|
2013-05-03 05:38:40 +04:00
|
|
|
shiftImageDownNewRibbon(null, DIRECTION)
|
|
|
|
|
centerRibbons()
|
|
|
|
|
},
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// zooming...
|
|
|
|
|
'1': function(){ fitNImages(1) },
|
|
|
|
|
'2': function(){ fitNImages(2) },
|
|
|
|
|
'3': function(){ fitNImages(3) },
|
|
|
|
|
'4': function(){ fitNImages(4) },
|
|
|
|
|
'5': function(){ fitNImages(5) },
|
|
|
|
|
'6': function(){ fitNImages(6) },
|
|
|
|
|
'7': function(){ fitNImages(7) },
|
|
|
|
|
// XXX for some reason this also hooks the Backspace key (80)...
|
|
|
|
|
'8': function(){ fitNImages(8) },
|
|
|
|
|
'9': function(){ fitNImages(9) },
|
2013-05-06 23:43:38 +04:00
|
|
|
|
|
|
|
|
'-': function(){ zoomOut() },
|
|
|
|
|
'=': function(){ zoomIn() },
|
2013-05-03 01:29:43 +04:00
|
|
|
|
|
|
|
|
|
2013-05-17 15:34:45 +04:00
|
|
|
Enter: function(){ toggleSingleImageMode() },
|
|
|
|
|
|
2013-05-03 01:29:43 +04:00
|
|
|
// XXX this should only work on single image mode...
|
2013-05-03 05:38:40 +04:00
|
|
|
F: function(){
|
|
|
|
|
toggleImageProportions()
|
|
|
|
|
centerRibbons()
|
|
|
|
|
},
|
2013-05-03 01:29:43 +04:00
|
|
|
|
2013-05-17 18:20:38 +04:00
|
|
|
B: function(){ toggleTheme() },
|
|
|
|
|
|
2013-05-17 15:48:39 +04:00
|
|
|
S: {
|
|
|
|
|
ctrl: function(){
|
2013-05-19 22:48:28 +04:00
|
|
|
//saveLocalStorage()
|
|
|
|
|
saveLocalStorageData()
|
2013-05-17 15:48:39 +04:00
|
|
|
saveLocalStorageMarks()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
Z: {
|
|
|
|
|
ctrl: function(){
|
|
|
|
|
loadLocalStorage()
|
|
|
|
|
loadLocalStorageMarks()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
2013-05-03 01:29:43 +04:00
|
|
|
|
|
|
|
|
// marking...
|
|
|
|
|
// XXX not final, think of a better way to do this...
|
|
|
|
|
// XXX need mark navigation...
|
2013-05-03 02:11:24 +04:00
|
|
|
// XXX need marked image shift up/down actions...
|
|
|
|
|
// XXX unmarking an image in marked-only mode results in nothing
|
|
|
|
|
// visible focused if we unmark the first or last image in
|
|
|
|
|
// the ribbon...
|
2013-05-03 01:29:43 +04:00
|
|
|
M: {
|
|
|
|
|
// NOTE: marking moves in the same direction as the last
|
|
|
|
|
// move...
|
|
|
|
|
// i.e. marking can change direction depending on where
|
|
|
|
|
// we moved last...
|
|
|
|
|
// NOTE: marking does not change move direction...
|
|
|
|
|
default: function(){
|
|
|
|
|
toggleImageMark()
|
|
|
|
|
if(DIRECTION == 'next'){
|
|
|
|
|
nextImage()
|
|
|
|
|
} else {
|
|
|
|
|
prevImage()
|
|
|
|
|
}
|
2013-05-03 03:43:43 +04:00
|
|
|
if($('.current.image').filter(':visible').length == 0){
|
|
|
|
|
centerImage(focusImage(getImageBefore()))
|
|
|
|
|
}
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
// same as default but in reverse direction...
|
|
|
|
|
shift: function(){
|
|
|
|
|
toggleImageMark()
|
|
|
|
|
if(DIRECTION == 'prev'){
|
|
|
|
|
nextImage()
|
|
|
|
|
} else {
|
|
|
|
|
prevImage()
|
|
|
|
|
}
|
2013-05-03 03:43:43 +04:00
|
|
|
if($('.current.image').filter(':visible').length == 0){
|
|
|
|
|
centerImage(focusImage(getImageBefore()))
|
|
|
|
|
}
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
2013-05-03 02:11:24 +04:00
|
|
|
ctrl: function(){
|
|
|
|
|
var action = toggleImageMark()
|
|
|
|
|
// focus an image instead of the one that just vanished...
|
|
|
|
|
if(action == 'off' && toggleMarkedOnlyView('?') == 'on'){
|
|
|
|
|
if(DIRECTION == 'next'){
|
|
|
|
|
nextImage()
|
|
|
|
|
} else {
|
|
|
|
|
prevImage()
|
|
|
|
|
}
|
|
|
|
|
if($('.current.image').filter(':visible').length == 0){
|
|
|
|
|
centerImage(focusImage(getImageBefore()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
2013-05-03 01:29:43 +04:00
|
|
|
},
|
|
|
|
|
I: {
|
2013-05-17 23:01:05 +04:00
|
|
|
// XXX STUB -- replace with a real info window...
|
|
|
|
|
default: function(){
|
|
|
|
|
var gid = getImageGID($('.current.image'))
|
|
|
|
|
var r = getRibbonIndex(getRibbon())
|
2013-05-19 22:48:28 +04:00
|
|
|
var data = IMAGES[gid]
|
2013-05-17 23:01:05 +04:00
|
|
|
var order = DATA.order.indexOf(gid)
|
|
|
|
|
var name = data.path.split('/').pop()
|
|
|
|
|
alert('"'+ name +'"\n'+
|
|
|
|
|
'GID: '+ gid +'\n'+
|
|
|
|
|
'Path: "'+ data.path +'"\n'+
|
|
|
|
|
'Order: '+ order +'\n'+
|
|
|
|
|
'Position (ribbon): '+ DATA.ribbons[r].indexOf(gid) +
|
|
|
|
|
'/'+ DATA.ribbons[r].length +'\n'+
|
|
|
|
|
'Position (global): '+ order +'/'+ DATA.order.length +'\n'+
|
|
|
|
|
'')
|
|
|
|
|
},
|
2013-05-03 01:29:43 +04:00
|
|
|
ctrl: function(){ invertImageMarks() },
|
|
|
|
|
},
|
|
|
|
|
A: {
|
|
|
|
|
shift: function(){ toggleImageMarkBlock() },
|
|
|
|
|
ctrl: function(){ markAll('ribbon') },
|
|
|
|
|
},
|
|
|
|
|
U: {
|
|
|
|
|
ctrl: function(){ removeImageMarks('ribbon') },
|
|
|
|
|
shift: function(){ removeImageMarks('all') },
|
|
|
|
|
},
|
2013-05-17 04:52:43 +04:00
|
|
|
F2: {
|
|
|
|
|
default: function(){ toggleMarkesView() },
|
|
|
|
|
shift: function(){
|
|
|
|
|
toggleMarkedOnlyView()
|
|
|
|
|
}
|
2013-05-03 05:38:40 +04:00
|
|
|
},
|
2013-05-03 01:29:43 +04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**********************************************************************
|
|
|
|
|
* vim:set ts=4 sw=4 : */
|