mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-03 21:00:14 +00:00 
			
		
		
		
	split off marks into a separate module...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									0c3b584ca8
								
							
						
					
					
						commit
						842e7008c2
					
				
							
								
								
									
										104
									
								
								ui/base.js
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								ui/base.js
									
									
									
									
									
								
							@ -837,110 +837,6 @@ function shiftImageDownNewRibbon(image, moving){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*********************************************************** Marks ***/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// XXX shifting images and unmarking in this mode do not work correctly...
 | 
					 | 
				
			||||||
var toggleMarkesView = createCSSClassToggler('.viewer', 'marks-visible',
 | 
					 | 
				
			||||||
	function(){
 | 
					 | 
				
			||||||
		var cur = $('.current.image')
 | 
					 | 
				
			||||||
		// current is marked...
 | 
					 | 
				
			||||||
		if(cur.hasClass('marked')){
 | 
					 | 
				
			||||||
			centerView(null, 'css')
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		} 
 | 
					 | 
				
			||||||
		// there is a marked image in this ribbon...
 | 
					 | 
				
			||||||
		var target = getImageBefore(cur, null)
 | 
					 | 
				
			||||||
		if(target.length > 0){
 | 
					 | 
				
			||||||
			centerView(focusImage(target), 'css')
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		// get marked image from other ribbons...
 | 
					 | 
				
			||||||
		prevRibbon()
 | 
					 | 
				
			||||||
		if($('.current.image').hasClass('marked')){
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		nextRibbon()
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// XXX if this unmarks an image in marked-only mode no visible image is 
 | 
					 | 
				
			||||||
// 		going to be current...
 | 
					 | 
				
			||||||
var toggleImageMark = createCSSClassToggler('.current.image', 'marked',
 | 
					 | 
				
			||||||
	function(action){
 | 
					 | 
				
			||||||
		toggleMarkesView('on')
 | 
					 | 
				
			||||||
		$('.viewer').trigger('togglingMark', [$('.current.image'), action])
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// mode can be:
 | 
					 | 
				
			||||||
//	- 'ribbon'
 | 
					 | 
				
			||||||
//	- 'all'
 | 
					 | 
				
			||||||
function removeImageMarks(mode){
 | 
					 | 
				
			||||||
	// remove marks from current ribbon (default)...
 | 
					 | 
				
			||||||
	if(mode == 'ribbon' || mode == null){
 | 
					 | 
				
			||||||
		var ribbon = getRibbon()
 | 
					 | 
				
			||||||
		$('.viewer').trigger('removeingRibbonMarks', [ribbon])
 | 
					 | 
				
			||||||
		return ribbon
 | 
					 | 
				
			||||||
			.find('.marked')
 | 
					 | 
				
			||||||
				.removeClass('marked')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// remove all marks...
 | 
					 | 
				
			||||||
	} else if(mode == 'all'){
 | 
					 | 
				
			||||||
		$('.viewer').trigger('removeingAllMarks')
 | 
					 | 
				
			||||||
		return $('.marked')
 | 
					 | 
				
			||||||
			.removeClass('marked')
 | 
					 | 
				
			||||||
	} 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function markAll(mode){
 | 
					 | 
				
			||||||
	// remove marks from current ribbon (default)...
 | 
					 | 
				
			||||||
	if(mode == 'ribbon' || mode == null){
 | 
					 | 
				
			||||||
		var ribbon = getRibbon()
 | 
					 | 
				
			||||||
		$('.viewer').trigger('markingRibbon', [ribbon])
 | 
					 | 
				
			||||||
		return ribbon
 | 
					 | 
				
			||||||
			.find('.image:not(.marked)')
 | 
					 | 
				
			||||||
				.addClass('marked')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else if(mode == 'all'){
 | 
					 | 
				
			||||||
		$('.viewer').trigger('markingAll')
 | 
					 | 
				
			||||||
		return $('.image:not(.marked)').addClass('marked')
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NOTE: this only does it's work in the current ribbon...
 | 
					 | 
				
			||||||
function invertImageMarks(){
 | 
					 | 
				
			||||||
	var ribbon = getRibbon()
 | 
					 | 
				
			||||||
	$('.viewer').trigger('invertingMarks', [ribbon])
 | 
					 | 
				
			||||||
	return ribbon
 | 
					 | 
				
			||||||
		.find('.image')
 | 
					 | 
				
			||||||
			.toggleClass('marked')
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Toggle marks in the current continuous section of marked or unmarked
 | 
					 | 
				
			||||||
// images...
 | 
					 | 
				
			||||||
// XXX need to make this dynamic data compatible...
 | 
					 | 
				
			||||||
function toggleImageMarkBlock(image){
 | 
					 | 
				
			||||||
	if(image == null){
 | 
					 | 
				
			||||||
		image = $('.current.image')
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	//$('.viewer').trigger('togglingImageBlockMarks', [image])
 | 
					 | 
				
			||||||
	// we need to invert this...
 | 
					 | 
				
			||||||
	var state = toggleImageMark()
 | 
					 | 
				
			||||||
	var _convert = function(){
 | 
					 | 
				
			||||||
		if(toggleImageMark(this, '?') == state){
 | 
					 | 
				
			||||||
			return false
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		toggleImageMark(this, state)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	image.nextAll('.image').each(_convert)
 | 
					 | 
				
			||||||
	image.prevAll('.image').each(_convert)
 | 
					 | 
				
			||||||
	return state
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**********************************************************************
 | 
					/**********************************************************************
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										45
									
								
								ui/data.js
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								ui/data.js
									
									
									
									
									
								
							@ -590,51 +590,6 @@ function preCacheAllRibbons(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**********************************************************************
 | 
					 | 
				
			||||||
* Marking
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function loadMarkedOnlyData(cmp){
 | 
					 | 
				
			||||||
	cmp = cmp == null ? imageDateCmp : cmp
 | 
					 | 
				
			||||||
	var cur = DATA.current
 | 
					 | 
				
			||||||
	var marked = MARKED.slice().sort(cmp)
 | 
					 | 
				
			||||||
	ALL_DATA = DATA
 | 
					 | 
				
			||||||
	DATA = {
 | 
					 | 
				
			||||||
		varsion: '2.0',
 | 
					 | 
				
			||||||
		current: null,
 | 
					 | 
				
			||||||
		ribbons: [
 | 
					 | 
				
			||||||
			marked
 | 
					 | 
				
			||||||
		],
 | 
					 | 
				
			||||||
		//order: marked.slice(),
 | 
					 | 
				
			||||||
		order: DATA.order,
 | 
					 | 
				
			||||||
		images: DATA.images,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	DATA.current = getGIDBefore(cur, 0)
 | 
					 | 
				
			||||||
	loadData(DATA)
 | 
					 | 
				
			||||||
	toggleMarkesView('off')
 | 
					 | 
				
			||||||
	return DATA
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// XXX name this in a better way...
 | 
					 | 
				
			||||||
function loadAllImages(){
 | 
					 | 
				
			||||||
	DATA = ALL_DATA
 | 
					 | 
				
			||||||
	loadData(DATA)
 | 
					 | 
				
			||||||
	return DATA
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var toggleMarkedOnlyView = createCSSClassToggler('.viewer', 'marked-only-view',
 | 
					 | 
				
			||||||
		function(action){
 | 
					 | 
				
			||||||
			if(action == 'on'){
 | 
					 | 
				
			||||||
				loadMarkedOnlyData()
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				loadAllImages()
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**********************************************************************
 | 
					/**********************************************************************
 | 
				
			||||||
* Setup
 | 
					* Setup
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
				
			|||||||
@ -261,6 +261,7 @@ body {
 | 
				
			|||||||
<script src="lib/keyboard.js"></script>
 | 
					<script src="lib/keyboard.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script src="base.js"></script>
 | 
					<script src="base.js"></script>
 | 
				
			||||||
 | 
					<script src="marks.js"></script>
 | 
				
			||||||
<script src="data.js"></script>
 | 
					<script src="data.js"></script>
 | 
				
			||||||
<script src="ui.js"></script>
 | 
					<script src="ui.js"></script>
 | 
				
			||||||
<script src="keybindings3.js"></script>
 | 
					<script src="keybindings3.js"></script>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										168
									
								
								ui/marks.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										168
									
								
								ui/marks.js
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,168 @@
 | 
				
			|||||||
 | 
					/**********************************************************************
 | 
				
			||||||
 | 
					* 
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//var DEBUG = DEBUG != null ? DEBUG : true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**********************************************************************
 | 
				
			||||||
 | 
					* Modes
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function loadMarkedOnlyData(cmp){
 | 
				
			||||||
 | 
						cmp = cmp == null ? imageDateCmp : cmp
 | 
				
			||||||
 | 
						var cur = DATA.current
 | 
				
			||||||
 | 
						var marked = MARKED.slice().sort(cmp)
 | 
				
			||||||
 | 
						ALL_DATA = DATA
 | 
				
			||||||
 | 
						DATA = {
 | 
				
			||||||
 | 
							varsion: '2.0',
 | 
				
			||||||
 | 
							current: null,
 | 
				
			||||||
 | 
							ribbons: [
 | 
				
			||||||
 | 
								marked
 | 
				
			||||||
 | 
							],
 | 
				
			||||||
 | 
							//order: marked.slice(),
 | 
				
			||||||
 | 
							order: DATA.order,
 | 
				
			||||||
 | 
							images: DATA.images,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						DATA.current = getGIDBefore(cur, 0)
 | 
				
			||||||
 | 
						loadData(DATA)
 | 
				
			||||||
 | 
						toggleMarkesView('off')
 | 
				
			||||||
 | 
						return DATA
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// XXX name this in a better way...
 | 
				
			||||||
 | 
					function loadAllImages(){
 | 
				
			||||||
 | 
						DATA = ALL_DATA
 | 
				
			||||||
 | 
						loadData(DATA)
 | 
				
			||||||
 | 
						return DATA
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var toggleMarkedOnlyView = createCSSClassToggler('.viewer', 'marked-only-view',
 | 
				
			||||||
 | 
							function(action){
 | 
				
			||||||
 | 
								if(action == 'on'){
 | 
				
			||||||
 | 
									loadMarkedOnlyData()
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									loadAllImages()
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// XXX shifting images and unmarking in this mode do not work correctly...
 | 
				
			||||||
 | 
					var toggleMarkesView = createCSSClassToggler('.viewer', 'marks-visible',
 | 
				
			||||||
 | 
						function(){
 | 
				
			||||||
 | 
							var cur = $('.current.image')
 | 
				
			||||||
 | 
							// current is marked...
 | 
				
			||||||
 | 
							if(cur.hasClass('marked')){
 | 
				
			||||||
 | 
								centerView(null, 'css')
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} 
 | 
				
			||||||
 | 
							// there is a marked image in this ribbon...
 | 
				
			||||||
 | 
							var target = getImageBefore(cur, null)
 | 
				
			||||||
 | 
							if(target.length > 0){
 | 
				
			||||||
 | 
								centerView(focusImage(target), 'css')
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							// get marked image from other ribbons...
 | 
				
			||||||
 | 
							prevRibbon()
 | 
				
			||||||
 | 
							if($('.current.image').hasClass('marked')){
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							nextRibbon()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**********************************************************************
 | 
				
			||||||
 | 
					* Actions
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// XXX if this unmarks an image in marked-only mode no visible image is 
 | 
				
			||||||
 | 
					// 		going to be current...
 | 
				
			||||||
 | 
					var toggleImageMark = createCSSClassToggler('.current.image', 'marked',
 | 
				
			||||||
 | 
						function(action){
 | 
				
			||||||
 | 
							toggleMarkesView('on')
 | 
				
			||||||
 | 
							$('.viewer').trigger('togglingMark', [$('.current.image'), action])
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// mode can be:
 | 
				
			||||||
 | 
					//	- 'ribbon'
 | 
				
			||||||
 | 
					//	- 'all'
 | 
				
			||||||
 | 
					function removeImageMarks(mode){
 | 
				
			||||||
 | 
						// remove marks from current ribbon (default)...
 | 
				
			||||||
 | 
						if(mode == 'ribbon' || mode == null){
 | 
				
			||||||
 | 
							var ribbon = getRibbon()
 | 
				
			||||||
 | 
							$('.viewer').trigger('removeingRibbonMarks', [ribbon])
 | 
				
			||||||
 | 
							return ribbon
 | 
				
			||||||
 | 
								.find('.marked')
 | 
				
			||||||
 | 
									.removeClass('marked')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// remove all marks...
 | 
				
			||||||
 | 
						} else if(mode == 'all'){
 | 
				
			||||||
 | 
							$('.viewer').trigger('removeingAllMarks')
 | 
				
			||||||
 | 
							return $('.marked')
 | 
				
			||||||
 | 
								.removeClass('marked')
 | 
				
			||||||
 | 
						} 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function markAll(mode){
 | 
				
			||||||
 | 
						// remove marks from current ribbon (default)...
 | 
				
			||||||
 | 
						if(mode == 'ribbon' || mode == null){
 | 
				
			||||||
 | 
							var ribbon = getRibbon()
 | 
				
			||||||
 | 
							$('.viewer').trigger('markingRibbon', [ribbon])
 | 
				
			||||||
 | 
							return ribbon
 | 
				
			||||||
 | 
								.find('.image:not(.marked)')
 | 
				
			||||||
 | 
									.addClass('marked')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} else if(mode == 'all'){
 | 
				
			||||||
 | 
							$('.viewer').trigger('markingAll')
 | 
				
			||||||
 | 
							return $('.image:not(.marked)').addClass('marked')
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NOTE: this only does it's work in the current ribbon...
 | 
				
			||||||
 | 
					function invertImageMarks(){
 | 
				
			||||||
 | 
						var ribbon = getRibbon()
 | 
				
			||||||
 | 
						$('.viewer').trigger('invertingMarks', [ribbon])
 | 
				
			||||||
 | 
						return ribbon
 | 
				
			||||||
 | 
							.find('.image')
 | 
				
			||||||
 | 
								.toggleClass('marked')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Toggle marks in the current continuous section of marked or unmarked
 | 
				
			||||||
 | 
					// images...
 | 
				
			||||||
 | 
					// XXX need to make this dynamic data compatible...
 | 
				
			||||||
 | 
					function toggleImageMarkBlock(image){
 | 
				
			||||||
 | 
						if(image == null){
 | 
				
			||||||
 | 
							image = $('.current.image')
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						//$('.viewer').trigger('togglingImageBlockMarks', [image])
 | 
				
			||||||
 | 
						// we need to invert this...
 | 
				
			||||||
 | 
						var state = toggleImageMark()
 | 
				
			||||||
 | 
						var _convert = function(){
 | 
				
			||||||
 | 
							if(toggleImageMark(this, '?') == state){
 | 
				
			||||||
 | 
								return false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							toggleImageMark(this, state)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						image.nextAll('.image').each(_convert)
 | 
				
			||||||
 | 
						image.prevAll('.image').each(_convert)
 | 
				
			||||||
 | 
						return state
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**********************************************************************
 | 
				
			||||||
 | 
					* vim:set ts=4 sw=4 :                                                */
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user