mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 10:50:08 +00:00 
			
		
		
		
	added descriptor support to action's mixin/out methods...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									7b7070c8b1
								
							
						
					
					
						commit
						40dda16421
					
				| @ -530,7 +530,11 @@ module.MetaActions = { | ||||
| 	// 		otherwise only mixin local actions...
 | ||||
| 	//
 | ||||
| 	// XXX test
 | ||||
| 	mixin: function(from, all, all_attr_types){ | ||||
| 	mixin: function(from, all, descriptors, all_attr_types){ | ||||
| 		// defaults...
 | ||||
| 		descriptors = descriptors || true | ||||
| 		all_attr_types = all_attr_types || false | ||||
| 
 | ||||
| 		if(all){ | ||||
| 			var keys = [] | ||||
| 			for(var k in from){ | ||||
| @ -542,9 +546,19 @@ module.MetaActions = { | ||||
| 
 | ||||
| 		var that = this | ||||
| 		keys.forEach(function(k){ | ||||
| 			var attr = from[k] | ||||
| 			if(all_attr_types || attr instanceof Action){ | ||||
| 				that[k] = attr | ||||
| 			// properties....
 | ||||
| 			var prop = Object.getOwnPropertyDescriptor(from, k) | ||||
| 			if(descriptors && prop.get != null){ | ||||
| 				// NOTE: so as to be able to delete this on mixout...
 | ||||
| 				prop.configurable = true | ||||
| 				Object.defineProperty(that, k, prop) | ||||
| 
 | ||||
| 			// actions and other attributes...
 | ||||
| 			} else { | ||||
| 				var attr = from[k] | ||||
| 				if(all_attr_types || attr instanceof Action){ | ||||
| 					that[k] = attr | ||||
| 				} | ||||
| 			} | ||||
| 		}) | ||||
| 
 | ||||
| @ -569,6 +583,10 @@ module.MetaActions = { | ||||
| 	// XXX not sure about these...
 | ||||
| 	// XXX test
 | ||||
| 	mixout: function(from, all, all_attr_types){ | ||||
| 		// defaults...
 | ||||
| 		descriptors = descriptors || true | ||||
| 		all_attr_types = all_attr_types || false | ||||
| 
 | ||||
| 		if(all){ | ||||
| 			var keys = [] | ||||
| 			for(var k in from){ | ||||
| @ -581,11 +599,22 @@ module.MetaActions = { | ||||
| 		var locals = Object.keys(this) | ||||
| 		var that = this | ||||
| 		keys.forEach(function(k){ | ||||
| 			var attr = from[k] | ||||
| 			if((all_attr_types || attr instanceof Action)  | ||||
| 					// remove only local attrs...
 | ||||
| 					&& locals.indexOf(k) >= 0){ | ||||
| 				delete that[k] | ||||
| 			var prop = Object.getOwnPropertyDescriptor(from, k) | ||||
| 
 | ||||
| 			// descriptor...
 | ||||
| 			if(descriptors && prop.get != null){ | ||||
| 				if(prop.get === Object.getOwnPropertyDescriptor(that, k).get){ | ||||
| 					delete that[k] | ||||
| 				} | ||||
| 
 | ||||
| 			// actions and other attrs...
 | ||||
| 			} else { | ||||
| 				var attr = from[k] | ||||
| 				if((all_attr_types || attr instanceof Action)  | ||||
| 						// remove only local attrs...
 | ||||
| 						&& locals.indexOf(k) >= 0){ | ||||
| 					delete that[k] | ||||
| 				} | ||||
| 			} | ||||
| 		}) | ||||
| 
 | ||||
|  | ||||
| @ -183,7 +183,7 @@ module.GLOBAL_KEYBOARD = { | ||||
| 		 | ||||
| 		B: { | ||||
| 			default: 'toggleBookmark', | ||||
| 			ctrl: 'toggleTheme', | ||||
| 			ctrl: 'toggleTheme!', | ||||
| 		}, | ||||
| 	}, | ||||
| }	 | ||||
|  | ||||
| @ -1163,9 +1163,10 @@ var PartialRibbonsActions = actions.Actions({ | ||||
| 			var pl = this.ribbons.getImage(target).prevAll('.image:not(.clone)').length | ||||
| 
 | ||||
| 			// next/prev available...
 | ||||
| 			var na = this.data.getImages(target, size/2, 'after').length - 1  | ||||
| 			var pa = this.data.getImages(target, size/2, 'before').length - 1  | ||||
| 
 | ||||
| 			// NOTE: we subtract 1 to remove the current and make these 
 | ||||
| 			// 		compatible with: nl, pl
 | ||||
| 			var na = this.data.getImages(target, size, 'after').length - 1 | ||||
| 			var pa = this.data.getImages(target, size, 'before').length - 1 | ||||
| 
 | ||||
| 			// do the update...
 | ||||
| 			// loaded more than we need (crop?)...
 | ||||
| @ -1767,6 +1768,8 @@ module.GlobalStateIndicator = Feature({ | ||||
| 
 | ||||
| //---------------------------------------------------------------------
 | ||||
| 
 | ||||
| // XXX should we rename this to "select"???
 | ||||
| 
 | ||||
| // target can be:
 | ||||
| // 		'all'
 | ||||
| // 		'loaded'
 | ||||
| @ -1807,8 +1810,33 @@ function makeTagTogglerAction(tag){ | ||||
| 
 | ||||
| // XXX add image updater...
 | ||||
| var ImageMarkActions = actions.Actions({ | ||||
| 
 | ||||
| 	// NOTE: this will return a copy...
 | ||||
| 	get marked(){ | ||||
| 		if(this.data == null  | ||||
| 				|| this.data.tags == null | ||||
| 				|| !('selected' in this.data.tags)){ | ||||
| 			return [] | ||||
| 		} | ||||
| 		return this.data.tags['selected'].slice() | ||||
| 	}, | ||||
| 
 | ||||
| 	// Common use-cases:
 | ||||
| 	// 	Toggle mark on current image
 | ||||
| 	// 	.toggleMark()
 | ||||
| 	//
 | ||||
| 	// 	Mark current ribbon
 | ||||
| 	// 	.toggleMark('ribbon', 'on')
 | ||||
| 	//
 | ||||
| 	// 	Unmark all loaded images
 | ||||
| 	// 	.toggleMark('loaded', 'off')
 | ||||
| 	//
 | ||||
| 	// 	Invert marks on current ribbon
 | ||||
| 	// 	.toggleMark('ribbon')
 | ||||
| 	//
 | ||||
| 	toggleMark: ['Toggle image mark', | ||||
| 		makeTagTogglerAction('selected')], | ||||
| 	// XXX
 | ||||
| 	toggleMarkBlock: ['Toggle block marks', | ||||
| 		'A block is a set of adjacent images either marked on unmarked ' | ||||
| 			+'in the same way', | ||||
| @ -1848,12 +1876,27 @@ module.ImageMarks = Feature({ | ||||
| 	tag: 'image-marks', | ||||
| 
 | ||||
| 	actions: ImageMarkActions, | ||||
| 
 | ||||
| 	// XXX image update...
 | ||||
| 	handlers: [ | ||||
| 	], | ||||
| }) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| //---------------------------------------------------------------------
 | ||||
| var ImageBookmarkActions = actions.Actions({ | ||||
| 
 | ||||
| 	// NOTE: this will return a copy...
 | ||||
| 	get bookmarked(){ | ||||
| 		if(this.data == null  | ||||
| 				|| this.data.tags == null | ||||
| 				|| !('bookmark' in this.data.tags)){ | ||||
| 			return [] | ||||
| 		} | ||||
| 		return this.data.tags['bookmark'].slice() | ||||
| 	}, | ||||
| 
 | ||||
| 	toggleBookmark: ['', | ||||
| 		makeTagTogglerAction('bookmark')], | ||||
| 	// action can be:
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user