mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00:09 +00:00 
			
		
		
		
	oops! ..forgot to add the bookmarks.js file :))))
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									da26156f74
								
							
						
					
					
						commit
						9db9983371
					
				
							
								
								
									
										192
									
								
								ui/bookmarks.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										192
									
								
								ui/bookmarks.js
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,192 @@ | |||||||
|  | /********************************************************************** | ||||||
|  | *  | ||||||
|  | * | ||||||
|  | * | ||||||
|  | **********************************************************************/ | ||||||
|  | 
 | ||||||
|  | // list of bookmarked gids...
 | ||||||
|  | var BOOKMARKS= []  | ||||||
|  | 
 | ||||||
|  | // bookmark data
 | ||||||
|  | //
 | ||||||
|  | // NOTE: elements are added here only when some data is set, use 
 | ||||||
|  | // 		BOOKMARKS, as the main structure.
 | ||||||
|  | var BOOKMARKS_DATA = { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var BOOKMARKS_FILE_DEFAULT = 'bookmarked.json' | ||||||
|  | var BOOKMARKS_FILE_PATTERN = /^[0-9]*-bookmarked.json$/ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /********************************************************************** | ||||||
|  | * Helpers | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | // XXX argument processing...
 | ||||||
|  | function getBookmarkedGIDBefore(gid){ | ||||||
|  | 	if(BOOKMARKS.length == 0){ | ||||||
|  | 		return null | ||||||
|  | 	} | ||||||
|  | 	gid = gid == null ? getImageGID() : gid | ||||||
|  | 	var prev | ||||||
|  | 
 | ||||||
|  | 	// need to account for cropping here...
 | ||||||
|  | 	do { | ||||||
|  | 		prev = getGIDBefore(gid, BOOKMARKS) | ||||||
|  | 		gid = getGIDBefore(prev) | ||||||
|  | 	} while(prev != gid && prev != null) | ||||||
|  | 
 | ||||||
|  | 	// no bookmarks before current image...
 | ||||||
|  | 	if(prev == null){ | ||||||
|  | 		return prev | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return prev | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*********************************************************************/ | ||||||
|  | 
 | ||||||
|  | function cropBookmarkedImages(cmp, keep_ribbons, no_cleanout_marks){ | ||||||
|  | 	cropDataTo(BOOKMARKS.slice(), keep_ribbons, no_cleanout_marks) | ||||||
|  | 
 | ||||||
|  | 	return DATA | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // update image bookmark state...
 | ||||||
|  | var updateBookmarkedImageMark = makeMarkUpdater( | ||||||
|  | 		'bookmarked', | ||||||
|  | 		'bookmark',  | ||||||
|  | 		function(gid){  | ||||||
|  | 			return BOOKMARKS.indexOf(gid) > -1  | ||||||
|  | 		}) | ||||||
|  | IMAGE_UPDATERS.push(updateBookmarkedImageMark) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*********************************************************************/ | ||||||
|  | // XXX not sure that these should be modes...
 | ||||||
|  | 
 | ||||||
|  | var toggleBookmarkedOnlyView = makeCropModeToggler( | ||||||
|  | 		'bookmarked-only-view', | ||||||
|  | 		cropBookmarkedImages) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | var toggleBookmarkedOnlyWithRibbonsView = makeCropModeToggler( | ||||||
|  | 		'bookmarked-only-view', | ||||||
|  | 		function(){ | ||||||
|  | 			cropBookmarkedImages(null, true) | ||||||
|  | 		}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /********************************************************************** | ||||||
|  | * Actions | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | // NOTE: this can be called without arguments (affects current image) or
 | ||||||
|  | // 		passed either an image object or a gid...
 | ||||||
|  | var toggleBookmark = makeMarkToggler( | ||||||
|  | 		'bookmarked',  | ||||||
|  | 		'bookmark',  | ||||||
|  | 		'togglingBookmark') | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // focus previous bookmark...
 | ||||||
|  | //
 | ||||||
|  | function nextBookmark(){ | ||||||
|  | 	if(BOOKMARKS.length == 0){ | ||||||
|  | 		flashIndicator('end') | ||||||
|  | 		return getImage() | ||||||
|  | 	} | ||||||
|  | 	var cur = getImageGID() | ||||||
|  | 	var next = getBookmarkedGIDBefore(cur) | ||||||
|  | 	var i = BOOKMARKS.indexOf(next)+1 | ||||||
|  | 
 | ||||||
|  | 	// we are before the first loaded bookmark, find the first...
 | ||||||
|  | 	while((next == cur || next == null) && i < BOOKMARKS.length){ | ||||||
|  | 		next = BOOKMARKS[i] | ||||||
|  | 		next = getBookmarkedGIDBefore(next) | ||||||
|  | 		i++ | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// did not find any loaded bookmarks after...
 | ||||||
|  | 	if(i >= BOOKMARKS.length && (next == null || next == cur)){ | ||||||
|  | 		flashIndicator('end') | ||||||
|  | 		return getImage(cur) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return showImage(next) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // focus previous bookmark...
 | ||||||
|  | //
 | ||||||
|  | function prevBookmark(){ | ||||||
|  | 	if(BOOKMARKS.length == 0){ | ||||||
|  | 		flashIndicator('start') | ||||||
|  | 		return getImage(cur) | ||||||
|  | 	} | ||||||
|  | 	var cur = getImageGID() | ||||||
|  | 	var prev = getBookmarkedGIDBefore(cur) | ||||||
|  | 
 | ||||||
|  | 	// nothing bookmarked before us...
 | ||||||
|  | 	if(prev == null){ | ||||||
|  | 		flashIndicator('start') | ||||||
|  | 		return getImage(cur) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// current image is bookmarked, get the bookmark before it...
 | ||||||
|  | 	if(prev == cur){ | ||||||
|  | 		prev = BOOKMARKS[BOOKMARKS.indexOf(prev)-1] | ||||||
|  | 		prev = prev != null ? getBookmarkedGIDBefore(prev) : prev | ||||||
|  | 		// no loaded (crop mode?) bookmark before us...
 | ||||||
|  | 		if(prev == null){ | ||||||
|  | 			flashIndicator('start') | ||||||
|  | 			return getImage(cur) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return showImage(prev) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*********************************************************************/ | ||||||
|  | 
 | ||||||
|  | // setup event handlers for the bookmark framework...
 | ||||||
|  | //
 | ||||||
|  | function setupBookmarks(viewer){ | ||||||
|  | 	console.log('Bookmarks: setup...') | ||||||
|  | 	return viewer | ||||||
|  | 		.on('togglingBookmark', function(evt, gid, action){ | ||||||
|  | 			// add a bookmark...
 | ||||||
|  | 			if(action == 'on'){ | ||||||
|  | 				if(BOOKMARKS.indexOf(gid) == -1){ | ||||||
|  | 					BOOKMARKS.push(gid) | ||||||
|  | 					// XXX is this too expensive???
 | ||||||
|  | 					// 		...a way to avoid sorting is to:
 | ||||||
|  | 					// 			BOOKMARKS.splice(
 | ||||||
|  | 					// 				getGIDBefore(gid, BOOKMARKS)+1, 0, gid)
 | ||||||
|  | 					BOOKMARKS.sort(imageOrderCmp) | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 			// remove a bookmark...
 | ||||||
|  | 			} else { | ||||||
|  | 				BOOKMARKS.splice(BOOKMARKS.indexOf(gid), 1) | ||||||
|  | 			} | ||||||
|  | 		}) | ||||||
|  | 		.on('sortedImages', function(){ | ||||||
|  | 			BOOKMARKS.sort(imageOrderCmp) | ||||||
|  | 		}) | ||||||
|  | } | ||||||
|  | SETUP_BINDINGS.push(setupBookmarks) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /********************************************************************** | ||||||
|  | * vim:set ts=4 sw=4 :                                                */ | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user