diff --git a/ui/data.js b/ui/data.js
index d9229d49..d95966f1 100755
--- a/ui/data.js
+++ b/ui/data.js
@@ -15,7 +15,7 @@ var MAX_SCREEN_IMAGES = 12
// if set to true each image will have basic info written to its html
// title attr.
-var IMAGE_TITLE_DATA = true
+var IMAGE_INFO = true
var CACHE_DIR = '.ImageGridCache'
@@ -390,7 +390,7 @@ function imagesFromUrls(lst){
$.each(lst, function(i, e){
- // this is ugly but I'm bored so this pretty...
+ // this is ugly but I'm bored so this is pretty...
var ii = i < 10 ? '0000000' + i
: i < 100 ? '000000' + i
: i < 1000 ? '00000' + i
@@ -436,12 +436,6 @@ function dataFromImages(images){
function ribbonsFromFavDirs(path, images, cmp){
path = path == null ? BASE_URL : path
images = images == null ? IMAGES : images
- /*cmp = cmp == null ?
- function(a, b){
- return imageDateCmp(a, b, images)
- }
- : cmp
- */
// build a reverse name-gid index for fast access...
var index = {}
@@ -554,13 +548,14 @@ function updateImage(image, gid, size){
}
size = size == null ? getVisibleImageSize('max') : size
+ // get the image data...
var img_data = IMAGES[gid]
if(img_data == null){
img_data = STUB_IMAGE_DATA
}
var name = img_data.path.split('/').pop()
- // get the url...
+ // preview...
var preview = getBestPreview(gid, size)
image
.css({
@@ -569,21 +564,34 @@ function updateImage(image, gid, size){
.attr({
order: DATA.order.indexOf(gid),
orientation: img_data.orientation == null ? 0 : img_data.orientation,
- title: IMAGE_TITLE_DATA ?
- 'Image: ' + name +'\n'+
- 'Order: ' + DATA.order.indexOf(gid) +'\n'+
- 'GID: '+ gid +'\n'+
- 'Preview size:'+ preview.size : '',
})
- // setup marks...
+ // image info...
+ if(IMAGE_INFO){
+ var info = image.find('.info')
+ if(info.length == 0){
+ info = $('
')
+ .addClass('info')
+ .appendTo(image)
+ }
+ info.html(
+ 'Image: ' + name +
+ '
Order: ' + DATA.order.indexOf(gid) +
+ '
GID: '+ gid +
+ (window.DEBUG ? '
Preview size:'+ preview.size : '') +
+ ''
+ )
+ } else {
+ image.find('.info').remove()
+ }
+
+ // marks...
if(MARKED.indexOf(gid) != -1){
image.addClass('marked')
} else {
image.removeClass('marked')
}
-
return image
}
diff --git a/ui/index.html b/ui/index.html
index 2f1a738b..5d81bd48 100755
--- a/ui/index.html
+++ b/ui/index.html
@@ -56,6 +56,7 @@ body {
}
+
.ribbon {
position: relative;
display: block;
@@ -78,6 +79,8 @@ body {
margin-bottom: 0px;
}
+
+
.image {
position: relative;
display: inline-block;
@@ -106,6 +109,8 @@ body {
border: solid red 5px;
}
+
+
/* image turning... */
/* NOTE: need to account for proportions after turning... */
.image[orientation="90"] {
@@ -131,6 +136,7 @@ body {
}
+
/* dot mark... */
.marks-visible.viewer .marked.image:after {
display: block;
@@ -238,6 +244,75 @@ body {
}
+
+/* Image info */
+.image .info {
+ display: none;
+
+ position: absolute;
+ bottom: 0px;
+ width: 100%;
+ background: black;
+ opacity: 0.7;
+
+ -moz-user-select: auto;
+ -webkit-user-select: auto;
+ -o-user-select: auto;
+ -ms-user-select: auto;
+ user-select: auto;
+}
+.image .info::selection {
+ color: white;
+ background: red;
+}
+.image-info-visible.viewer .image:hover .info {
+ display: block;
+}
+.single-image-mode.viewer .image .info {
+ display: none;
+}
+.image[orientation="90"] .info {
+ top: auto;
+ left: 100%;
+
+ -ms-transform-origin: bottom left;
+ -webkit-transform-origin: bottom left;
+ transform-origin: bottom left;
+
+ -webkit-transform: rotate(-90deg);
+ -moz-transform: rotate(-90deg);
+ -o-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+}
+.image[orientation="180"] .info {
+ top: 0px;
+ bottom: auto;
+
+ -webkit-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.image[orientation="270"] .info {
+ top: auto;
+ left: auto;
+ right: 100%;
+
+ -ms-transform-origin: bottom right;
+ -webkit-transform-origin: bottom right;
+ transform-origin: bottom right;
+
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+
+
+
.up-indicator,
.down-indicator,
.start-indicator,
diff --git a/ui/keybindings.js b/ui/keybindings.js
index 8f656973..425cbabe 100755
--- a/ui/keybindings.js
+++ b/ui/keybindings.js
@@ -16,6 +16,29 @@ var DIRECTION = 'next'
/*********************************************************************/
var KEYBOARD_CONFIG = {
+ // help mode...
+ // NOTE: need to keep all info modes before the rest so as to give
+ // their bindings priority...
+ '.help-mode': {
+ title: 'Help',
+ doc: 'NOTE: In this mode all other key bindings are disabled, except '+
+ 'the ones explicitly defined here.',
+ ignore: '*',
+
+ Esc: doc('Close help',
+ function(){
+ toggleKeyboardHelp('off')
+ return false
+ }),
+ H: 'Esc',
+ Q: 'Esc',
+ // '?'
+ '/': {
+ shift: 'Esc',
+ },
+ },
+
+
// single image mode only...
'.single-image-mode': {
title: 'Single image mode',
@@ -27,34 +50,23 @@ var KEYBOARD_CONFIG = {
centerRibbons()
}),
Esc: doc('Exit single image mode',
- function(){ toggleSingleImageMode('off') }),
+ function(){
+ toggleSingleImageMode('off')
+ return false
+ }),
Q: 'Esc',
},
+
// single image mode only...
'.marked-only-view:not(.single-image-mode)': {
title: 'Marked only view',
Esc: doc('Exit marked only view',
- function(){ toggleMarkedOnlyView('off') })
- },
-
-
- // help mode...
- '.help-mode': {
- title: 'Help',
- doc: 'NOTE: In this mode all other key bindings are disabled, except '+
- 'the ones explicitly defined here.',
- ignore: '*',
-
- Esc: doc('Close help',
- function(){ toggleKeyboardHelp('off') }),
- H: 'Esc',
- Q: 'Esc',
- // '?'
- '/': {
- shift: 'Esc',
- },
+ function(){
+ toggleMarkedOnlyView('off')
+ return false
+ })
},
@@ -291,6 +303,9 @@ var KEYBOARD_CONFIG = {
'Position (global): '+ order +'/'+ DATA.order.length +'\n'+
'')
}),
+ // XXX group this with other info stuff into a single on/off toggle...
+ shift: doc('Toggle image info visibility (on hover)',
+ function(){ toggleImageInfo() }),
ctrl: doc('Invert image marks',
function(){ invertImageMarks() }),
},
diff --git a/ui/modes.js b/ui/modes.js
index b7d3508e..37c3973e 100755
--- a/ui/modes.js
+++ b/ui/modes.js
@@ -61,6 +61,9 @@ var toggleTheme = createCSSClassToggler('.viewer',
})
+var toggleImageInfo = createCSSClassToggler('.viewer', '.image-info-visible')
+
+
// NOTE: this confirmsto the css toggler protocol, but is not implemented
// via createCSSClassToggler as we do not need to set any classes,
// al least at this point...