mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 19:30:07 +00:00 
			
		
		
		
	added auto-generated settings UI (also recognises DEBUG mode)...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									06a1b07fed
								
							
						
					
					
						commit
						48092074cf
					
				| @ -1,8 +1,9 @@ | |||||||
| Priority work | Priority work | ||||||
| 	[_] 85% Preview II | 	[_] 88% Preview II | ||||||
| 		[_] 77% UI | 		[_] 93% UI | ||||||
| 			[_] 0% settings/help screen | 			[_] 50% settings/help screen | ||||||
| 				[_] keyboard config/help | 				[_] keyboard config/help | ||||||
|  | 				[X] auto-generated settings interface | ||||||
| 			[X] "hide other ribbons" mode | 			[X] "hide other ribbons" mode | ||||||
| 			[X] fix single image mode | 			[X] fix single image mode | ||||||
| 			| need to center the image correctly... | 			| need to center the image correctly... | ||||||
| @ -113,7 +114,7 @@ Priority work | |||||||
| 			[X] 100% actions | 			[X] 100% actions | ||||||
| 				[X] bug: shifting up to new ribbon pushes the current row down... | 				[X] bug: shifting up to new ribbon pushes the current row down... | ||||||
| 				| before starting on a fix, need to cleanup the code from old hacks and workarounds... | 				| before starting on a fix, need to cleanup the code from old hacks and workarounds... | ||||||
| 	[_] 30% Preview II (optional features) | 	[_] 28% Preview II (optional features) | ||||||
| 		[_] slideshow... | 		[_] slideshow... | ||||||
| 		[_] 50% serialization/deserialization | 		[_] 50% serialization/deserialization | ||||||
| 			[X] JSON loader/unloader | 			[X] JSON loader/unloader | ||||||
|  | |||||||
| @ -74,7 +74,7 @@ function setup(){ | |||||||
| 
 | 
 | ||||||
| 	// XXX get the timing right | 	// XXX get the timing right | ||||||
| 	// XXX fire this when all is done, via an event... | 	// XXX fire this when all is done, via an event... | ||||||
| 	$('.loading').delay(500).fadeOut(700) | 	$('.overlay').delay(500).fadeOut(700) | ||||||
| } | } | ||||||
| $(document).ready(setup); | $(document).ready(setup); | ||||||
| 
 | 
 | ||||||
| @ -88,7 +88,7 @@ $(document).ready(setup); | |||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
| <div class="viewer no-single-image-transitions"> | <div class="viewer no-single-image-transitions"> | ||||||
| 	<div class="loading"> | 	<div class="overlay"> | ||||||
| 		<!-- XXX replace this with a background-image logo... --> | 		<!-- XXX replace this with a background-image logo... --> | ||||||
| 		<table width="100%" height="100%"><tr><td align="center" valign="middle"> | 		<table width="100%" height="100%"><tr><td align="center" valign="middle"> | ||||||
| 			<big><b>ImageGrid</b></big><br> | 			<big><b>ImageGrid</b></big><br> | ||||||
|  | |||||||
| @ -33,14 +33,19 @@ var ImageGrid = { | |||||||
| 			} | 			} | ||||||
| 			call[i] = obj[i] | 			call[i] = obj[i] | ||||||
| 		} | 		} | ||||||
| 		this[obj.title] = call | 		this[obj.id] = call | ||||||
| 		return call | 		return call | ||||||
| 	}, | 	}, | ||||||
| 	// define an option...
 | 	// define an option...
 | ||||||
| 	OPTION: function(obj){ | 	OPTION: function(obj){ | ||||||
| 		this.option[obj.name] = obj.value | 		this.option[obj.name] = obj.value | ||||||
| 		this.option_props[obj.name] = obj | 		this.option_props[obj.name] = obj | ||||||
|  | 		if(this.option_groups.indexOf(obj.group) < 0 && obj.group != null){ | ||||||
|  | 			this.option_groups.push(obj.group) | ||||||
|  | 			this.option_groups.sort() | ||||||
|  | 		} | ||||||
| 	}, | 	}, | ||||||
|  | 	option_groups: [], | ||||||
| 	TYPE: function(name, handler){ | 	TYPE: function(name, handler){ | ||||||
| 		this._type_handler[name] = handler | 		this._type_handler[name] = handler | ||||||
| 	}, | 	}, | ||||||
| @ -50,7 +55,7 @@ var ImageGrid = { | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'set', | 	id: 'set', | ||||||
| 	doc: 'Set option(s) value(s), calling apropriate callbacks.', | 	doc: 'Set option(s) value(s), calling apropriate callbacks.', | ||||||
| 	group: 'API', | 	group: 'API', | ||||||
| 	call: function (obj){ | 	call: function (obj){ | ||||||
| @ -70,7 +75,7 @@ ImageGrid.ACTION({ | |||||||
| 	} | 	} | ||||||
| }) | }) | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'doc', | 	id: 'doc', | ||||||
| 	doc: 'Get documentation for name.', | 	doc: 'Get documentation for name.', | ||||||
| 	group: 'API', | 	group: 'API', | ||||||
| 	call: function(name){ | 	call: function(name){ | ||||||
| @ -84,35 +89,117 @@ ImageGrid.ACTION({ | |||||||
| ImageGrid.TYPE('toggle', function(obj){ | ImageGrid.TYPE('toggle', function(obj){ | ||||||
| 	var call = obj.call | 	var call = obj.call | ||||||
| 	// wrap the call to set the option...
 | 	// wrap the call to set the option...
 | ||||||
|  | 	// XXX this is context mirroring...
 | ||||||
| 	obj.call = function(action){ | 	obj.call = function(action){ | ||||||
| 		var res = call(action) | 		var res = call(action) | ||||||
| 		ImageGrid.option[obj.title] = call('?') | 		ImageGrid.option[obj.id] = call('?') | ||||||
| 		return res | 		return res | ||||||
| 	} | 	} | ||||||
| 	// add an option to store the state...
 | 	// add an option to store the state...
 | ||||||
| 	ImageGrid.OPTION({ | 	ImageGrid.OPTION({ | ||||||
| 		name: obj.title, | 		name: obj.id, | ||||||
| 		doc: 'Stores the state of '+obj.title+' action.', | 		title: obj.title, | ||||||
|  | 		group: obj.group, | ||||||
|  | 		display: obj.display, | ||||||
|  | 		doc: obj.doc == null ? 'Stores the state of '+obj.id+' action.' : obj.doc, | ||||||
| 		value: obj.call('?'), | 		value: obj.call('?'), | ||||||
| 		callback: function(){ | 		callback: function(){ | ||||||
| 			ImageGrid[obj.title](ImageGrid.option[obj.title]) | 			obj.call() | ||||||
|  | 		}, | ||||||
|  | 		click_handler: function(){ | ||||||
|  | 			obj.call() | ||||||
| 		} | 		} | ||||||
| 	}) | 	}) | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | // XXX use order and priority of options...
 | ||||||
|  | function showSetup(){ | ||||||
|  | 	var opts = ImageGrid.option | ||||||
|  | 	var opt_ps = ImageGrid.option_props | ||||||
|  | 	var groups = {} | ||||||
|  | 
 | ||||||
|  | 	// clean things up...
 | ||||||
|  | 	$('.overlay').children().remove() | ||||||
|  | 	var opts_container = $('<div class="options"/>') | ||||||
|  | 		.appendTo($('.overlay')) | ||||||
|  | 	// build options...
 | ||||||
|  | 	for(var n in opt_ps){ | ||||||
|  | 		var disabled = false | ||||||
|  | 		var opt = opt_ps[n] | ||||||
|  | 		var group = opt.group | ||||||
|  | 		// handle disabled opts...
 | ||||||
|  | 		if(opt.display == false){ | ||||||
|  | 			if(!DEBUG){ | ||||||
|  | 				continue | ||||||
|  | 			} | ||||||
|  | 			disabled = true | ||||||
|  | 		} | ||||||
|  | 		// build an option...
 | ||||||
|  | 		var option = $('<div class="option"/>').append($([ | ||||||
|  | 			$('<div class="title"/>').text(opt.title != null ? opt.title : n)[0], | ||||||
|  | 			$('<div class="doc"/>').html(opt['doc'].replace(/\n/g, '<br>'))[0], | ||||||
|  | 			$('<div class="value"/>').text(opts[n])[0] | ||||||
|  | 		])) | ||||||
|  | 		// group things correctly...
 | ||||||
|  | 		if(group == null){ | ||||||
|  | 			group = 'Other' | ||||||
|  | 		} | ||||||
|  | 		if(groups[group] == null){ | ||||||
|  | 			groups[group] = $('<div class="group"/>') | ||||||
|  | 				.append($('<div class="title"/>').text(group)) | ||||||
|  | 				.append(option) | ||||||
|  | 		} else { | ||||||
|  | 			groups[group].append(option) | ||||||
|  | 		} | ||||||
|  | 		// event handlers...
 | ||||||
|  | 		var handler = opt_ps[n].click_handler | ||||||
|  | 		if(disabled){ | ||||||
|  | 			option.addClass('disabled') | ||||||
|  | 		} else if(handler != null){ | ||||||
|  | 			option.click(handler) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 	} | ||||||
|  | 	// build groups...
 | ||||||
|  | 	for(var i = 0; i < ImageGrid.option_groups.length; i++){ | ||||||
|  | 		var group_name = ImageGrid.option_groups[i] | ||||||
|  | 		opts_container.append(groups[group_name]) | ||||||
|  | 	} | ||||||
|  | 	opts_container.append(groups['Other']) | ||||||
|  | 
 | ||||||
|  | 	opts_container.click(function(e){ | ||||||
|  | 		// update the view...
 | ||||||
|  | 		// XXX do we need to redraw the whole thing on each click???
 | ||||||
|  | 		showSetup() | ||||||
|  | 		e.preventDefault() | ||||||
|  | 		return false | ||||||
|  | 	}) | ||||||
|  | 	// prepare the overlay...
 | ||||||
|  | 	$('.overlay') | ||||||
|  | 		.one('click', function(){ | ||||||
|  | 			$('.overlay') | ||||||
|  | 				.fadeOut() | ||||||
|  | 				.children() | ||||||
|  | 					.remove() | ||||||
|  | 		}) | ||||||
|  | 		.fadeIn() | ||||||
|  | } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /******************************************* Setup Data and Globals **/ | /******************************************* Setup Data and Globals **/ | ||||||
| 
 | 
 | ||||||
| var DEBUG = true | var DEBUG = true | ||||||
|  | //var DEBUG = false
 | ||||||
| 
 | 
 | ||||||
| ImageGrid.OPTION({ | ImageGrid.OPTION({ | ||||||
| 	name: 'BACKGROUND_MODES', | 	name: 'BACKGROUND_MODES', | ||||||
| 	doc: 'list of available background styles.\n'+ | 	doc: 'list of available background styles.\n'+ | ||||||
| 		'NOTE: there is also a null mode that is what is set in the '+ | 		'NOTE: there is also a null mode that is what is set in the '+ | ||||||
| 		'main CSS.', | 		'main CSS.', | ||||||
|  | 	display: false, | ||||||
| 	value: [ | 	value: [ | ||||||
| 		'dark', | 		'dark', | ||||||
| 		'black', | 		'black', | ||||||
| @ -123,6 +210,7 @@ ImageGrid.OPTION({ | |||||||
| 
 | 
 | ||||||
| ImageGrid.OPTION({ | ImageGrid.OPTION({ | ||||||
| 	name: 'NORMAL_MODE_BG', | 	name: 'NORMAL_MODE_BG', | ||||||
|  | 	display: false, | ||||||
| 	value: null, | 	value: null, | ||||||
| 	doc: 'Background style in normal (ribbon) mode.\n'+ | 	doc: 'Background style in normal (ribbon) mode.\n'+ | ||||||
| 		'NOTE: This will get updated on background change in tuntime.\n'+ | 		'NOTE: This will get updated on background change in tuntime.\n'+ | ||||||
| @ -136,6 +224,7 @@ ImageGrid.OPTION({ | |||||||
| 
 | 
 | ||||||
| ImageGrid.OPTION({ | ImageGrid.OPTION({ | ||||||
| 	name: 'SINGLE_IMAGE_MODE_BG', | 	name: 'SINGLE_IMAGE_MODE_BG', | ||||||
|  | 	display: false, | ||||||
| 	value: 'black', | 	value: 'black', | ||||||
| 	doc: 'Background style in single image mode.\n'+ | 	doc: 'Background style in single image mode.\n'+ | ||||||
| 		'NOTE: This will get updated on background change in tuntime.\n'+ | 		'NOTE: This will get updated on background change in tuntime.\n'+ | ||||||
| @ -149,6 +238,7 @@ ImageGrid.OPTION({ | |||||||
| 
 | 
 | ||||||
| ImageGrid.OPTION({ | ImageGrid.OPTION({ | ||||||
| 	name: 'ORIGINAL_FIELD_SCALE', | 	name: 'ORIGINAL_FIELD_SCALE', | ||||||
|  | 	display: false, | ||||||
| 	value: 1.0, | 	value: 1.0, | ||||||
| 	doc: 'Scale of view in image mode.\n'+ | 	doc: 'Scale of view in image mode.\n'+ | ||||||
| 		'NOTE: this will change if changed at runtime.', | 		'NOTE: this will change if changed at runtime.', | ||||||
| @ -161,12 +251,16 @@ ImageGrid.OPTION({ | |||||||
| 
 | 
 | ||||||
| ImageGrid.OPTION({ | ImageGrid.OPTION({ | ||||||
| 	name: 'ZOOM_FACTOR', | 	name: 'ZOOM_FACTOR', | ||||||
|  | 	title: 'Zooming factor', | ||||||
|  | 	group: 'Mode: All', | ||||||
| 	value: 2, | 	value: 2, | ||||||
| 	doc: 'Sets the zoom factor used for a manual zooming step.' | 	doc: 'Sets the zoom factor used for a manual zooming step.' | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| ImageGrid.OPTION({ | ImageGrid.OPTION({ | ||||||
| 	name: 'MOVE_DELTA', | 	name: 'MOVE_DELTA', | ||||||
|  | 	title: 'Move step', | ||||||
|  | 	group: 'Mode: All', | ||||||
| 	value: 50, | 	value: 50, | ||||||
| 	doc: 'Sets the move delta in pixels for keyboard view moving.' | 	doc: 'Sets the move delta in pixels for keyboard view moving.' | ||||||
| }) | }) | ||||||
| @ -451,7 +545,7 @@ function setupControlElements(){ | |||||||
| 	$('.screen-button.toggle-single').click(ImageGrid.toggleSingleImageMode) | 	$('.screen-button.toggle-single').click(ImageGrid.toggleSingleImageMode) | ||||||
| 	$('.screen-button.fit-three').click(fitThreeImages) | 	$('.screen-button.fit-three').click(fitThreeImages) | ||||||
| 	$('.screen-button.show-controls').click(function(){ImageGrid.toggleControls('on')}) | 	$('.screen-button.show-controls').click(function(){ImageGrid.toggleControls('on')}) | ||||||
| 	$('.screen-button.settings').click(function(){alert('not implemented yet...')}) | 	$('.screen-button.settings').click(showSetup) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -797,10 +891,12 @@ function makeKeyboardHandler(keybindings, unhandled){ | |||||||
| 
 | 
 | ||||||
| // XXX is this worth it??
 | // XXX is this worth it??
 | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'toggleSingleImageMode', | 	id: 'toggleSingleImageMode', | ||||||
|  | 	title: 'Single image mode', | ||||||
| 	doc: 'Toggle single image mode.', | 	doc: 'Toggle single image mode.', | ||||||
| 	group: 'Modes', | 	group: 'Mode: Single Image', | ||||||
| 	type: 'toggle', | 	type: 'toggle', | ||||||
|  | 	display: false, | ||||||
| 	call: createCSSClassToggler('.viewer', 'single-image-mode',  | 	call: createCSSClassToggler('.viewer', 'single-image-mode',  | ||||||
| 		// pre...
 | 		// pre...
 | ||||||
| 		function(action){ | 		function(action){ | ||||||
| @ -828,9 +924,10 @@ ImageGrid.ACTION({ | |||||||
| 
 | 
 | ||||||
| // XXX is this worth it??
 | // XXX is this worth it??
 | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'toggleSingleRibbonMode', | 	id: 'toggleSingleRibbonMode', | ||||||
|  | 	title: 'Single ribbon mode', | ||||||
| 	doc: 'Show/hide other ribbons.', | 	doc: 'Show/hide other ribbons.', | ||||||
| 	group: 'Modes', | 	group: 'Mode: Ribbon', | ||||||
| 	type: 'toggle', | 	type: 'toggle', | ||||||
| 	call: createCSSClassToggler('.viewer', 'single-ribbon-mode') | 	call: createCSSClassToggler('.viewer', 'single-ribbon-mode') | ||||||
| }) | }) | ||||||
| @ -845,9 +942,11 @@ ImageGrid.ACTION({ | |||||||
| // 			+ a tad complicated...
 | // 			+ a tad complicated...
 | ||||||
| // XXX is this worth it??
 | // XXX is this worth it??
 | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'toggleDisplayShiftedUpImages', | 	id: 'toggleDisplayShiftedUpImages', | ||||||
|  | 	title: 'Display shifted up images', | ||||||
| 	doc: 'Toggle display of shifted images.', | 	doc: 'Toggle display of shifted images.', | ||||||
| 	group: 'Modes', | 	group: 'Mode: Ribbon', | ||||||
|  | 	display: false, | ||||||
| 	type: 'toggle', | 	type: 'toggle', | ||||||
| 	call: createCSSClassToggler('.viewer', 'show-shifted-up-images') | 	call: createCSSClassToggler('.viewer', 'show-shifted-up-images') | ||||||
| }) | }) | ||||||
| @ -915,9 +1014,10 @@ function toggleBackgroundModes(){ | |||||||
| 
 | 
 | ||||||
| //var toggleSingleImageModeTransitions = createCSSClassToggler('.viewer', 'no-single-image-transitions')
 | //var toggleSingleImageModeTransitions = createCSSClassToggler('.viewer', 'no-single-image-transitions')
 | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'toggleSingleImageModeTransitions', | 	id: 'toggleSingleImageModeTransitions', | ||||||
|  | 	title: 'Single image mode transitions', | ||||||
| 	doc: 'Toggle transitions in single image mode.', | 	doc: 'Toggle transitions in single image mode.', | ||||||
| 	group: 'Modes', | 	group: 'Mode: Single Image', | ||||||
| 	type: 'toggle', | 	type: 'toggle', | ||||||
| 	call: createCSSClassToggler('.viewer', 'no-single-image-transitions') | 	call: createCSSClassToggler('.viewer', 'no-single-image-transitions') | ||||||
| }) | }) | ||||||
| @ -925,9 +1025,10 @@ ImageGrid.ACTION({ | |||||||
| 
 | 
 | ||||||
| //var toggleControls = createCSSClassToggler('.viewer', 'hidden-controls')
 | //var toggleControls = createCSSClassToggler('.viewer', 'hidden-controls')
 | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'toggleControls', | 	id: 'toggleControls', | ||||||
| 	doc: 'Toggle UI controls.', | 	title: 'Keyboard interface mode', | ||||||
| 	group: 'Modes', | 	doc: 'Toggle Touch/Keyboard UI controls.', | ||||||
|  | 	group: 'Mode: All', | ||||||
| 	type: 'toggle', | 	type: 'toggle', | ||||||
| 	call: createCSSClassToggler('.viewer', 'hidden-controls') | 	call: createCSSClassToggler('.viewer', 'hidden-controls') | ||||||
| }) | }) | ||||||
| @ -935,9 +1036,10 @@ ImageGrid.ACTION({ | |||||||
| 
 | 
 | ||||||
| //var toggleTransitions = createCSSClassToggler('.viewer', 'transitions-enabled')
 | //var toggleTransitions = createCSSClassToggler('.viewer', 'transitions-enabled')
 | ||||||
| ImageGrid.ACTION({ | ImageGrid.ACTION({ | ||||||
| 	title: 'toggleTransitions', | 	id: 'toggleTransitions', | ||||||
|  | 	title: 'Global transitions', | ||||||
| 	doc: 'Toggle global transitions.', | 	doc: 'Toggle global transitions.', | ||||||
| 	group: 'Modes', | 	group: 'Mode: All', | ||||||
| 	type: 'toggle', | 	type: 'toggle', | ||||||
| 	call: createCSSClassToggler('.viewer', 'transitions-enabled') | 	call: createCSSClassToggler('.viewer', 'transitions-enabled') | ||||||
| }) | }) | ||||||
|  | |||||||
| @ -1,9 +1,10 @@ | |||||||
| .loading { | .overlay { | ||||||
| 	position: absolute; | 	position: absolute; | ||||||
| 	top: 0px; | 	top: 0px; | ||||||
| 	left: 0px; | 	left: 0px; | ||||||
| 	width: 100%; | 	width: 100%; | ||||||
| 	height: 100%; | 	height: 100%; | ||||||
|  | 	overflow: auto; | ||||||
| 
 | 
 | ||||||
| 	background-color: white; | 	background-color: white; | ||||||
| 	color: gray; | 	color: gray; | ||||||
| @ -11,13 +12,66 @@ | |||||||
| 	opacity: 1.0; | 	opacity: 1.0; | ||||||
| 
 | 
 | ||||||
| 	z-index: 9000; | 	z-index: 9000; | ||||||
|  | 
 | ||||||
|  | 	text-align: center: | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .loading * { | .overlay * { | ||||||
| 	color: gray; | 	color: gray; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .options { | ||||||
|  | 	position: relative; | ||||||
|  | 	left: 12.5%; | ||||||
|  | 	width: 75%; | ||||||
|  | 	opacity: 1.0; | ||||||
|  | 	padding: 20px; | ||||||
|  | 	margin: 5px; | ||||||
|  | 	border: solid 1px silver; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .options .option { | ||||||
|  | 	border-bottom: solid 1px silver; | ||||||
|  | 	padding: 10px; | ||||||
|  | 	margin-top: 15px; | ||||||
|  | } | ||||||
|  | .options .option:last-child { | ||||||
|  | 	border-bottom: none;  | ||||||
|  | 	margin-bottom: 30px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .options .option.disabled { | ||||||
|  | 	opacity: 0.5; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .options .group:first-child { | ||||||
|  | 	margin-top:20px; | ||||||
|  | } | ||||||
|  | .options .group:last-child { | ||||||
|  | 	margin-bottom:20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .options .group .title { | ||||||
|  | 	border-bottom: solid 1px gray; | ||||||
|  | 	font-weight: bold; | ||||||
|  | 	font-size: large; | ||||||
|  | } | ||||||
|  | .options .option .title { | ||||||
|  | 	font-weight: bold; | ||||||
|  | 	font-size: medium; | ||||||
|  | 	border-bottom: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .options .doc { | ||||||
|  | 	display: inline; | ||||||
|  | 	font-size: small; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .options .value { | ||||||
|  | 	float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| .image { | .image { | ||||||
| 	float: left; | 	float: left; | ||||||
| @ -195,12 +249,12 @@ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* dark background */ | /* dark background */ | ||||||
| .dark.viewer, .dark .loading { | .dark.viewer, .dark .overlay { | ||||||
| 	background-color: rgb(32, 32, 32); | 	background-color: rgb(32, 32, 32); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .dark .loading * { | .dark .overlay * { | ||||||
| 	color: silver; | 	color: silver; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -220,11 +274,11 @@ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* black background */ | /* black background */ | ||||||
| .black.viewer, .black .loading { | .black.viewer, .black .overlay { | ||||||
| 	background-color: black; | 	background-color: black; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .black .loading * { | .black .overlay * { | ||||||
| 	color: silver; | 	color: silver; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -71,7 +71,7 @@ function setup(){ | |||||||
| 
 | 
 | ||||||
| 	// XXX get the timing right | 	// XXX get the timing right | ||||||
| 	// XXX fire this when all is done, via an event... | 	// XXX fire this when all is done, via an event... | ||||||
| 	$('.loading').delay(500).fadeOut(700) | 	$('.overlay').delay(500).fadeOut(700) | ||||||
| } | } | ||||||
| $(document).ready(setup); | $(document).ready(setup); | ||||||
| 
 | 
 | ||||||
| @ -83,11 +83,11 @@ $(document).ready(setup); | |||||||
| </style> | </style> | ||||||
| 
 | 
 | ||||||
| <div class="viewer no-single-image-transitions"> | <div class="viewer no-single-image-transitions"> | ||||||
| 	<div class="loading"> | 	<div class="overlay"> | ||||||
| 		<!-- XXX replace this with a background-image logo... --> | 		<!-- XXX replace this with a background-image logo... --> | ||||||
| 		<table width="100%" height="100%"><tr><td align="center" valign="middle"> | 		<table width="100%" height="100%"><tr><td align="center" valign="middle"> | ||||||
| 			<big><b>ImageGrid</b></big><br> | 			<big><b>ImageGrid</b></big><br> | ||||||
| 			<small><i>loading...</i></small> | 			<small><i>overlay...</i></small> | ||||||
| 		</td></tr></table> | 		</td></tr></table> | ||||||
| 	</div> | 	</div> | ||||||
| 	<div class="controller-mini left"> | 	<div class="controller-mini left"> | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| // NOTE: use String.fromCharCode(code)...
 | // NOTE: use String.fromCharCode(code)...
 | ||||||
| var keybindings = { | var keybindings = { | ||||||
| 	// togglable modes and options...
 | 	// togglable modes and options...
 | ||||||
| 	//191: 	toggleHelp,										//	?
 | 	191: 	showSetup,										//	?
 | ||||||
| 	70:		ImageGrid.toggleSingleImageMode,				//	f
 | 	70:		ImageGrid.toggleSingleImageMode,				//	f
 | ||||||
| 	83:		ImageGrid.toggleSingleRibbonMode,				//	s
 | 	83:		ImageGrid.toggleSingleRibbonMode,				//	s
 | ||||||
| 	13:		70,												//	Enter
 | 	13:		70,												//	Enter
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user