From 64026f13cd3eec3cea23d77d699af3ccd1de2070 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Mon, 20 Jan 2014 06:45:41 +0400 Subject: [PATCH] more refactoring marks... Signed-off-by: Alex A. Naanou --- ui/bookmarks.js | 8 +++++++- ui/data.js | 1 + ui/marks.js | 45 ++++++++++++++++++++++++++++++++------------- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/ui/bookmarks.js b/ui/bookmarks.js index 2fe02835..49018828 100755 --- a/ui/bookmarks.js +++ b/ui/bookmarks.js @@ -96,6 +96,12 @@ var toggleBookmark = makeMarkToggler( }) +// Remove all bookmarks... +// +// mode can be: +// - 'ribbon' (default) +// - 'all' +// function removeAllBookmarks(mode){ mode = mode == null ? 'ribbon' : mode var res = setAllMarks('off', mode, BOOKMARKS, toggleBookmark) @@ -107,7 +113,7 @@ function removeAllBookmarks(mode){ } -// focus next/prev bookmark... +// Focus next/prev bookmark... // var nextBookmark = makeNextFromListAction( getBookmarkedGIDBefore, diff --git a/ui/data.js b/ui/data.js index f00b0116..e04c38dd 100755 --- a/ui/data.js +++ b/ui/data.js @@ -199,6 +199,7 @@ var DATA = { // Flat ordered list of images in current context... // in the simplest form this is a list of GIDs. // + // NOTE: this is never cropped... // NOTE: this may contain more gids than are currently loaded to // the ribbons... order: [], diff --git a/ui/marks.js b/ui/marks.js index d69923b6..5ed9cfc3 100755 --- a/ui/marks.js +++ b/ui/marks.js @@ -449,39 +449,52 @@ function markAllImagesTo(action, mode){ } +// Mark/Unmark images... +// // mode can be: -// - 'ribbon' +// - 'ribbon' (default) // - 'all' +// function unmarkAll(mode){ markAllImagesTo('off', mode) } function markAll(mode){ markAllImagesTo('on', mode) } -// NOTE: this only does it's work in the current ribbon... -function invertImageMarks(){ - var ribbon = getRibbonGIDs() +// Invert marks on images... +// +// mode can be: +// - 'ribbon' (default) +// - 'all' +// +function invertImageMarks(mode, gids){ + mode = mode == null ? 'ribbon' : mode + gids = gids != null ? gids + : mode == 'ribbon' ? getRibbonGIDs() + : getLoadedGIDs() + var on = [] var off = [] + var order = DATA.order - $.each(ribbon, function(_, e){ - var i = MARKED.indexOf(e) - if(i == -1){ + $.each(gids, function(_, e){ + var i = order.indexOf(e) + if(MARKED[i] === undefined){ on.push(e) - MARKED[DATA.order.indexOf(e)] = e + MARKED[i] = e } else { off.push(e) delete MARKED[i] } }) - updateImages(ribbon) + updateImages(gids) $('.viewer') - .trigger('invertingMarks', [ribbon]) + .trigger('invertingMarks', [gids]) .trigger('togglingMarks', [on, 'on']) .trigger('togglingMarks', [off, 'off']) marksUpdated() - return on.concat(off) + return gids } @@ -498,6 +511,7 @@ function toggleMarkBlock(image){ var i = ribbon.indexOf(gid) var updated = [gid] + var order = DATA.order var _convert = function(_, e){ // break if state differs from current... @@ -506,7 +520,7 @@ function toggleMarkBlock(image){ } // do the toggle... if(state){ - MARKED[DATA.order.indexOf(e)] = e + MARKED[order.indexOf(e)] = e } else { delete MARKED[MARKED.indexOf(e)] } @@ -658,6 +672,7 @@ function markImagesDialog(){ 'to the left and right of the current image,\n'+ 'up until the closest images marked differently', 'Invert marks in current ribbon', + 'Invert all marks', 'Mark all in current ribbon', 'Unmark all in current ribbon', 'Mark all images', @@ -680,10 +695,14 @@ function markImagesDialog(){ toggleMarkBlock() var msg = 'toggled block marks' - } else if(/Invert/.test(res)){ + } else if(/Invert .* ribbon/.test(res)){ invertImageMarks() var msg = 'inverted ribbon marks' + } else if(/Invert all/.test(res)){ + invertImageMarks('all') + var msg = 'inverted all marks' + } else if(/Mark all.*current ribbon/.test(res)){ markAll('ribbon') var msg = 'marked ribbon'