mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 19:30:07 +00:00 
			
		
		
		
	some refactoring to the files.js file API, now relatively generic...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									9db9983371
								
							
						
					
					
						commit
						a20cda9ed3
					
				| @ -156,7 +156,36 @@ function prevBookmark(){ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /*********************************************************************/ | ||||
| /********************************************************************** | ||||
| * Files... | ||||
| */ | ||||
| 
 | ||||
| var loadFileBookmarks = makeFileLoader( | ||||
| 		'Bookmarks',  | ||||
| 		BOOKMARKS_FILE_DEFAULT,  | ||||
| 		BOOKMARKS_FILE_PATTERN,  | ||||
| 		function(data){  | ||||
| 			BOOKMARKS = data[0] == null ? [] : data[0] | ||||
| 			BOOKMARKS_DATA = data[1] == null ? {} : data[1] | ||||
| 		}) | ||||
| FILE_LOADERS.push(loadFileBookmarks) | ||||
| 
 | ||||
| 
 | ||||
| var saveFileBookmarks = makeFileSaver( | ||||
| 		BOOKMARKS_FILE_DEFAULT,  | ||||
| 		function(){  | ||||
| 			return [ | ||||
| 				BOOKMARKS,  | ||||
| 				BOOKMARKS_DATA | ||||
| 			]  | ||||
| 		}) | ||||
| FILE_SAVERS.push(saveFileBookmarks) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /********************************************************************** | ||||
| * Setup... | ||||
| */ | ||||
| 
 | ||||
| // setup event handlers for the bookmark framework...
 | ||||
| //
 | ||||
|  | ||||
							
								
								
									
										146
									
								
								ui/files.js
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								ui/files.js
									
									
									
									
									
								
							| @ -6,6 +6,9 @@ | ||||
| 
 | ||||
| //var DEBUG = DEBUG != null ? DEBUG : true
 | ||||
| 
 | ||||
| var FILE_LOADERS = [] | ||||
| var FILE_SAVERS = [] | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /********************************************************************** | ||||
| @ -80,6 +83,19 @@ function bubbleProgress(prefix, from, to, only_progress){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function runFileLoaders(prefix, res){ | ||||
| 	return $.when.apply(null, FILE_LOADERS.map(function(load){ | ||||
| 		return bubbleProgress(prefix, load(), res, true) | ||||
| 	})) | ||||
| } | ||||
| // XXX do we need bubbleProgress(..) here???
 | ||||
| function runFileSavers(name){ | ||||
| 	FILE_SAVERS.map(function(save){ | ||||
| 		return save(name) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // Semi-generic deferred file loader
 | ||||
| //
 | ||||
| // if pattern is given, then search for the latest (ordered last) file 
 | ||||
| @ -183,6 +199,57 @@ function loadLatestFile(path, dfl, pattern, diff_pattern, default_data){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function makeFileLoader(title, file_dfl, file_pattern, data_set){ | ||||
| 	return function(path){ | ||||
| 		var res = $.Deferred() | ||||
| 		// default locations...
 | ||||
| 		if(path == null){ | ||||
| 			var base = normalizePath(CACHE_DIR_VAR) | ||||
| 			var loader = loadLatestFile(base,  | ||||
| 					file_dfl,  | ||||
| 					file_pattern, | ||||
| 					null, | ||||
| 					[]) | ||||
| 		 | ||||
| 		// explicit path...
 | ||||
| 		// XXX need to account for paths without a CACHE_DIR
 | ||||
| 		} else { | ||||
| 			path = normalizePath(path) | ||||
| 			var base = path.split(CACHE_DIR)[0] | ||||
| 			//base = normalizePath(path +'/'+ CACHE_DIR_VAR)
 | ||||
| 			base = path +'/'+ CACHE_DIR | ||||
| 
 | ||||
| 			// XXX is this correct???
 | ||||
| 			var loader = loadLatestFile(base,  | ||||
| 					path.split(base)[0],  | ||||
| 					RegExp(path.split(base)[0]), | ||||
| 					null, | ||||
| 					[]) | ||||
| 		} | ||||
| 
 | ||||
| 		bubbleProgress(title, loader, res) | ||||
| 
 | ||||
| 		res.done(data_set) | ||||
| 
 | ||||
| 		return res | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function makeFileSaver(file_dfl, data_get){ | ||||
| 	return function(name){ | ||||
| 		name = name == null  | ||||
| 			? normalizePath(CACHE_DIR_VAR +'/'+ Date.timeStamp())  | ||||
| 			: name | ||||
| 
 | ||||
| 		dumpJSON(name + '-' + file_dfl, data_get()) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /*********************************************************************/ | ||||
| 
 | ||||
| // Construct a ribbons hierarchy from the fav dirs structure
 | ||||
| //
 | ||||
| // NOTE: this depends on listDir(...)
 | ||||
| @ -318,79 +385,6 @@ function saveFileImages(name){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function makeBasicLoader(title, file_dfl, file_pattern, finalize){ | ||||
| 	return function(path){ | ||||
| 		var res = $.Deferred() | ||||
| 		// default locations...
 | ||||
| 		if(path == null){ | ||||
| 			var base = normalizePath(CACHE_DIR_VAR) | ||||
| 			var loader = loadLatestFile(base,  | ||||
| 					file_dfl,  | ||||
| 					file_pattern, | ||||
| 					null, | ||||
| 					[]) | ||||
| 		 | ||||
| 		// explicit path...
 | ||||
| 		// XXX need to account for paths without a CACHE_DIR
 | ||||
| 		} else { | ||||
| 			path = normalizePath(path) | ||||
| 			var base = path.split(CACHE_DIR)[0] | ||||
| 			//base = normalizePath(path +'/'+ CACHE_DIR_VAR)
 | ||||
| 			base = path +'/'+ CACHE_DIR | ||||
| 
 | ||||
| 			// XXX is this correct???
 | ||||
| 			var loader = loadLatestFile(base,  | ||||
| 					path.split(base)[0],  | ||||
| 					RegExp(path.split(base)[0]), | ||||
| 					null, | ||||
| 					[]) | ||||
| 		} | ||||
| 
 | ||||
| 		bubbleProgress(title, loader, res) | ||||
| 
 | ||||
| 		res.done(finalize) | ||||
| 
 | ||||
| 		return res | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Load image marks form file
 | ||||
| //
 | ||||
| // NOTE: if no marks are found then set them to []
 | ||||
| var loadFileMarks = makeBasicLoader( | ||||
| 		'Marks',  | ||||
| 		MARKED_FILE_DEFAULT,  | ||||
| 		MARKED_FILE_PATTERN,  | ||||
| 		function(data){  | ||||
| 			MARKED = data | ||||
| 		}) | ||||
| 
 | ||||
| 
 | ||||
| // Save image marks to file
 | ||||
| function saveFileMarks(name){ | ||||
| 	name = name == null ? normalizePath(CACHE_DIR_VAR +'/'+ Date.timeStamp()) : name | ||||
| 
 | ||||
| 	dumpJSON(name + '-' + MARKED_FILE_DEFAULT, MARKED) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| var loadFileBookmarks = makeBasicLoader( | ||||
| 		'Bookmarks',  | ||||
| 		BOOKMARKS_FILE_DEFAULT,  | ||||
| 		BOOKMARKS_FILE_PATTERN,  | ||||
| 		function(data){  | ||||
| 			BOOKMARKS = data[0] == null ? [] : data[0] | ||||
| 			BOOKMARKS_DATA = data[1] == null ? {} : data[1] | ||||
| 		}) | ||||
| 
 | ||||
| 
 | ||||
| function saveFileBookmarks(name){ | ||||
| 	name = name == null ? normalizePath(CACHE_DIR_VAR +'/'+ Date.timeStamp()) : name | ||||
| 
 | ||||
| 	dumpJSON(name + '-' + BOOKMARKS_FILE_DEFAULT, [BOOKMARKS, BOOKMARKS_DATA]) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // Load images, ribbons and marks from cache
 | ||||
| //
 | ||||
| // XXX add support for explicit filenames...
 | ||||
| @ -438,10 +432,13 @@ function loadFileState(path, prefix){ | ||||
| 							//		normalizePath(DATA.image_file, base) 
 | ||||
| 							//		: null), res, true),
 | ||||
| 						// load marks if available...
 | ||||
| 						runFileLoaders(prefix, res)) | ||||
| 						/* | ||||
| 						bubbleProgress(prefix, | ||||
| 							loadFileMarks(), res, true), | ||||
| 						bubbleProgress(prefix, | ||||
| 							loadFileBookmarks(), res, true)) | ||||
| 						*/ | ||||
| 					.done(function(){ | ||||
| 						reloadViewer() | ||||
| 						res.resolve() | ||||
| @ -484,8 +481,7 @@ function saveFileState(name, no_normalize_path){ | ||||
| 
 | ||||
| 	dumpJSON(name + '-data.json', data) | ||||
| 	// XXX do we need to do this???
 | ||||
| 	saveFileMarks(name) | ||||
| 	saveFileBookmarks(name) | ||||
| 	runFileSavers(name) | ||||
| 
 | ||||
| 	// save the updated images...
 | ||||
| 	if(IMAGES_UPDATED.length > 0){ | ||||
|  | ||||
| @ -27,6 +27,7 @@ | ||||
| 
 | ||||
| <script src="ribbons.js"></script> | ||||
| <script src="data.js"></script> | ||||
| <script src="files.js"></script> | ||||
| <script src="urlhistory.js"></script> | ||||
| <script src="crop.js"></script> | ||||
| <script src="sort.js"></script> | ||||
| @ -34,7 +35,6 @@ | ||||
| <script src="modes.js"></script> | ||||
| <script src="marks.js"></script> | ||||
| <script src="bookmarks.js"></script> | ||||
| <script src="files.js"></script> | ||||
| <script src="localstorage.js"></script> | ||||
| <script src="info.js"></script> | ||||
| <script src="ui.js"></script> | ||||
|  | ||||
							
								
								
									
										33
									
								
								ui/marks.js
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								ui/marks.js
									
									
									
									
									
								
							| @ -443,7 +443,38 @@ function markImagesDialog(){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /*********************************************************************/ | ||||
| 
 | ||||
| /********************************************************************** | ||||
| * Files... | ||||
| */ | ||||
| 
 | ||||
| // Load image marks form file
 | ||||
| //
 | ||||
| // NOTE: if no marks are found then set them to []
 | ||||
| var loadFileMarks = makeFileLoader( | ||||
| 		'Marks',  | ||||
| 		MARKED_FILE_DEFAULT,  | ||||
| 		MARKED_FILE_PATTERN,  | ||||
| 		function(data){  | ||||
| 			MARKED = data | ||||
| 		}) | ||||
| FILE_LOADERS.push(loadFileMarks) | ||||
| 
 | ||||
| 
 | ||||
| // Save image marks to file
 | ||||
| var saveFileMarks = makeFileSaver( | ||||
| 		MARKED_FILE_DEFAULT,  | ||||
| 		function(){  | ||||
| 			return MARKED  | ||||
| 		}) | ||||
| FILE_SAVERS.push(saveFileMarks) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /********************************************************************** | ||||
| * Setup... | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| function setupMarks(viewer){ | ||||
| 	console.log('Marks: setup...') | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user