mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 03:10:07 +00:00 
			
		
		
		
	some refactoring (not fully happy with the style yet) and tweaking...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									c32144bee7
								
							
						
					
					
						commit
						23a1b3818d
					
				| @ -122,8 +122,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			.forEach(function(title){ | 			.forEach(function(title){ | ||||||
| 				res[c[title].gid || title] = title | 				res[c[title].gid || title] = title | ||||||
| 			}) | 			}) | ||||||
| 		return res | 		return res }, | ||||||
| 	}, |  | ||||||
| 
 | 
 | ||||||
| 	get collection(){ | 	get collection(){ | ||||||
| 		return this.location.collection }, | 		return this.location.collection }, | ||||||
| @ -172,8 +171,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 
 | 
 | ||||||
| 		this.__collection_order.splice(0, this.__collection_order.length, ...res) | 		this.__collection_order.splice(0, this.__collection_order.length, ...res) | ||||||
| 
 | 
 | ||||||
| 		return this.__collection_order.slice() | 		return this.__collection_order.slice() }, | ||||||
| 	}, |  | ||||||
| 	set collection_order(value){ | 	set collection_order(value){ | ||||||
| 		value && this.sortCollections(value) }, | 		value && this.sortCollections(value) }, | ||||||
| 
 | 
 | ||||||
| @ -186,8 +184,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 		var c = (this.collections || {}) | 		var c = (this.collections || {}) | ||||||
| 		return MAIN_COLLECTION_TITLE in c ?  | 		return MAIN_COLLECTION_TITLE in c ?  | ||||||
| 			Object.keys(c).length - 1 | 			Object.keys(c).length - 1 | ||||||
| 			: Object.keys(c).length | 			: Object.keys(c).length }, | ||||||
| 	}, |  | ||||||
| 
 | 
 | ||||||
| 	// Format:
 | 	// Format:
 | ||||||
| 	// 	{
 | 	// 	{
 | ||||||
| @ -226,8 +223,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 				delete handlers['data'] | 				delete handlers['data'] | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			return handlers | 			return handlers }) }, | ||||||
| 		}) }, |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// Collection events...
 | 	// Collection events...
 | ||||||
| @ -337,8 +333,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 						reject(err) }) | 						reject(err) }) | ||||||
| 			}) | 			}) | ||||||
| 
 | 
 | ||||||
| 			return p | 			return p }], | ||||||
| 		}], |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// Collection life-cycle...
 | 	// Collection life-cycle...
 | ||||||
| @ -414,8 +409,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			if(collection == null  | 			if(collection == null  | ||||||
| 					|| this.collections == null  | 					|| this.collections == null  | ||||||
| 					|| !(collection in this.collections)){ | 					|| !(collection in this.collections)){ | ||||||
| 				return | 				return } | ||||||
| 			} |  | ||||||
| 			var crop_mode = this.config['collection-save-crop-state'] || 'all' | 			var crop_mode = this.config['collection-save-crop-state'] || 'all' | ||||||
| 
 | 
 | ||||||
| 			var current = this.current | 			var current = this.current | ||||||
| @ -444,8 +438,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 					&& !force){ | 					&& !force){ | ||||||
| 				this.saveCollection( | 				this.saveCollection( | ||||||
| 					this.collection,  | 					this.collection,  | ||||||
| 					crop_mode == 'all' ? 'crop': null) | 					crop_mode == 'all' ? 'crop': null) } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			// load collection...
 | 			// load collection...
 | ||||||
| 			// XXX should this be sync???
 | 			// XXX should this be sync???
 | ||||||
| @ -455,8 +448,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 					var data = collection_data.data | 					var data = collection_data.data | ||||||
| 
 | 
 | ||||||
| 					if(!data){ | 					if(!data){ | ||||||
| 						return | 						return } | ||||||
| 					} |  | ||||||
| 
 | 
 | ||||||
| 					// current...
 | 					// current...
 | ||||||
| 					data.current = data.getImage(current)  | 					data.current = data.getImage(current)  | ||||||
| @ -505,13 +497,9 @@ var CollectionActions = actions.Actions({ | |||||||
| 										collection | 										collection | ||||||
| 									// cleanup...
 | 									// cleanup...
 | ||||||
| 									if(collection == null){ | 									if(collection == null){ | ||||||
| 										delete this.location.collection | 										delete this.location.collection } } | ||||||
| 									} |  | ||||||
| 								} |  | ||||||
| 							},  | 							},  | ||||||
| 							collection) | 							collection) }) }], | ||||||
| 				}) |  | ||||||
| 		}], |  | ||||||
| 	// XXX should this call .loadCollection('!') when saving to current
 | 	// XXX should this call .loadCollection('!') when saving to current
 | ||||||
| 	// 		collection???
 | 	// 		collection???
 | ||||||
| 	// 		This would reaload the view to a consistent (just saved) 
 | 	// 		This would reaload the view to a consistent (just saved) 
 | ||||||
| @ -569,9 +557,9 @@ var CollectionActions = actions.Actions({ | |||||||
| 			collection = collection == 'current' ? this.collection : collection | 			collection = collection == 'current' ? this.collection : collection | ||||||
| 
 | 
 | ||||||
| 			if(!force  | 			if(!force  | ||||||
| 					&& (collection == null || collection == MAIN_COLLECTION_TITLE)){ | 					&& (collection == null  | ||||||
| 				return | 						|| collection == MAIN_COLLECTION_TITLE)){ | ||||||
| 			} | 				return } | ||||||
| 
 | 
 | ||||||
| 			var collections = this.collections = this.collections || {} | 			var collections = this.collections = this.collections || {} | ||||||
| 			var depth = typeof(mode) == typeof(123) ? mode : null | 			var depth = typeof(mode) == typeof(123) ? mode : null | ||||||
| @ -584,8 +572,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 							&& collection == this.collection)  | 							&& collection == this.collection)  | ||||||
| 						|| collection == MAIN_COLLECTION_TITLE) ?  | 						|| collection == MAIN_COLLECTION_TITLE) ?  | ||||||
| 					'crop'  | 					'crop'  | ||||||
| 					: 'current' | 					: 'current' } | ||||||
| 			} |  | ||||||
| 			var new_collection =  | 			var new_collection =  | ||||||
| 				!collections[collection]  | 				!collections[collection]  | ||||||
| 					&& collection != MAIN_COLLECTION_TITLE | 					&& collection != MAIN_COLLECTION_TITLE | ||||||
| @ -630,9 +617,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 
 | 
 | ||||||
| 			// other modes...
 | 			// other modes...
 | ||||||
| 			} else { | 			} else { | ||||||
| 				delete state.crop_stack | 				delete state.crop_stack } | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 			// XXX this leads to recursion????
 | 			// XXX this leads to recursion????
 | ||||||
| 			// 		.loadCollection('X')
 | 			// 		.loadCollection('X')
 | ||||||
| @ -643,8 +628,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			//	&& this.loadCollection('!')
 | 			//	&& this.loadCollection('!')
 | ||||||
| 
 | 
 | ||||||
| 			new_collection | 			new_collection | ||||||
| 				&& this.collectionCreated(collection) | 				&& this.collectionCreated(collection) }], | ||||||
| 		}], |  | ||||||
| 	newCollection: ['- Collections/', | 	newCollection: ['- Collections/', | ||||||
| 		core.doc` Shorthand to .saveCollection(collection, 'empty')`, | 		core.doc` Shorthand to .saveCollection(collection, 'empty')`, | ||||||
| 		function(collection){ return this.saveCollection(collection, 'empty') }], | 		function(collection){ return this.saveCollection(collection, 'empty') }], | ||||||
| @ -664,17 +648,15 @@ var CollectionActions = actions.Actions({ | |||||||
| 			collection = this.collectionGIDs[collection] || collection | 			collection = this.collectionGIDs[collection] || collection | ||||||
| 			if(collection in this.collections){ | 			if(collection in this.collections){ | ||||||
| 				delete this.collections[collection] | 				delete this.collections[collection] | ||||||
| 				this.collectionRemoved(collection) | 				this.collectionRemoved(collection) } }], | ||||||
| 			} |  | ||||||
| 		}], |  | ||||||
| 	renameCollection: ['- Collections/', | 	renameCollection: ['- Collections/', | ||||||
| 		function(from, to){ | 		function(from, to){ | ||||||
| 			if(to == from  | 			if(to == from  | ||||||
| 					|| from == MAIN_COLLECTION_TITLE  | 					|| from == MAIN_COLLECTION_TITLE  | ||||||
| 					|| to == MAIN_COLLECTION_TITLE  | 					|| to == MAIN_COLLECTION_TITLE  | ||||||
| 					|| (this.collections || {})[from] == null){ | 					|| (this.collections  | ||||||
| 				return | 						|| {})[from] == null){ | ||||||
| 			} | 				return } | ||||||
| 
 | 
 | ||||||
| 			var order = this.collection_order | 			var order = this.collection_order | ||||||
| 			order.splice(order.indexOf(from), 1, to) | 			order.splice(order.indexOf(from), 1, to) | ||||||
| @ -685,9 +667,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			data.title = to | 			data.title = to | ||||||
| 
 | 
 | ||||||
| 			if(this.collection == from){ | 			if(this.collection == from){ | ||||||
| 				this.location.collection = to | 				this.location.collection = to } }], | ||||||
| 			} |  | ||||||
| 		}], |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// Collection list manipulation...
 | 	// Collection list manipulation...
 | ||||||
| @ -728,8 +708,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			} else { | 			} else { | ||||||
| 				this.__collection_order.sort() | 				this.__collection_order.sort() | ||||||
| 			} | 			} | ||||||
| 			this.collection_order | 			this.collection_order }], | ||||||
| 		}], |  | ||||||
| 	collectionToTop: ['Collections/Bring collection to $top', | 	collectionToTop: ['Collections/Bring collection to $top', | ||||||
| 		core.doc`Bring collection to top...
 | 		core.doc`Bring collection to top...
 | ||||||
| 
 | 
 | ||||||
| @ -755,8 +734,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			this.collection_order = [collection].concat(o).unique() | 			this.collection_order = [collection].concat(o).unique() }], | ||||||
| 		}], |  | ||||||
| 	 | 	 | ||||||
| 
 | 
 | ||||||
| 	// Introspection...
 | 	// Introspection...
 | ||||||
| @ -778,8 +756,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 						&& that.collections[c] | 						&& that.collections[c] | ||||||
| 						&& that.collections[c].data | 						&& that.collections[c].data | ||||||
| 						&& (!gid  | 						&& (!gid  | ||||||
| 							|| that.collections[c].data.getImage(gid)) }) | 							|| that.collections[c].data.getImage(gid)) }) }], | ||||||
| 		}], |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// Collection editing....
 | 	// Collection editing....
 | ||||||
| @ -829,8 +806,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			collection = collection || this.collection | 			collection = collection || this.collection | ||||||
| 			collection = this.collectionGIDs[collection] || collection  | 			collection = this.collectionGIDs[collection] || collection  | ||||||
| 			if(collection == null || collection == MAIN_COLLECTION_TITLE){ | 			if(collection == null || collection == MAIN_COLLECTION_TITLE){ | ||||||
| 				return | 				return } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			gids = gids == 'loaded' ?  | 			gids = gids == 'loaded' ?  | ||||||
| 					this.data.getImages('loaded') | 					this.data.getImages('loaded') | ||||||
| @ -854,19 +830,18 @@ var CollectionActions = actions.Actions({ | |||||||
| 					var remove = c.data.getImages(gids, 'all') | 					var remove = c.data.getImages(gids, 'all') | ||||||
| 					// only add gids that do not exist in collection...
 | 					// only add gids that do not exist in collection...
 | ||||||
| 					gids = gids | 					gids = gids | ||||||
| 						.filter(function(g){ return remove.indexOf(g) < 0 }) | 						.filter(function(g){  | ||||||
|  | 							return remove.indexOf(g) < 0 }) | ||||||
| 
 | 
 | ||||||
| 					if(gids.length == 0){ | 					if(gids.length == 0){ | ||||||
| 						return | 						return } | ||||||
| 					} |  | ||||||
| 
 | 
 | ||||||
| 					// add to collection...
 | 					// add to collection...
 | ||||||
| 					var data = this.data.constructor.fromArray(gids) | 					var data = this.data.constructor.fromArray(gids) | ||||||
| 
 | 
 | ||||||
| 					// XXX should we use collection.data.placeImage(..)???
 | 					// XXX should we use collection.data.placeImage(..)???
 | ||||||
| 					return this.joinCollect(null, collection, data)  | 					return this.joinCollect(null, collection, data)  | ||||||
| 				}).bind(this)) | 				}).bind(this)) }], | ||||||
| 		}], |  | ||||||
| 	joinCollect: ['Collections/$Merge view to collection...', | 	joinCollect: ['Collections/$Merge view to collection...', | ||||||
| 		core.doc`Merge/Join current state to collection
 | 		core.doc`Merge/Join current state to collection
 | ||||||
| 
 | 
 | ||||||
| @ -894,8 +869,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			collection = arguments.length == 1 ? align : collection | 			collection = arguments.length == 1 ? align : collection | ||||||
| 			collection = this.collectionGIDs[collection] || collection  | 			collection = this.collectionGIDs[collection] || collection  | ||||||
| 			if(collection == null || collection == MAIN_COLLECTION_TITLE){ | 			if(collection == null || collection == MAIN_COLLECTION_TITLE){ | ||||||
| 				return | 				return } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			// if only collection is given, reset align to null...
 | 			// if only collection is given, reset align to null...
 | ||||||
| 			align = align === collection ? null : align | 			align = align === collection ? null : align | ||||||
| @ -926,12 +900,10 @@ var CollectionActions = actions.Actions({ | |||||||
| 									.concat(rorder) | 									.concat(rorder) | ||||||
| 									.unique() | 									.unique() | ||||||
| 									.reverse()  | 									.reverse()  | ||||||
| 								data.updateImagePositions() | 								data.updateImagePositions() }) | ||||||
| 							}) |  | ||||||
| 
 | 
 | ||||||
| 					} else { | 					} else { | ||||||
| 						c.data = res | 						c.data = res } | ||||||
| 					} |  | ||||||
| 
 | 
 | ||||||
| 					// joining into the current collection...
 | 					// joining into the current collection...
 | ||||||
| 					if(collection == this.collection){ | 					if(collection == this.collection){ | ||||||
| @ -946,17 +918,13 @@ var CollectionActions = actions.Actions({ | |||||||
| 										.concat(rorder) | 										.concat(rorder) | ||||||
| 										.unique() | 										.unique() | ||||||
| 										.reverse()  | 										.reverse()  | ||||||
| 									data.updateImagePositions() | 									data.updateImagePositions() }) | ||||||
| 								}) |  | ||||||
| 
 | 
 | ||||||
| 						} else { | 						} else { | ||||||
| 							var cur = this.current | 							var cur = this.current | ||||||
| 							this.data = res  | 							this.data = res  | ||||||
| 							this.data.current = cur | 							this.data.current = cur } } | ||||||
| 						} | 				}).bind(this)) }], | ||||||
| 					} |  | ||||||
| 				}).bind(this)) |  | ||||||
| 		}], |  | ||||||
| 	// XXX undo: see .removeFromCrop(..) for a reference implementation...
 | 	// XXX undo: see .removeFromCrop(..) for a reference implementation...
 | ||||||
| 	// 		this will need:
 | 	// 		this will need:
 | ||||||
| 	// 			- .collect(..) to be able to place images...
 | 	// 			- .collect(..) to be able to place images...
 | ||||||
| @ -984,14 +952,15 @@ var CollectionActions = actions.Actions({ | |||||||
| 		NOTE: this will remove any gid, be it image or ribbon. | 		NOTE: this will remove any gid, be it image or ribbon. | ||||||
| 		`,
 | 		`,
 | ||||||
| 		{ | 		{ | ||||||
| 			mode: function(){ return !this.collection && 'disabled' }, | 			mode: function(){  | ||||||
|  | 				return !this.collection && 'disabled' }, | ||||||
| 			// XXX two ways to go:
 | 			// XXX two ways to go:
 | ||||||
| 			//		- .collect(..) + .data.placeImage(..)
 | 			//		- .collect(..) + .data.placeImage(..)
 | ||||||
| 			//		- rewrite .collect(..) to use .data.placeImage(..) (like: .addToCrop(..))
 | 			//		- rewrite .collect(..) to use .data.placeImage(..) (like: .addToCrop(..))
 | ||||||
| 			getUndoState: function(d){ | 			getUndoState: function(d){ | ||||||
| 				d.placements = this.data.getImagePositions(d.args[0]) | 				d.placements = this.data.getImagePositions(d.args[0]) | ||||||
| 				d.collection = d.args[1] || this.collection | 				d.collection = d.args[1]  | ||||||
| 			}, | 					|| this.collection }, | ||||||
| 			// XXX this does not work yet...
 | 			// XXX this does not work yet...
 | ||||||
| 			// 		...need to trigger .reload(..), and considering that
 | 			// 		...need to trigger .reload(..), and considering that
 | ||||||
| 			// 		this is a UI action, doing so explicitly is logical...
 | 			// 		this is a UI action, doing so explicitly is logical...
 | ||||||
| @ -1015,8 +984,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 								// XXX does not place correctly...
 | 								// XXX does not place correctly...
 | ||||||
| 								that.data.placeImage(e[0], e[1], that.data.order[e[2]])  | 								that.data.placeImage(e[0], e[1], that.data.order[e[2]])  | ||||||
| 							that.reload(true) | 							that.reload(true) | ||||||
| 						}) }) | 						}) }) }, | ||||||
| 			}, |  | ||||||
| 			//*/
 | 			//*/
 | ||||||
| 		}, | 		}, | ||||||
| 		function(gids, collection){ | 		function(gids, collection){ | ||||||
| @ -1026,8 +994,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 					|| collection == MAIN_COLLECTION_TITLE | 					|| collection == MAIN_COLLECTION_TITLE | ||||||
| 					|| !this.collections  | 					|| !this.collections  | ||||||
| 					|| !(collection in this.collections)){ | 					|| !(collection in this.collections)){ | ||||||
| 				return | 				return } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			var that = this | 			var that = this | ||||||
| 
 | 
 | ||||||
| @ -1053,9 +1020,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			if(this.collections[collection].data  | 			if(this.collections[collection].data  | ||||||
| 					&& this.data !== this.collections[collection].data){ | 					&& this.data !== this.collections[collection].data){ | ||||||
| 				this.collections[collection].data | 				this.collections[collection].data | ||||||
| 					.clear(gids) | 					.clear(gids) } }], | ||||||
| 			} |  | ||||||
| 		}], |  | ||||||
| 	uncollectRibbon: ['Collections|Ribbon/Remove ribbon from collection', | 	uncollectRibbon: ['Collections|Ribbon/Remove ribbon from collection', | ||||||
| 		core.doc`Remove ribbons from collection...
 | 		core.doc`Remove ribbons from collection...
 | ||||||
| 
 | 
 | ||||||
| @ -1085,8 +1050,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 			gids = gids || 'current' | 			gids = gids || 'current' | ||||||
| 			gids = gids instanceof Array ? gids : [gids] | 			gids = gids instanceof Array ? gids : [gids] | ||||||
| 			gids = gids.map(function(gid){ return that.data.getRibbon(gid) }) | 			gids = gids.map(function(gid){ return that.data.getRibbon(gid) }) | ||||||
| 			return this.uncollect(gids, collection)  | 			return this.uncollect(gids, collection) }], | ||||||
| 		}], |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// Serialization...
 | 	// Serialization...
 | ||||||
| @ -1103,13 +1067,12 @@ var CollectionActions = actions.Actions({ | |||||||
| 		var order = json.collection_order || Object.keys(c) | 		var order = json.collection_order || Object.keys(c) | ||||||
| 
 | 
 | ||||||
| 		if((json.location || {}).collection){ | 		if((json.location || {}).collection){ | ||||||
| 			this.location.collection = json.location.collection | 			this.location.collection = json.location.collection } | ||||||
| 		} |  | ||||||
| 			 | 			 | ||||||
| 		Object.keys(c).forEach(function(title){ | 		Object.keys(c) | ||||||
|  | 			.forEach(function(title){ | ||||||
| 				if(c[title] === false){ | 				if(c[title] === false){ | ||||||
| 				return | 					return } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 				var state = collections[title] = { title: title } | 				var state = collections[title] = { title: title } | ||||||
| 
 | 
 | ||||||
| @ -1120,13 +1083,11 @@ var CollectionActions = actions.Actions({ | |||||||
| 						c[title].data | 						c[title].data | ||||||
| 					: data.Data.fromJSON(c[title].data) | 					: data.Data.fromJSON(c[title].data) | ||||||
| 				if(d){ | 				if(d){ | ||||||
| 				state.data = d | 					state.data = d } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 				// image count...
 | 				// image count...
 | ||||||
| 				if(c[title].count){ | 				if(c[title].count){ | ||||||
| 				state.count = c[title].count | 					state.count = c[title].count } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 				// NOTE: this can be done lazily when loading each collection
 | 				// NOTE: this can be done lazily when loading each collection
 | ||||||
| 				// 		but doing so will make the system more complex and 
 | 				// 		but doing so will make the system more complex and 
 | ||||||
| @ -1137,27 +1098,20 @@ var CollectionActions = actions.Actions({ | |||||||
| 						.map(function(c){  | 						.map(function(c){  | ||||||
| 							return c instanceof data.Data ?  | 							return c instanceof data.Data ?  | ||||||
| 								c  | 								c  | ||||||
| 							: data.Data(c) }) | 								: data.Data(c) }) } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 				// copy the rest of collection data as-is...
 | 				// copy the rest of collection data as-is...
 | ||||||
| 				Object.keys(c[title]) | 				Object.keys(c[title]) | ||||||
| 					.forEach(function(key){ | 					.forEach(function(key){ | ||||||
| 						if(key in state){ | 						if(key in state){ | ||||||
| 						return | 							return } | ||||||
| 					} |  | ||||||
| 
 |  | ||||||
| 						state[key] = c[title][key] | 						state[key] = c[title][key] | ||||||
| 				}) | 					}) }) | ||||||
| 		}) |  | ||||||
| 
 | 
 | ||||||
| 		return function(){ | 		return function(){ | ||||||
| 			if(Object.keys(collections).length > 0){ | 			if(Object.keys(collections).length > 0){ | ||||||
| 				this.collections = collections | 				this.collections = collections | ||||||
| 				this.collection_order = order | 				this.collection_order = order } } }], | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}], |  | ||||||
| 	//
 | 	//
 | ||||||
| 	// Supported modes:
 | 	// Supported modes:
 | ||||||
| 	// 	current (default) 	- ignore collections
 | 	// 	current (default) 	- ignore collections
 | ||||||
| @ -1197,15 +1151,14 @@ var CollectionActions = actions.Actions({ | |||||||
| 						: main.data) | 						: main.data) | ||||||
| 					.json() | 					.json() | ||||||
| 
 | 
 | ||||||
| 				delete res.location.collection | 				delete res.location.collection } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			res.collections = {} | 			res.collections = {} | ||||||
| 			order.forEach(function(title){ | 			order.forEach(function(title){ | ||||||
| 				// in base mode skip the main collection...
 | 				// in base mode skip the main collection...
 | ||||||
| 				if(mode == 'base' && title == MAIN_COLLECTION_TITLE){ | 				if(mode == 'base'  | ||||||
| 					return | 						&& title == MAIN_COLLECTION_TITLE){ | ||||||
| 				} | 					return } | ||||||
| 
 | 
 | ||||||
| 				var state = collections[title] | 				var state = collections[title] | ||||||
| 
 | 
 | ||||||
| @ -1213,8 +1166,7 @@ var CollectionActions = actions.Actions({ | |||||||
| 				// XXX
 | 				// XXX
 | ||||||
| 				if(state == null){ | 				if(state == null){ | ||||||
| 					res.collections[title] = false | 					res.collections[title] = false | ||||||
| 					return | 					return } | ||||||
| 				} |  | ||||||
| 
 | 
 | ||||||
| 				// build the JSON...
 | 				// build the JSON...
 | ||||||
| 				var s = res.collections[title] = { title: title } | 				var s = res.collections[title] = { title: title } | ||||||
| @ -1229,18 +1181,14 @@ var CollectionActions = actions.Actions({ | |||||||
| 					s.count = data.length | 					s.count = data.length | ||||||
| 
 | 
 | ||||||
| 				} else if(state.count) { | 				} else if(state.count) { | ||||||
| 					s.count = state.count | 					s.count = state.count } | ||||||
| 				} |  | ||||||
| 
 | 
 | ||||||
| 				// handle .crop_stack of collection...
 | 				// handle .crop_stack of collection...
 | ||||||
| 				// NOTE: in base mode, crop_stack is ignored...
 | 				// NOTE: in base mode, crop_stack is ignored...
 | ||||||
| 				if(mode != 'base' && state.crop_stack){ | 				if(mode != 'base' && state.crop_stack){ | ||||||
| 					s.crop_stack = state.crop_stack | 					s.crop_stack = state.crop_stack | ||||||
| 						.map(function(d){ return d.json() }) | 						.map(function(d){ return d.json() }) } | ||||||
| 				} | 			}) } } }], | ||||||
| 			}) |  | ||||||
| 		} |  | ||||||
| 	} }], |  | ||||||
| 	clone: [function(full){ | 	clone: [function(full){ | ||||||
| 		return function(res){ | 		return function(res){ | ||||||
| 			if(this.collections){ | 			if(this.collections){ | ||||||
| @ -1258,25 +1206,18 @@ var CollectionActions = actions.Actions({ | |||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
| 						if(cur[title].data){ | 						if(cur[title].data){ | ||||||
| 							c.data = cur[title].data.clone() | 							c.data = cur[title].data.clone() } | ||||||
| 						} |  | ||||||
| 
 | 
 | ||||||
| 						if(cur[title].crop_stack){ | 						if(cur[title].crop_stack){ | ||||||
| 							c.crop_stack = cur[title].crop_stack | 							c.crop_stack = cur[title].crop_stack | ||||||
| 								.map(function(d){ return d.clone() }) | 								.map(function(d){ return d.clone() }) } }) } } }], | ||||||
| 						} |  | ||||||
| 					}) |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 		} }], |  | ||||||
| 
 | 
 | ||||||
| 	clear: [function(){ | 	clear: [function(){ | ||||||
| 		this.collection | 		this.collection | ||||||
| 			&& this.collectionUnloaded('*') | 			&& this.collectionUnloaded('*') | ||||||
| 		delete this.collections | 		delete this.collections | ||||||
| 		delete this.__collection_order | 		delete this.__collection_order | ||||||
| 		delete this.location.collection | 		delete this.location.collection }], | ||||||
| 	}], |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// Config and interface stuff...
 | 	// Config and interface stuff...
 | ||||||
| @ -2424,8 +2365,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 						.on('update', function(){ | 						.on('update', function(){ | ||||||
| 							dialog.filter(JSON.stringify((that.collection || MAIN_COLLECTION_TITLE) | 							dialog.filter(JSON.stringify((that.collection || MAIN_COLLECTION_TITLE) | ||||||
| 									.replace(/\$/g, ''))) | 									.replace(/\$/g, ''))) | ||||||
| 								.addClass('highlighted') | 								.addClass('highlighted') }) | ||||||
| 						}) |  | ||||||
| 
 | 
 | ||||||
| 					// nothing loaded...
 | 					// nothing loaded...
 | ||||||
| 					// NOTE: we have to check both .data and .collection as
 | 					// NOTE: we have to check both .data and .collection as
 | ||||||
| @ -2433,24 +2373,21 @@ var UICollectionActions = actions.Actions({ | |||||||
| 					// 		.data but a set .collection...
 | 					// 		.data but a set .collection...
 | ||||||
| 					if(that.data.length == 0 && that.collection == null){ | 					if(that.data.length == 0 && that.collection == null){ | ||||||
| 						make.Empty('No collections...') | 						make.Empty('No collections...') | ||||||
| 						return | 						return } | ||||||
| 					} |  | ||||||
| 
 | 
 | ||||||
| 					var openHandler = function(_, title){ | 					var openHandler = function(_, title){ | ||||||
| 						var title = $(this).find('.text').attr('text') || title | 						var title = $(this).find('.text').attr('text') || title | ||||||
| 						// create collection if it does not exist...
 | 						// create collection if it does not exist...
 | ||||||
| 						if(!that.collections  | 						if(!that.collections  | ||||||
| 								|| !(title in that.collections)){ | 								|| !(title in that.collections)){ | ||||||
| 							that.newCollection(title) | 							that.newCollection(title) } | ||||||
| 						} |  | ||||||
| 
 | 
 | ||||||
| 						var gid = that.current | 						var gid = that.current | ||||||
| 						action ? | 						action ? | ||||||
| 							action.call(that, title) | 							action.call(that, title) | ||||||
| 							: that.loadCollection(title) | 							: that.loadCollection(title) | ||||||
| 						that.focusImage(gid) | 						that.focusImage(gid) | ||||||
| 						dialog.close() | 						dialog.close() } | ||||||
| 					} |  | ||||||
| 					var setItemState = function(title){ | 					var setItemState = function(title){ | ||||||
| 						var gid = ((that.collections || {})[title] || {}).gid || title | 						var gid = ((that.collections || {})[title] || {}).gid || title | ||||||
| 						// handle main collection changes...
 | 						// handle main collection changes...
 | ||||||
| @ -2490,8 +2427,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 						i = (!i && title == MAIN_COLLECTION_TITLE && !that.collection) ? | 						i = (!i && title == MAIN_COLLECTION_TITLE && !that.collection) ? | ||||||
| 							that.data.length  | 							that.data.length  | ||||||
| 							: i | 							: i | ||||||
| 						i && $(this).attr('count', i) | 						i && $(this).attr('count', i) } | ||||||
| 					} |  | ||||||
| 
 | 
 | ||||||
| 					// update collection list if changed externally...
 | 					// update collection list if changed externally...
 | ||||||
| 					collections.splice.apply(collections,  | 					collections.splice.apply(collections,  | ||||||
| @ -2572,9 +2508,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 
 | 
 | ||||||
| 								// rename was successful...
 | 								// rename was successful...
 | ||||||
| 								if(to in that.collections){ | 								if(to in that.collections){ | ||||||
| 									collections[collections.indexOf(from)] = to | 									collections[collections.indexOf(from)] = to } }, | ||||||
| 								} |  | ||||||
| 							}, |  | ||||||
| 						}) | 						}) | ||||||
| 				}, { | 				}, { | ||||||
| 					cls: 'collection-list', | 					cls: 'collection-list', | ||||||
| @ -2592,10 +2526,8 @@ var UICollectionActions = actions.Actions({ | |||||||
| 						&& (that.config[last_used_collection] = title) }) | 						&& (that.config[last_used_collection] = title) }) | ||||||
| 				.close(function(){ | 				.close(function(){ | ||||||
| 					that.collection_order = collections | 					that.collection_order = collections | ||||||
| 
 |  | ||||||
| 					to_remove | 					to_remove | ||||||
| 						.forEach(function(title){ that.removeCollection(title) })  | 						.forEach(function(title){ that.removeCollection(title) }) }) | ||||||
| 				}) |  | ||||||
| 		})], | 		})], | ||||||
| 	// XXX should this be able to add new collections???
 | 	// XXX should this be able to add new collections???
 | ||||||
| 	browseImageCollections: ['Collections|Image/Image $collections...', | 	browseImageCollections: ['Collections|Image/Image $collections...', | ||||||
| @ -2623,8 +2555,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 					if(defaults){ | 					if(defaults){ | ||||||
| 						all.splice.apply(all,  | 						all.splice.apply(all,  | ||||||
| 							[0, all.length] | 							[0, all.length] | ||||||
| 								.concat(all.concat(defaults).unique())) | 								.concat(all.concat(defaults).unique())) } | ||||||
| 					} |  | ||||||
| 
 | 
 | ||||||
| 					// load collections...
 | 					// load collections...
 | ||||||
| 					var loading = all | 					var loading = all | ||||||
| @ -2646,8 +2577,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 										dialog.update()  | 										dialog.update()  | ||||||
| 									}, 100) | 									}, 100) | ||||||
| 								})  | 								})  | ||||||
| 							return c | 							return c }) | ||||||
| 						}) |  | ||||||
| 					 | 					 | ||||||
| 					// containing collections...
 | 					// containing collections...
 | ||||||
| 					collections = collections | 					collections = collections | ||||||
| @ -2661,9 +2591,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 						all.forEach(function(title){ | 						all.forEach(function(title){ | ||||||
| 							collections.indexOf(title) < 0 | 							collections.indexOf(title) < 0 | ||||||
| 								&& loading.indexOf(title) < 0 | 								&& loading.indexOf(title) < 0 | ||||||
| 								&& to_remove.push(title.replace(/\$/g, '')) | 								&& to_remove.push(title.replace(/\$/g, '')) }) } | ||||||
| 						}) |  | ||||||
| 					} |  | ||||||
| 
 | 
 | ||||||
| 					all.length > 0 ? | 					all.length > 0 ? | ||||||
| 						make.EditableList(all,  | 						make.EditableList(all,  | ||||||
| @ -2732,8 +2660,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 			this.saveCollection(title, 'current')  | 			this.saveCollection(title, 'current')  | ||||||
| 			// XXX should we be doing this manually here or in .saveCollection(..)
 | 			// XXX should we be doing this manually here or in .saveCollection(..)
 | ||||||
| 			title == this.collection | 			title == this.collection | ||||||
| 				&& this.loadCollection('!') | 				&& this.loadCollection('!') })], | ||||||
| 		})], |  | ||||||
| 	collect: [ | 	collect: [ | ||||||
| 		collectionGetterWrapper(function(gids, title){  | 		collectionGetterWrapper(function(gids, title){  | ||||||
| 			if(title == null){ | 			if(title == null){ | ||||||
| @ -2761,8 +2688,7 @@ var UICollectionActions = actions.Actions({ | |||||||
| 					var images = collection.data.getImages('all') | 					var images = collection.data.getImages('all') | ||||||
| 
 | 
 | ||||||
| 					that.crop(images, false) | 					that.crop(images, false) | ||||||
| 				}) | 				}) }, null, false)], | ||||||
| 		}, null, false)], |  | ||||||
| 	cropOutImagesInCollection: ['Collections|Crop/Remove collection images from crop...', | 	cropOutImagesInCollection: ['Collections|Crop/Remove collection images from crop...', | ||||||
| 		{mode: 'cropImagesInCollection'}, | 		{mode: 'cropImagesInCollection'}, | ||||||
| 		mixedModeCollectionAction(function(title){ | 		mixedModeCollectionAction(function(title){ | ||||||
|  | |||||||
| @ -2520,7 +2520,6 @@ var FileSystemWriterActions = actions.Actions({ | |||||||
| 					return res | 					return res | ||||||
| 				})) | 				})) | ||||||
| 		}] | 		}] | ||||||
| 
 |  | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -2626,6 +2625,7 @@ var FileSystemWriterUIActions = actions.Actions({ | |||||||
| 		// Format:
 | 		// Format:
 | ||||||
| 		// 	{
 | 		// 	{
 | ||||||
| 		//		// NOTE: this is set/used by .exportDialog(..)
 | 		//		// NOTE: this is set/used by .exportDialog(..)
 | ||||||
|  | 		//		// XXX replace this with action...
 | ||||||
| 		//		'mode': 'Images only',
 | 		//		'mode': 'Images only',
 | ||||||
| 		//
 | 		//
 | ||||||
| 		//		// NOTE: for more info see FileSystemWriter.config['export-settings']...
 | 		//		// NOTE: for more info see FileSystemWriter.config['export-settings']...
 | ||||||
| @ -2668,7 +2668,7 @@ var FileSystemWriterUIActions = actions.Actions({ | |||||||
| 				'path': 'L:/tmp/test/export-test/images-only/', | 				'path': 'L:/tmp/test/export-test/images-only/', | ||||||
| 				'include-virtual': true, | 				'include-virtual': true, | ||||||
| 				'clean-target': true, | 				'clean-target': true, | ||||||
| 				'preview-name-pattern': '%(fav)l%n%(-%c)c', | 				'preview-name-pattern': '%n%(-b)b%(-%c)c', | ||||||
| 				'preview-size': 1000, | 				'preview-size': 1000, | ||||||
| 				'preview-size-limit': 'no limit', | 				'preview-size-limit': 'no limit', | ||||||
| 			}, | 			}, | ||||||
| @ -2678,6 +2678,16 @@ var FileSystemWriterUIActions = actions.Actions({ | |||||||
| 		'export-history': [], | 		'export-history': [], | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
|  | 	// XXX rename???
 | ||||||
|  | 	// XXX should this be here or in FileSystemWriter???
 | ||||||
|  | 	// 		...FileSystemWriter does not define .mode for this to work correctly...
 | ||||||
|  | 	exportAs: ['- File/', | ||||||
|  | 		function(settings){ | ||||||
|  | 			settings = settings  | ||||||
|  | 				|| this.config['export-settings'] | ||||||
|  | 			var action = this.config['export-dialog-modes'][settings.mode].action | ||||||
|  | 			return this[action](settings) }], | ||||||
|  | 
 | ||||||
| 	// XXX this needs feedback...
 | 	// XXX this needs feedback...
 | ||||||
| 	// XXX should this return a promise???
 | 	// XXX should this return a promise???
 | ||||||
| 	saveIndexHere: ['File/$Save', | 	saveIndexHere: ['File/$Save', | ||||||
| @ -3086,24 +3096,14 @@ var FileSystemWriterUIActions = actions.Actions({ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// XXX export using a preset...
 | 	// XXX export using a preset...
 | ||||||
| 	// XXX should presets be available just in UI???
 | 	// XXX TODO:
 | ||||||
| 	// 		need to:
 | 	// 		- format the element into: title (optional) + info
 | ||||||
| 	// 			- pass values to export dialog (load) -- DONE
 |  | ||||||
| 	// 			- pass values to export action (use) -- DONE
 |  | ||||||
| 	exportPresets: ['- File/Export history...', | 	exportPresets: ['- File/Export history...', | ||||||
| 		widgets.makeUIDialog(function(mode){ | 		widgets.makeUIDialog(function(mode){ | ||||||
| 			var that = this | 			var that = this | ||||||
| 
 | 
 | ||||||
| 			// presets...
 | 			// presets...
 | ||||||
| 			var presets = that.config['export-presets'] || [] | 			var presets = that.config['export-presets'] || [] | ||||||
| 			var index = presets |  | ||||||
| 				.reduce(function(res, e, i){ |  | ||||||
| 					name = e.name |  | ||||||
| 						// XXX these should be type-specific...
 |  | ||||||
| 						|| `${ e.mode }: ${ e.path }` |  | ||||||
| 					res[name] = i  |  | ||||||
| 					return res }, {}) |  | ||||||
| 			var keys = Object.keys(index) |  | ||||||
| 
 | 
 | ||||||
| 			// history...
 | 			// history...
 | ||||||
| 			// XXX
 | 			// XXX
 | ||||||
| @ -3111,58 +3111,61 @@ var FileSystemWriterUIActions = actions.Actions({ | |||||||
| 			var history_index = {} | 			var history_index = {} | ||||||
| 			var history_keys = Object.keys(history_index) | 			var history_keys = Object.keys(history_index) | ||||||
| 
 | 
 | ||||||
| 			var runExport = function(title, presets, index){ | 			// XXX
 | ||||||
| 				// XXX BUG: this does not get the second preset...
 | 			var getPreset = function(title, presets, index){ | ||||||
| 				var preset = presets[index[title]] | 				return presets[index[title]] } | ||||||
| 
 |  | ||||||
| 				console.log('###', title, preset) |  | ||||||
| 
 |  | ||||||
| 				// XXX load...
 |  | ||||||
| 				 |  | ||||||
| 				// XXX STUB...
 |  | ||||||
| 				that.exportDialog(preset) |  | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			return browse.makeLister(null, function(path, make){ | 			return browse.makeLister(null, function(path, make){ | ||||||
|  | 
 | ||||||
|  | 				var index = presets | ||||||
|  | 					.reduce(function(res, e, i){ | ||||||
|  | 						name = e.name | ||||||
|  | 							// XXX these should be type-specific...
 | ||||||
|  | 							|| `${ e.mode }: "${ e.path }"` | ||||||
|  | 						res[name] = i  | ||||||
|  | 						return res }, {}) | ||||||
|  | 				var keys = Object.keys(index) | ||||||
|  | 
 | ||||||
| 				// presets...
 | 				// presets...
 | ||||||
|  | 				//make.Separator()
 | ||||||
| 				keys.length == 0 ? | 				keys.length == 0 ? | ||||||
| 					make.Empty() | 					make.Empty('No presets...') | ||||||
| 					: make.EditableList(keys, { | 					: make.EditableList(keys, { | ||||||
| 						list_id: 'presets', | 						list_id: 'presets', | ||||||
| 						sortable: true, | 						sortable: true, | ||||||
| 						new_item: false, | 						new_item: false, | ||||||
| 						buttons: [ | 						buttons: [ | ||||||
| 							// XXX new export or should this be edit???
 | 							// XXX new export or should this be edit???
 | ||||||
| 							['N', function(){ | 							['E', function(title){ | ||||||
| 								// XXX
 | 								that.exportDialog(getPreset(title, presets, index)) | ||||||
| 							}], | 						   			.close(function(){ | ||||||
|  | 										// XXX for some reason on update when 
 | ||||||
|  | 										// 		name affected the item does not 
 | ||||||
|  | 										// 		get updated...
 | ||||||
|  | 										make.dialog.update() })}], | ||||||
| 							// XXX not sure about the default icon...
 | 							// XXX not sure about the default icon...
 | ||||||
| 							['T', 'TO_TOP'], | 							['T', 'TO_TOP'], | ||||||
| 							'REMOVE', | 							'REMOVE', | ||||||
| 						], | 						], | ||||||
| 						// XXX export...
 | 						// XXX export...
 | ||||||
| 						open: function(evt, title){ | 						open: function(evt, title){ | ||||||
| 							runExport(title, presets, index) | 							that.exportAs(getPreset(title, presets, index)) | ||||||
| 							make.dialog.close() }, | 							make.dialog.close() }, | ||||||
| 						// XXX handle rename -> update index...
 | 						// XXX handle rename -> update index...
 | ||||||
| 						// XXX
 | 						// XXX
 | ||||||
| 					}) | 					}) | ||||||
| 
 | 
 | ||||||
| 				/*/ export dialog... | 				// export dialog...
 | ||||||
| 				// XXX do we need this???
 | 				make.Separator({ style: { opacity: '0.1' } }) | ||||||
| 				make.Separator() | 				make('E$xport...', { | ||||||
| 				make('$Export...', { |  | ||||||
| 					open: function(){ | 					open: function(){ | ||||||
| 						that.exportDialog()  | 						that.exportDialog()  | ||||||
| 						//make.dialog.close() 
 | 						make.dialog.close() }, }) | ||||||
| 					}, |  | ||||||
| 				}) |  | ||||||
| 				//*/
 |  | ||||||
| 
 | 
 | ||||||
| 				// history...
 | 				// history...
 | ||||||
| 				make.Separator() | 				make.Separator() | ||||||
| 				history.length == 0 ? | 				history.length == 0 ? | ||||||
| 					make.Empty() | 					make.Empty('No export history...') | ||||||
| 					: ake.EditableList(history, { | 					: ake.EditableList(history, { | ||||||
| 						list_id: 'history', | 						list_id: 'history', | ||||||
| 						sortable: false, | 						sortable: false, | ||||||
| @ -3177,10 +3180,17 @@ var FileSystemWriterUIActions = actions.Actions({ | |||||||
| 						], | 						], | ||||||
| 						// XXX export...
 | 						// XXX export...
 | ||||||
| 						open: function(evt, title){ | 						open: function(evt, title){ | ||||||
| 							runExport(title, history, history_index) | 							that.exportAs(getPreset(title, presets, index)) | ||||||
| 							make.dialog.close() }, | 							make.dialog.close() }, | ||||||
| 					}) | 					}) | ||||||
| 			}) | 			}) | ||||||
|  | 			.run(function(){ | ||||||
|  | 				var that = this | ||||||
|  | 				// XXX
 | ||||||
|  | 				this.keyboard.on('E', function(){ | ||||||
|  | 					console.log('!!!!!!!!!!!!!', that.selected) | ||||||
|  | 				}) | ||||||
|  | 			}) | ||||||
| 	   		.close(function(){ | 	   		.close(function(){ | ||||||
| 
 | 
 | ||||||
| 				// XXX need to merge history/presets back when dialog closes...
 | 				// XXX need to merge history/presets back when dialog closes...
 | ||||||
|  | |||||||
| @ -1059,10 +1059,10 @@ var KeyboardPrototype = { | |||||||
| 	on: function(key, handler){ | 	on: function(key, handler){ | ||||||
| 		// normalize args...
 | 		// normalize args...
 | ||||||
| 		if(arguments.length == 3){ | 		if(arguments.length == 3){ | ||||||
| 			[key, mode, handler] = arguments | 			var [key, mode, handler] = arguments | ||||||
| 		} else { | 		} else { | ||||||
| 			[key, handler] = arguments } | 			var [key, handler] = arguments } | ||||||
| 		mode = mode  | 		var mode = mode  | ||||||
| 			|| Object.keys(this.keyboard)[0] | 			|| Object.keys(this.keyboard)[0] | ||||||
| 		// bind...
 | 		// bind...
 | ||||||
| 		return this.handler(mode, key, handler) }, | 		return this.handler(mode, key, handler) }, | ||||||
|  | |||||||
| @ -2325,6 +2325,8 @@ var BrowserPrototype = { | |||||||
| 	// 		...basically for this to work we need to either reset or override
 | 	// 		...basically for this to work we need to either reset or override
 | ||||||
| 	// 		user-agent-stylesheet...
 | 	// 		user-agent-stylesheet...
 | ||||||
| 	// 		to override just set most of the affected options to inherit...
 | 	// 		to override just set most of the affected options to inherit...
 | ||||||
|  | 	// XXX make(..): this trims of the trailing '/' of the text in some cases...
 | ||||||
|  | 	// 		...is this a bug???
 | ||||||
| 	update: function(path, list){ | 	update: function(path, list){ | ||||||
| 		path = path || this.path | 		path = path || this.path | ||||||
| 		var browser = this.dom | 		var browser = this.dom | ||||||
| @ -2350,8 +2352,7 @@ var BrowserPrototype = { | |||||||
| 		// no selection...
 | 		// no selection...
 | ||||||
| 		} else { | 		} else { | ||||||
| 			path = this.path2list(path) | 			path = this.path2list(path) | ||||||
| 			var selection = null | 			var selection = null } | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		//-------------------------------------- prepare for update ---
 | 		//-------------------------------------- prepare for update ---
 | ||||||
| 		// prevent the browser from collapsing and then growing on 
 | 		// prevent the browser from collapsing and then growing on 
 | ||||||
| @ -2493,25 +2494,21 @@ var BrowserPrototype = { | |||||||
| 
 | 
 | ||||||
| 			var hidden = false | 			var hidden = false | ||||||
| 
 | 
 | ||||||
| 			if(that.options.holdSize){ |  | ||||||
| 			// we've started, no need to hold the size any more... 
 | 			// we've started, no need to hold the size any more... 
 | ||||||
| 			// ...and we do not need to do this more than once.
 | 			// ...and we do not need to do this more than once.
 | ||||||
| 				size_freed = !size_freed ? !_freeSize() : true | 			that.options.holdSize | ||||||
| 			} | 				&& (size_freed = !size_freed ?  | ||||||
|  | 					!_freeSize()  | ||||||
|  | 					: true) | ||||||
| 
 | 
 | ||||||
| 			// options passed as an object...
 | 			// options passed as an object...
 | ||||||
| 			if(traversable != null && typeof(traversable) != typeof(true)){ | 			if(traversable != null && typeof(traversable) != typeof(true)){ | ||||||
| 				opts = traversable | 				opts = traversable | ||||||
| 
 | 				var {traversable, disabled, buttons, hidden} = opts } | ||||||
| 				traversable = opts.traversable |  | ||||||
| 				disabled = opts.disabled |  | ||||||
| 				buttons = opts.buttons |  | ||||||
| 				hidden = opts.hidden |  | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			buttons = buttons | 			buttons = buttons | ||||||
| 				|| (that.options.itemButtons && that.options.itemButtons.slice()) | 				|| (that.options.itemButtons  | ||||||
| 
 | 					&& that.options.itemButtons.slice()) | ||||||
| 
 | 
 | ||||||
| 			// NOTE: this is becoming a bit big, so here the code is 
 | 			// NOTE: this is becoming a bit big, so here the code is 
 | ||||||
| 			// 		split into more wieldable sections...
 | 			// 		split into more wieldable sections...
 | ||||||
| @ -2525,11 +2522,13 @@ var BrowserPrototype = { | |||||||
| 				var shorthand = that.options.elementShorthand[p] | 				var shorthand = that.options.elementShorthand[p] | ||||||
| 				if(typeof(res) == typeof('str')){ | 				if(typeof(res) == typeof('str')){ | ||||||
| 					res = $(shorthand.html) | 					res = $(shorthand.html) | ||||||
| 						.addClass(shorthand.class || '') | 						.addClass(shorthand.class || '') } | ||||||
| 				} | 				opts.attrs | ||||||
|  | 					&& res.attr(opts.attrs) | ||||||
|  | 				opts.style | ||||||
|  | 					&& res.css(opts.style) | ||||||
| 				res.appendTo(l) | 				res.appendTo(l) | ||||||
| 				return res | 				return res } | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			//------------------------------------------- item text ---
 | 			//------------------------------------------- item text ---
 | ||||||
| 			// array of str/func/dom...
 | 			// array of str/func/dom...
 | ||||||
| @ -2618,11 +2617,7 @@ var BrowserPrototype = { | |||||||
| 										&& registered_shortcuts.push(nk)) | 										&& registered_shortcuts.push(nk)) | ||||||
| 									return mark ? | 									return mark ? | ||||||
| 										`<span class="keyboard-shortcut">${k}</span>` | 										`<span class="keyboard-shortcut">${k}</span>` | ||||||
| 										: k | 										: k })) }) } } | ||||||
| 								})) |  | ||||||
| 						}) |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			//---------------------------------------------------------
 | 			//---------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| 			// tell the lister that we have started in interactive mode...
 | 			// tell the lister that we have started in interactive mode...
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user