mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-29 18:30:09 +00:00 
			
		
		
		
	cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									c13f0b3054
								
							
						
					
					
						commit
						b888d279ea
					
				| @ -482,17 +482,6 @@ module.URLHistoryFSWriter = core.ImageGridFeatures.Feature({ | |||||||
| 
 | 
 | ||||||
| var URLHistoryUIActions = actions.Actions({ | var URLHistoryUIActions = actions.Actions({ | ||||||
| 	config: { | 	config: { | ||||||
| 		// Indicate when to remove striked items from url history list
 |  | ||||||
| 		//
 |  | ||||||
| 		// Supported values:
 |  | ||||||
| 		// 	- true | undefined		- always remove
 |  | ||||||
| 		// 	- flase					- never remove
 |  | ||||||
| 		// 	- [ 'open', 'close' ]	- explicitly select event
 |  | ||||||
| 		//
 |  | ||||||
| 		// XXX do we need this???
 |  | ||||||
| 		// XXX used only in .listURLHistoryOld(..)
 |  | ||||||
| 		'url-history-list-clear': ['open', 'close'], |  | ||||||
| 
 |  | ||||||
| 		// If true pushing the pin item button will also focus the item
 | 		// If true pushing the pin item button will also focus the item
 | ||||||
| 		//
 | 		//
 | ||||||
| 		// NOTE: Both settings have their pluses and minuses:
 | 		// NOTE: Both settings have their pluses and minuses:
 | ||||||
| @ -505,209 +494,6 @@ var URLHistoryUIActions = actions.Actions({ | |||||||
| 		'url-history-focus-on-pin': false, | 		'url-history-focus-on-pin': false, | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
| 	listURLHistoryOld: ['History|File/Location history (old)...', |  | ||||||
| 		widgets.makeUIDialog(function(){ |  | ||||||
| 			var that = this |  | ||||||
| 			var parent = this.preventClosing ? this.preventClosing() : null |  | ||||||
| 			var cur = this.location.path |  | ||||||
| 
 |  | ||||||
| 			// caches...
 |  | ||||||
| 			var fs_state = {} |  | ||||||
| 			var to_remove = [] |  | ||||||
| 
 |  | ||||||
| 			// remove stirked out elements...
 |  | ||||||
| 			var removeStriked = function(evt){ |  | ||||||
| 				var rem = that.config['url-history-list-clear'] |  | ||||||
| 				if(rem == false || rem != null && rem.indexOf(evt) < 0){ |  | ||||||
| 					return |  | ||||||
| 				} |  | ||||||
| 				to_remove.forEach(function(e){ |  | ||||||
| 					that.dropURLFromHistory(e) |  | ||||||
| 				}) |  | ||||||
| 				to_remove = [] |  | ||||||
| 			} |  | ||||||
| 			var makeHistoryList = function(fs_state){ |  | ||||||
| 				fs_state = fs_state || {} |  | ||||||
| 				var history = Object.keys(that.url_history).reverse() |  | ||||||
| 
 |  | ||||||
| 				// pinned items...
 |  | ||||||
| 				var list = history |  | ||||||
| 					.filter(function(p){ |  | ||||||
| 						// NOTE: yes direct access is faster, but 
 |  | ||||||
| 						// 		calling the toggler (common API) here
 |  | ||||||
| 						// 		will isolate the level knowledge to a
 |  | ||||||
| 						// 		single point which will simplify things
 |  | ||||||
| 						// 		if anything changes...
 |  | ||||||
| 						//return that.url_history[p].pinned 
 |  | ||||||
| 						return that.toggleURLPinned(p, '?') == 'on' |  | ||||||
| 					})  |  | ||||||
| 					.map(function(p){ |  | ||||||
| 						// prevent from drawing again...
 |  | ||||||
| 						history.splice(history.indexOf(p), 1) |  | ||||||
| 
 |  | ||||||
| 						// see of we need a full refresh or use the 
 |  | ||||||
| 						// last fs_state...
 |  | ||||||
| 						if(p in fs_state){ |  | ||||||
| 							// XXX need to make this faster...
 |  | ||||||
| 							var d = fs_state[p] |  | ||||||
| 
 |  | ||||||
| 						} else { |  | ||||||
| 							var d = !that.checkURLFromHistory(p) |  | ||||||
| 							fs_state[p] = d |  | ||||||
| 						} |  | ||||||
| 
 |  | ||||||
| 						return [p, |  | ||||||
| 							[p == cur ? 'highlighted selected': '', 'pinned'].join(' '), |  | ||||||
| 							{ disabled: d } |  | ||||||
| 						] |  | ||||||
| 					}) |  | ||||||
| 
 |  | ||||||
| 				// separator...
 |  | ||||||
| 				list.push([ '---', 'pinned-separator', {}]) |  | ||||||
| 
 |  | ||||||
| 				// history...
 |  | ||||||
| 				list = list.concat(history  |  | ||||||
| 					// NOTE: this might get a little slow for 
 |  | ||||||
| 					// 		very large sets...
 |  | ||||||
| 					.map(function(p){ |  | ||||||
| 						// see of we need a full refresh or use the 
 |  | ||||||
| 						// last fs_state...
 |  | ||||||
| 						if(p in fs_state){ |  | ||||||
| 							// XXX need to make this faster...
 |  | ||||||
| 							var d = fs_state[p] |  | ||||||
| 
 |  | ||||||
| 						} else { |  | ||||||
| 							var d = !that.checkURLFromHistory(p) |  | ||||||
| 							fs_state[p] = d |  | ||||||
| 						} |  | ||||||
| 
 |  | ||||||
| 						return [p,  |  | ||||||
| 							p == cur ? 'highlighted selected': '', |  | ||||||
| 							{disabled: d}, |  | ||||||
| 						] |  | ||||||
| 					})) |  | ||||||
| 
 |  | ||||||
| 				// history is empty...
 |  | ||||||
| 				// NOTE: the length here is 1 because we need to account
 |  | ||||||
| 				// 		for the separator...
 |  | ||||||
| 				if(list.length == 1){ |  | ||||||
| 					list.push([ |  | ||||||
| 						'No history...',  |  | ||||||
| 						{ |  | ||||||
| 							disabled: true,  |  | ||||||
| 							buttons: [], |  | ||||||
| 						} |  | ||||||
| 					]) |  | ||||||
| 				} |  | ||||||
| 
 |  | ||||||
| 				return list |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 			// NOTE: this partially re-implements browse.Items.EditableList(..)
 |  | ||||||
| 			// 		but since we have the pinned items we can't use it directly
 |  | ||||||
| 			// 		...and since .EditableList(..) can't be used twice per 
 |  | ||||||
| 			// 		dialog we can't work around this...
 |  | ||||||
| 			var o = browse.makeLister(null,  |  | ||||||
| 				function(path, make){ |  | ||||||
| 					makeHistoryList() |  | ||||||
| 						.forEach(function(elem){ |  | ||||||
| 							var e = elem.slice() |  | ||||||
| 							var path = e.shift() |  | ||||||
| 							var cfg = e.pop() |  | ||||||
| 							var cls = e.pop() || '' |  | ||||||
| 
 |  | ||||||
| 							make(path, cfg) |  | ||||||
| 								.attr('path', path) |  | ||||||
| 								.addClass(cls) |  | ||||||
| 						}) |  | ||||||
| 				}, |  | ||||||
| 				// add item buttons...
 |  | ||||||
| 				{ itemButtons: [ |  | ||||||
| 					// open...
 |  | ||||||
| 					['<span class="show-on-hover">↗</span>',  |  | ||||||
| 						function(p){  |  | ||||||
| 							o.browsePath(p) }], |  | ||||||
| 					// move to top...
 |  | ||||||
| 					//['<span class="show-on-hover">♦</span>', 
 |  | ||||||
| 					['♦',  |  | ||||||
| 						function(p){ |  | ||||||
| 							that.setTopURLHistory(p) |  | ||||||
| 							o.redraw(p) |  | ||||||
| 						}], |  | ||||||
| 					// pin to top...
 |  | ||||||
| 					// XXX should this be standard functionality???
 |  | ||||||
| 					['<span class="pin-set">●</span>' |  | ||||||
| 					+'<span class="pin-unset">○</span>',  |  | ||||||
| 						function(p, cur){ |  | ||||||
| 							// change state...
 |  | ||||||
| 							// pinned...
 |  | ||||||
| 							if(cur.hasClass('pinned')){ |  | ||||||
| 								cur.removeClass('pinned') |  | ||||||
| 								that.toggleURLPinned(p, 'off') |  | ||||||
| 
 |  | ||||||
| 							// not pinned...
 |  | ||||||
| 							} else { |  | ||||||
| 								cur.addClass('pinned') |  | ||||||
| 								that.toggleURLPinned(p, 'on') |  | ||||||
| 							} |  | ||||||
| 
 |  | ||||||
| 							// focus...
 |  | ||||||
| 							that.config['url-history-focus-on-pin'] |  | ||||||
| 								&& o.select(cur) |  | ||||||
| 
 |  | ||||||
| 							// place...
 |  | ||||||
| 							o.redraw() |  | ||||||
| 						}], |  | ||||||
| 					// mark for removal...
 |  | ||||||
| 					browse.buttons.markForRemoval(to_remove)  |  | ||||||
| 				] }) |  | ||||||
| 				.open(function(evt, path){  |  | ||||||
| 					removeStriked('open') |  | ||||||
| 
 |  | ||||||
| 					o.close()  |  | ||||||
| 
 |  | ||||||
| 					that.openURLFromHistory(path) |  | ||||||
| 				}) |  | ||||||
| 				.on('close', function(){ |  | ||||||
| 					removeStriked('close') |  | ||||||
| 				}) |  | ||||||
| 
 |  | ||||||
| 			// Monkey-patch: fast redraw...
 |  | ||||||
| 			//
 |  | ||||||
| 			// NOTE: this is substantially faster than calling .update()
 |  | ||||||
| 			// 		because this will only change positions of a view dom 
 |  | ||||||
| 			// 		elements while .update(..) will redraw the while thing...
 |  | ||||||
| 			// NOTE: this also uses fs_state for caching...
 |  | ||||||
| 			o.redraw = function(path){ |  | ||||||
| 				var list = o.dom.find('.list') |  | ||||||
| 				makeHistoryList(fs_state) |  | ||||||
| 					.forEach(function(elem, i){ |  | ||||||
| 						if(path && path != elem[0]){ |  | ||||||
| 							return |  | ||||||
| 						} |  | ||||||
| 						// move...
 |  | ||||||
| 						if(list.children().eq(i).attr('path') != elem[0]){ |  | ||||||
| 							list.children().eq(i) |  | ||||||
| 								.before(list |  | ||||||
| 									.find('[path="'+elem[0]+'"]')) |  | ||||||
| 						} |  | ||||||
| 					}) |  | ||||||
| 		   		return this |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			// handle 'O' button to browse path...
 |  | ||||||
| 			o.browsePath = function(p){ |  | ||||||
| 				that.browsePath(p || this.selected) |  | ||||||
| 					.close(function(evt, reason){ |  | ||||||
| 						reason != 'reject' |  | ||||||
| 							&& o.close(reason) |  | ||||||
| 					}) } |  | ||||||
| 			o.keyboard.handler('General', 'O', 'browsePath') |  | ||||||
| 
 |  | ||||||
| 			return o |  | ||||||
| 		})], |  | ||||||
| 
 |  | ||||||
| 	// XXX add option to force full update on dialog.update() (???)
 | 	// XXX add option to force full update on dialog.update() (???)
 | ||||||
| 	listURLHistory: ['History|File/Location history...', | 	listURLHistory: ['History|File/Location history...', | ||||||
| 		widgets.makeUIDialog(function(){ | 		widgets.makeUIDialog(function(){ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user