From 21ba78128393ed58338e86b09c0cb57d39dc54bb Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sat, 14 Dec 2013 06:58:13 +0400 Subject: [PATCH] more refactoring... Signed-off-by: Alex A. Naanou --- ui/bookmarks.js | 22 ++++++++++++++++------ ui/files.js | 12 ++++++++---- ui/layout.css | 2 ++ ui/layout.less | 2 ++ ui/marks.js | 25 +++++++++++++++++++++---- ui/setup.js | 49 ++++++++++++++++--------------------------------- 6 files changed, 65 insertions(+), 47 deletions(-) diff --git a/ui/bookmarks.js b/ui/bookmarks.js index 04a9c0da..483b1532 100755 --- a/ui/bookmarks.js +++ b/ui/bookmarks.js @@ -11,19 +11,22 @@ var BOOKMARKS= [] // // NOTE: elements are added here only when some data is set, use // BOOKMARKS, as the main structure. -var BOOKMARKS_DATA = { -} +var BOOKMARKS_DATA = {} var BOOKMARKS_FILE_DEFAULT = 'bookmarked.json' var BOOKMARKS_FILE_PATTERN = /^[0-9]*-bookmarked.json$/ - /********************************************************************** * Helpers */ +// This is the same as getGIDBefore(..) but will return the currently +// loaded and bookmarked image before current. +// +// for exact protocol see: getGIDBefore(..) +// // XXX argument processing... function getBookmarkedGIDBefore(gid){ if(BOOKMARKS.length == 0){ @@ -64,7 +67,6 @@ var updateBookmarkedImageMark = makeMarkUpdater( function(gid){ return BOOKMARKS.indexOf(gid) > -1 }) -IMAGE_UPDATERS.push(updateBookmarkedImageMark) @@ -168,7 +170,6 @@ var loadFileBookmarks = makeFileLoader( BOOKMARKS = data[0] == null ? [] : data[0] BOOKMARKS_DATA = data[1] == null ? {} : data[1] }) -FILE_LOADERS.push(loadFileBookmarks) var saveFileBookmarks = makeFileSaver( @@ -179,7 +180,6 @@ var saveFileBookmarks = makeFileSaver( BOOKMARKS_DATA ] }) -FILE_SAVERS.push(saveFileBookmarks) @@ -191,6 +191,16 @@ FILE_SAVERS.push(saveFileBookmarks) // function setupBookmarks(viewer){ console.log('Bookmarks: setup...') + + // XXX make this viewer specific... + makeContextIndicatorUpdater('bookmarked') + + // XXX make this viewer specific... + showContextIndicator( + 'current-image-bookmarked', + 'Image is bookmarked (ctrl-B)') + .click(function(){ toggleBookmark() }) + return viewer .on('togglingBookmark', function(evt, gid, action){ // add a bookmark... diff --git a/ui/files.js b/ui/files.js index aabfe663..901887bf 100755 --- a/ui/files.js +++ b/ui/files.js @@ -186,8 +186,8 @@ function loadLatestFile(path, dfl, pattern, diff_pattern, default_data){ } -function makeFileLoader(title, file_dfl, file_pattern, data_set){ - return function(path){ +function makeFileLoader(title, file_dfl, file_pattern, data_set, skip_reg){ + var _loader = function(path){ var res = $.Deferred() // default locations... if(path == null){ @@ -220,17 +220,21 @@ function makeFileLoader(title, file_dfl, file_pattern, data_set){ return res } + !skip_reg && FILE_LOADERS.push(_loader) + return _loader } // XXX make this check for updates -- no need to re-save if nothing // changed... -function makeFileSaver(file_dfl, data_get){ - return function(name){ +function makeFileSaver(file_dfl, data_get, skip_reg){ + var _saver = function(name){ name = name == null ? normalizePath(CACHE_DIR_VAR +'/'+ Date.timeStamp()) : name dumpJSON(name + '-' + file_dfl, data_get()) } + !skip_reg && FILE_SAVERS.push(_saver) + return _saver } diff --git a/ui/layout.css b/ui/layout.css index 1354b408..292485a3 100755 --- a/ui/layout.css +++ b/ui/layout.css @@ -1038,9 +1038,11 @@ button:hover { .global-mode-indicators .marks-visible, .context-mode-indicators .current-image-marked { color: blue; + cursor: hand; } .context-mode-indicators .current-image-bookmarked { color: yellow; + cursor: hand; } .global-mode-indicators .marked-only-visible .shown, .global-mode-indicators .marks-visible .shown, diff --git a/ui/layout.less b/ui/layout.less index 62de5d47..ea9ec819 100755 --- a/ui/layout.less +++ b/ui/layout.less @@ -1067,9 +1067,11 @@ button:hover { .global-mode-indicators .marks-visible, .context-mode-indicators .current-image-marked { color: blue; + cursor: hand; } .context-mode-indicators .current-image-bookmarked { color: yellow; + cursor: hand; } .global-mode-indicators .marked-only-visible .shown, .global-mode-indicators .marks-visible .shown, diff --git a/ui/marks.js b/ui/marks.js index 3b18b6fe..2e2b9317 100755 --- a/ui/marks.js +++ b/ui/marks.js @@ -112,7 +112,7 @@ function makeMarkToggler(img_class, mark_class, evt_name){ // the resulting function will update image mark state by adding or // removing the mark the specific mark object. function makeMarkUpdater(img_class, mark_class, test){ - return function(gid, image){ + var _updater = function(gid, image){ // marks... if(test(gid)){ image.addClass(img_class) @@ -123,6 +123,8 @@ function makeMarkUpdater(img_class, mark_class, test){ } return image } + IMAGE_UPDATERS.push(_updater) + return _updater } @@ -136,7 +138,6 @@ var updateSelectedImageMark = makeMarkUpdater( function(gid){ return MARKED.indexOf(gid) > -1 }) -IMAGE_UPDATERS.push(updateSelectedImageMark) // NOTE: to disable MARKED cleanout set no_cleanout_marks to true. @@ -458,7 +459,6 @@ var loadFileMarks = makeFileLoader( function(data){ MARKED = data }) -FILE_LOADERS.push(loadFileMarks) // Save image marks to file @@ -467,7 +467,6 @@ var saveFileMarks = makeFileSaver( function(){ return MARKED }) -FILE_SAVERS.push(saveFileMarks) @@ -478,6 +477,24 @@ FILE_SAVERS.push(saveFileMarks) function setupMarks(viewer){ console.log('Marks: setup...') + + // XXX make this viewer specific... + makeContextIndicatorUpdater('marked') + + // XXX make these viewer specific... + showGlobalIndicator( + 'marks-visible', + 'Marks visible (F2)') + .click(function(){ toggleMarkesView() }) + showGlobalIndicator( + 'marked-only-visible', + 'Marked only images visible (shift-F2)') + .click(function(){ toggleMarkedOnlyView() }) + showContextIndicator( + 'current-image-marked', + 'Image is marked (Ins)') + .click(function(){ toggleMark() }) + return viewer // marks... .on('togglingMark', function(evt, gid, action){ diff --git a/ui/setup.js b/ui/setup.js index b567c9bb..2304e28c 100755 --- a/ui/setup.js +++ b/ui/setup.js @@ -9,6 +9,7 @@ // NOTE: if null this feature will be disabled. var PROPORTIONS_RATIO_THRESHOLD = 1.5 +var CONTEXT_INDICATOR_UPDATERS = [] /********************************************************************** @@ -21,28 +22,20 @@ function setupIndicators(){ 'Single ribbon mode (F3)') .css('cursor', 'hand') .click(function(){ toggleSingleRibbonMode() }) - showGlobalIndicator( - 'marks-visible', - 'Marks visible (F2)') - .css('cursor', 'hand') - .click(function(){ toggleMarkesView() }) - showGlobalIndicator( - 'marked-only-visible', - 'Marked only images visible (shift-F2)') - .css('cursor', 'hand') - .click(function(){ toggleMarkedOnlyView() }) +} - showContextIndicator( - 'current-image-bookmarked', - 'Image is bookmarked (ctrl-B)') - .css('cursor', 'hand') - .click(function(){ toggleBookmark() }) - showContextIndicator( - 'current-image-marked', - 'Image is marked (Ins)') - .css('cursor', 'hand') - .click(function(){ toggleMark() }) +function makeContextIndicatorUpdater(image_class){ + var _updater = function(image){ + var indicator = $('.context-mode-indicators .current-image-'+image_class) + if(image.hasClass(image_class)){ + indicator.addClass('shown') + } else { + indicator.removeClass('shown') + } + } + CONTEXT_INDICATOR_UPDATERS.push(_updater) + return _updater } @@ -50,19 +43,9 @@ function updateContextIndicators(image){ image = image == null ? getImage() : $(image) // marked... - var indicator = $('.context-mode-indicators .current-image-marked') - if(image.hasClass('marked')){ - indicator.addClass('shown') - } else { - indicator.removeClass('shown') - } - - indicator = $('.context-mode-indicators .current-image-bookmarked') - if(image.hasClass('bookmarked')){ - indicator.addClass('shown') - } else { - indicator.removeClass('shown') - } + CONTEXT_INDICATOR_UPDATERS.map(function(update){ + update(image) + }) }