mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-03 04:40:10 +00:00 
			
		
		
		
	added single ribbon mode (not final, not sure if we need to go between ribbons in this mode), and several tweaks...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									999914633f
								
							
						
					
					
						commit
						4c720d6de2
					
				
							
								
								
									
										13
									
								
								ui/TODO.otl
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								ui/TODO.otl
									
									
									
									
									
								
							@ -93,18 +93,19 @@ Roadmap
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[_] 29% Gen 3 current todo
 | 
					[_] 29% Gen 3 current todo
 | 
				
			||||||
	[_] 58% High priority
 | 
						[_] 58% High priority
 | 
				
			||||||
		% Priority tasks
 | 
							[_] % Priority tasks
 | 
				
			||||||
			full archive index
 | 
								[_] full archive index
 | 
				
			||||||
				ribbon separation
 | 
									[_] segmented loading of images and data
 | 
				
			||||||
 | 
									[_] ribbon separation
 | 
				
			||||||
				| split ribbon into manageable chunks
 | 
									| split ribbon into manageable chunks
 | 
				
			||||||
				|
 | 
									|
 | 
				
			||||||
				| this can be done naturally by:
 | 
									| this can be done naturally by:
 | 
				
			||||||
				| 	- date
 | 
									| 	- date
 | 
				
			||||||
				| 	- event
 | 
									| 	- event
 | 
				
			||||||
				|	- tag
 | 
									|	- tag
 | 
				
			||||||
				index and group ALL files in an archive
 | 
									[_] index and group ALL files in an archive
 | 
				
			||||||
				import metadata
 | 
									[_] import metadata
 | 
				
			||||||
				real GIDs
 | 
									[_] real GIDs
 | 
				
			||||||
		[_] BUG: align problems are back...
 | 
							[_] BUG: align problems are back...
 | 
				
			||||||
		| default data set (browser/images.js) same images #4 (going 
 | 
							| default data set (browser/images.js) same images #4 (going 
 | 
				
			||||||
		| from right) & #5 (going from left) of 18 in the first ribbon 
 | 
							| from right) & #5 (going from left) of 18 in the first ribbon 
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										21
									
								
								ui/data.js
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								ui/data.js
									
									
									
									
									
								
							@ -1042,6 +1042,27 @@ function loadSettings(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// XXX make keep_ribbons option work...
 | 
				
			||||||
 | 
					function cropDataToGIDs(gids, keep_ribbons){
 | 
				
			||||||
 | 
						var cur = DATA.current
 | 
				
			||||||
 | 
						var old_data = DATA
 | 
				
			||||||
 | 
						DATA = {
 | 
				
			||||||
 | 
							varsion: '2.0',
 | 
				
			||||||
 | 
							current: null,
 | 
				
			||||||
 | 
							ribbons: [
 | 
				
			||||||
 | 
								gids
 | 
				
			||||||
 | 
							],
 | 
				
			||||||
 | 
							order: DATA.order.slice(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						DATA.current = getGIDBefore(cur, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						reloadViewer()
 | 
				
			||||||
 | 
						updateImages()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return old_data
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**********************************************************************
 | 
					/**********************************************************************
 | 
				
			||||||
* Image caching...
 | 
					* Image caching...
 | 
				
			||||||
 | 
				
			|||||||
@ -149,14 +149,6 @@ var KEYBOARD_CONFIG = {
 | 
				
			|||||||
		title: 'Single image mode',
 | 
							title: 'Single image mode',
 | 
				
			||||||
		doc: 'To toggle between this and ribbon modes press <b>Enter</b>.',
 | 
							doc: 'To toggle between this and ribbon modes press <b>Enter</b>.',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		F: doc('Toggle view proportions', 
 | 
					 | 
				
			||||||
			function(){ 
 | 
					 | 
				
			||||||
				var mode = toggleImageProportions() 
 | 
					 | 
				
			||||||
				showStatus('Fitting image to:', mode + '...')
 | 
					 | 
				
			||||||
				centerRibbons()
 | 
					 | 
				
			||||||
			}),
 | 
					 | 
				
			||||||
		*/
 | 
					 | 
				
			||||||
		Esc: doc('Exit single image mode', 
 | 
							Esc: doc('Exit single image mode', 
 | 
				
			||||||
				function(){ 
 | 
									function(){ 
 | 
				
			||||||
					toggleSingleImageMode('off') 
 | 
										toggleSingleImageMode('off') 
 | 
				
			||||||
@ -168,13 +160,15 @@ var KEYBOARD_CONFIG = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// marked only ribbon mode...
 | 
						// marked only ribbon mode...
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	'.marked-only-view:not(.single-image-mode)': {
 | 
						'.single-ribbon-mode:not(.single-image-mode), .marked-only-view:not(.single-image-mode)': {
 | 
				
			||||||
		title: 'Marked only view',
 | 
							title: 'Marked only and single ribbon views',
 | 
				
			||||||
		doc: 'To toggle this mode press <b>shift-F2</b>.',
 | 
							doc: 'To show marked-only images press <b>shift-F2</b> and for single ribbon mode press <b>F3</b>.',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Esc: doc('Exit marked only view', 
 | 
							Esc: doc('Exit mode', 
 | 
				
			||||||
				function(){ 
 | 
									function(){ 
 | 
				
			||||||
 | 
										// add something like uncrop here...
 | 
				
			||||||
					toggleMarkedOnlyView('off') 
 | 
										toggleMarkedOnlyView('off') 
 | 
				
			||||||
 | 
										toggleSingleRibbonMode('off') 
 | 
				
			||||||
					return false
 | 
										return false
 | 
				
			||||||
				}),
 | 
									}),
 | 
				
			||||||
		Q: 'Esc',
 | 
							Q: 'Esc',
 | 
				
			||||||
@ -540,13 +534,22 @@ var KEYBOARD_CONFIG = {
 | 
				
			|||||||
				//	function(){ toggleImageMarkBlock() }),
 | 
									//	function(){ toggleImageMarkBlock() }),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				ctrl: doc('Mark current ribbon', 
 | 
									ctrl: doc('Mark current ribbon', 
 | 
				
			||||||
					function(){ markAll('ribbon') }),
 | 
										function(){ 
 | 
				
			||||||
 | 
											toggleMarkesView('on')
 | 
				
			||||||
 | 
											markAll('ribbon') 
 | 
				
			||||||
 | 
										}),
 | 
				
			||||||
				'ctrl+shift': doc('Mark all images', 
 | 
									'ctrl+shift': doc('Mark all images', 
 | 
				
			||||||
					function(){ markAll('all') }),
 | 
										function(){ 
 | 
				
			||||||
 | 
											toggleMarkesView('on')
 | 
				
			||||||
 | 
											markAll('all') 
 | 
				
			||||||
 | 
										}),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		D: {
 | 
							D: {
 | 
				
			||||||
				ctrl: doc('Unmark current ribbon', 
 | 
									ctrl: doc('Unmark current ribbon', 
 | 
				
			||||||
					function(){ removeImageMarks('ribbon') }),
 | 
										function(){ 
 | 
				
			||||||
 | 
											event.preventDefault()
 | 
				
			||||||
 | 
											removeImageMarks('ribbon') 
 | 
				
			||||||
 | 
										}),
 | 
				
			||||||
				'ctrl+shift': doc('Unmark all images', 
 | 
									'ctrl+shift': doc('Unmark all images', 
 | 
				
			||||||
					function(){ removeImageMarks('all') }),
 | 
										function(){ removeImageMarks('all') }),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
@ -563,13 +566,17 @@ var KEYBOARD_CONFIG = {
 | 
				
			|||||||
		F2: {
 | 
							F2: {
 | 
				
			||||||
				default: doc('Toggle mark visibility', 
 | 
									default: doc('Toggle mark visibility', 
 | 
				
			||||||
					function(){ toggleMarkesView() }),
 | 
										function(){ toggleMarkesView() }),
 | 
				
			||||||
				//shift: 'F3', 
 | 
									shift: doc('Toggle marked only images view', 
 | 
				
			||||||
 | 
										function(){
 | 
				
			||||||
 | 
											toggleMarkedOnlyView()
 | 
				
			||||||
 | 
										}),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		F3: doc('Toggle marked only images view', 
 | 
					 | 
				
			||||||
			function(){
 | 
					 | 
				
			||||||
				toggleMarkedOnlyView()
 | 
					 | 
				
			||||||
			}),
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							F3: doc('Toggle single ribbon view (EXPERIMENTAL)', 
 | 
				
			||||||
 | 
								function(){
 | 
				
			||||||
 | 
									event.preventDefault()
 | 
				
			||||||
 | 
									toggleSingleRibbonMode()
 | 
				
			||||||
 | 
								}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		E: doc('Open image in external software', openImage),
 | 
							E: doc('Open image in external software', openImage),
 | 
				
			||||||
		// XXX make F4 a default editor and E a default viewer...
 | 
							// XXX make F4 a default editor and E a default viewer...
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,50 @@
 | 
				
			|||||||
.expanding-text:hover .hidden {
 | 
					.expanding-text:hover .hidden {
 | 
				
			||||||
  display: inline;
 | 
					  display: inline;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top] {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:after {
 | 
				
			||||||
 | 
					  content: attr(tooltip-top);
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  bottom: 130%;
 | 
				
			||||||
 | 
					  left: 20%;
 | 
				
			||||||
 | 
					  background: #ffcb66;
 | 
				
			||||||
 | 
					  padding: 5px 15px;
 | 
				
			||||||
 | 
					  color: black;
 | 
				
			||||||
 | 
					  border-radius: 10px;
 | 
				
			||||||
 | 
					  white-space: nowrap;
 | 
				
			||||||
 | 
					  opacity: 0;
 | 
				
			||||||
 | 
					  -webkit-transition: all 0.4s ease;
 | 
				
			||||||
 | 
					  -moz-transition: all 0.4s ease;
 | 
				
			||||||
 | 
					  transition: all 0.4s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:before {
 | 
				
			||||||
 | 
					  content: "";
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  width: 0;
 | 
				
			||||||
 | 
					  height: 0;
 | 
				
			||||||
 | 
					  border-top: 20px solid #ffcb66;
 | 
				
			||||||
 | 
					  border-left: 20px solid transparent;
 | 
				
			||||||
 | 
					  border-right: 20px solid transparent;
 | 
				
			||||||
 | 
					  -webkit-transition: all 0.4s ease;
 | 
				
			||||||
 | 
					  -moz-transition: all 0.4s ease;
 | 
				
			||||||
 | 
					  transition: all 0.4s ease;
 | 
				
			||||||
 | 
					  opacity: 0;
 | 
				
			||||||
 | 
					  left: 30%;
 | 
				
			||||||
 | 
					  bottom: 90%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:hover:after {
 | 
				
			||||||
 | 
					  bottom: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:hover:before {
 | 
				
			||||||
 | 
					  bottom: 70%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:hover:after,
 | 
				
			||||||
 | 
					[tooltip-top]:hover:before {
 | 
				
			||||||
 | 
					  opacity: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
/*********************************************************************/
 | 
					/*********************************************************************/
 | 
				
			||||||
body {
 | 
					body {
 | 
				
			||||||
  font-family: sans-serif;
 | 
					  font-family: sans-serif;
 | 
				
			||||||
@ -321,6 +365,17 @@ button:hover {
 | 
				
			|||||||
	background-image: url(images/loading-270deg.gif);
 | 
						background-image: url(images/loading-270deg.gif);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					/* separator test */
 | 
				
			||||||
 | 
					.image.red + .image:not(.red):before {
 | 
				
			||||||
 | 
					  display: inline-block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  content: "";
 | 
				
			||||||
 | 
					  top: 0px;
 | 
				
			||||||
 | 
					  left: -50px;
 | 
				
			||||||
 | 
					  width: 100px;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  background-color: yellow;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
/***************************************************** Image marks ***/
 | 
					/***************************************************** Image marks ***/
 | 
				
			||||||
.marks-visible.viewer .marked.image:after {
 | 
					.marks-visible.viewer .marked.image:after {
 | 
				
			||||||
  display: block;
 | 
					  display: block;
 | 
				
			||||||
@ -795,15 +850,18 @@ button:hover {
 | 
				
			|||||||
.single-image-mode.viewer .global-mode-indicators:hover {
 | 
					.single-image-mode.viewer .global-mode-indicators:hover {
 | 
				
			||||||
  opacity: 1;
 | 
					  opacity: 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.global-mode-indicators .indicator,
 | 
				
			||||||
 | 
					.context-mode-indicators .indicator {
 | 
				
			||||||
 | 
					  display: none;
 | 
				
			||||||
 | 
					  height: 20px;
 | 
				
			||||||
 | 
					  vertical-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
/* actual indicators */
 | 
					/* actual indicators */
 | 
				
			||||||
/* marks... */
 | 
					/* marks... */
 | 
				
			||||||
.global-mode-indicators .marked-only-visible,
 | 
					.global-mode-indicators .marked-only-visible,
 | 
				
			||||||
.global-mode-indicators .marks-visible,
 | 
					.global-mode-indicators .marks-visible,
 | 
				
			||||||
.context-mode-indicators .current-image-marked {
 | 
					.context-mode-indicators .current-image-marked {
 | 
				
			||||||
  display: none;
 | 
					 | 
				
			||||||
  color: blue;
 | 
					  color: blue;
 | 
				
			||||||
  height: 20px;
 | 
					 | 
				
			||||||
  vertical-align: center;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.global-mode-indicators .marked-only-visible .shown,
 | 
					.global-mode-indicators .marked-only-visible .shown,
 | 
				
			||||||
.global-mode-indicators .marks-visible .shown,
 | 
					.global-mode-indicators .marks-visible .shown,
 | 
				
			||||||
@ -824,6 +882,11 @@ button:hover {
 | 
				
			|||||||
  margin-top: 3px;
 | 
					  margin-top: 3px;
 | 
				
			||||||
  top: 50%;
 | 
					  top: 50%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.global-mode-indicators .marked-only-visible:after,
 | 
				
			||||||
 | 
					.global-mode-indicators .marks-visible:after,
 | 
				
			||||||
 | 
					.context-mode-indicators .current-image-marked:after {
 | 
				
			||||||
 | 
					  color: blue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.marks-visible.viewer .global-mode-indicators .marks-visible {
 | 
					.marks-visible.viewer .global-mode-indicators .marks-visible {
 | 
				
			||||||
  display: inline-block;
 | 
					  display: inline-block;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -844,6 +907,10 @@ button:hover {
 | 
				
			|||||||
.single-image-mode.marks-visible.viewer .context-mode-indicators .current-image-marked.shown {
 | 
					.single-image-mode.marks-visible.viewer .context-mode-indicators .current-image-marked.shown {
 | 
				
			||||||
  display: inline-block;
 | 
					  display: inline-block;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.single-ribbon-mode.viewer .global-mode-indicators .single-ribbon-mode {
 | 
				
			||||||
 | 
					  color: gray;
 | 
				
			||||||
 | 
					  display: inline-block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
/********************************************** Mode: single image ***/
 | 
					/********************************************** Mode: single image ***/
 | 
				
			||||||
.single-image-mode.viewer .image {
 | 
					.single-image-mode.viewer .image {
 | 
				
			||||||
  background-color: transparent;
 | 
					  background-color: transparent;
 | 
				
			||||||
 | 
				
			|||||||
@ -65,6 +65,52 @@
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[tooltip-top] {
 | 
				
			||||||
 | 
						position: relative;
 | 
				
			||||||
 | 
						text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:after {
 | 
				
			||||||
 | 
						content: attr(tooltip-top);
 | 
				
			||||||
 | 
						position: absolute;
 | 
				
			||||||
 | 
						bottom: 130%;
 | 
				
			||||||
 | 
						left: 20%;
 | 
				
			||||||
 | 
						background: #ffcb66;
 | 
				
			||||||
 | 
						padding: 5px 15px;
 | 
				
			||||||
 | 
						color: black;
 | 
				
			||||||
 | 
						border-radius: 10px;
 | 
				
			||||||
 | 
						white-space: nowrap;
 | 
				
			||||||
 | 
						opacity: 0;
 | 
				
			||||||
 | 
						-webkit-transition: all 0.4s ease;
 | 
				
			||||||
 | 
						-moz-transition: all 0.4s ease;
 | 
				
			||||||
 | 
						transition: all 0.4s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:before {
 | 
				
			||||||
 | 
						content: "";
 | 
				
			||||||
 | 
						position: absolute;
 | 
				
			||||||
 | 
						width: 0;
 | 
				
			||||||
 | 
						height: 0;
 | 
				
			||||||
 | 
						border-top: 20px solid #ffcb66;
 | 
				
			||||||
 | 
						border-left: 20px solid transparent;
 | 
				
			||||||
 | 
						border-right: 20px solid transparent;
 | 
				
			||||||
 | 
						-webkit-transition: all 0.4s ease;
 | 
				
			||||||
 | 
						-moz-transition : all 0.4s ease;
 | 
				
			||||||
 | 
						transition : all 0.4s ease;
 | 
				
			||||||
 | 
						opacity: 0;
 | 
				
			||||||
 | 
						left: 30%;
 | 
				
			||||||
 | 
						bottom: 90%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:hover:after {
 | 
				
			||||||
 | 
						bottom: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:hover:before {
 | 
				
			||||||
 | 
						bottom: 70%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[tooltip-top]:hover:after, 
 | 
				
			||||||
 | 
					[tooltip-top]:hover:before {
 | 
				
			||||||
 | 
						opacity: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*********************************************************************/
 | 
					/*********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -363,6 +409,20 @@ button:hover {
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* separator test */
 | 
				
			||||||
 | 
					.image.red+.image:not(.red):before {
 | 
				
			||||||
 | 
						display: inline-block;
 | 
				
			||||||
 | 
						position: relative;
 | 
				
			||||||
 | 
						content: "";
 | 
				
			||||||
 | 
						top:0px;
 | 
				
			||||||
 | 
						left: -50px;
 | 
				
			||||||
 | 
						width: 100px;
 | 
				
			||||||
 | 
						height: 100%;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						background-color: yellow;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***************************************************** Image marks ***/
 | 
					/***************************************************** Image marks ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -791,16 +851,20 @@ button:hover {
 | 
				
			|||||||
	opacity: 1;
 | 
						opacity: 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.global-mode-indicators .indicator,
 | 
				
			||||||
 | 
					.context-mode-indicators .indicator {
 | 
				
			||||||
 | 
						display: none;
 | 
				
			||||||
 | 
						height: 20px;
 | 
				
			||||||
 | 
						vertical-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* actual indicators */
 | 
					/* actual indicators */
 | 
				
			||||||
/* marks... */
 | 
					/* marks... */
 | 
				
			||||||
.global-mode-indicators .marked-only-visible,
 | 
					.global-mode-indicators .marked-only-visible,
 | 
				
			||||||
.global-mode-indicators .marks-visible,
 | 
					.global-mode-indicators .marks-visible,
 | 
				
			||||||
.context-mode-indicators .current-image-marked {
 | 
					.context-mode-indicators .current-image-marked {
 | 
				
			||||||
	display: none;
 | 
					 | 
				
			||||||
	color: blue;
 | 
						color: blue;
 | 
				
			||||||
	height: 20px;
 | 
					 | 
				
			||||||
	vertical-align: center;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.global-mode-indicators .marked-only-visible .shown,
 | 
					.global-mode-indicators .marked-only-visible .shown,
 | 
				
			||||||
.global-mode-indicators .marks-visible .shown,
 | 
					.global-mode-indicators .marks-visible .shown,
 | 
				
			||||||
@ -822,6 +886,11 @@ button:hover {
 | 
				
			|||||||
	margin-top: 3px;
 | 
						margin-top: 3px;
 | 
				
			||||||
	top: 50%;
 | 
						top: 50%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.global-mode-indicators .marked-only-visible:after,
 | 
				
			||||||
 | 
					.global-mode-indicators .marks-visible:after,
 | 
				
			||||||
 | 
					.context-mode-indicators .current-image-marked:after {
 | 
				
			||||||
 | 
						color: blue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.marks-visible.viewer .global-mode-indicators .marks-visible {
 | 
					.marks-visible.viewer .global-mode-indicators .marks-visible {
 | 
				
			||||||
	display: inline-block;
 | 
						display: inline-block;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -844,6 +913,12 @@ button:hover {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.single-ribbon-mode.viewer .global-mode-indicators .single-ribbon-mode {
 | 
				
			||||||
 | 
						color: gray;
 | 
				
			||||||
 | 
						display: inline-block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/********************************************** Mode: single image ***/
 | 
					/********************************************** Mode: single image ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -171,7 +171,7 @@ function createCSSClassToggler(elem, class_list, callback_a, callback_b){
 | 
				
			|||||||
			if(callback_pre.call(this, action) === false){
 | 
								if(callback_pre.call(this, action) === false){
 | 
				
			||||||
				// XXX should we return action here???
 | 
									// XXX should we return action here???
 | 
				
			||||||
				//return
 | 
									//return
 | 
				
			||||||
				return action
 | 
									return func('?')
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// update the element...
 | 
							// update the element...
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										28
									
								
								ui/marks.js
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								ui/marks.js
									
									
									
									
									
								
							@ -33,22 +33,9 @@ function loadMarkedOnlyData(cmp, no_cleanout_marks){
 | 
				
			|||||||
			marked.splice(i, 1)
 | 
								marked.splice(i, 1)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ALL_DATA = DATA
 | 
					
 | 
				
			||||||
	DATA = {
 | 
						ALL_DATA = cropDataToGIDs(marked)
 | 
				
			||||||
		varsion: '2.0',
 | 
					
 | 
				
			||||||
		current: null,
 | 
					 | 
				
			||||||
		ribbons: [
 | 
					 | 
				
			||||||
			marked
 | 
					 | 
				
			||||||
		],
 | 
					 | 
				
			||||||
		//order: marked.slice(),
 | 
					 | 
				
			||||||
		order: DATA.order,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	DATA.current = getGIDBefore(cur, 0)
 | 
					 | 
				
			||||||
	reloadViewer()
 | 
					 | 
				
			||||||
	toggleMarkesView('off')
 | 
					 | 
				
			||||||
	// XXX FIX: for some reason not all previews get updated to the 
 | 
					 | 
				
			||||||
	// 		right size...
 | 
					 | 
				
			||||||
	updateImages()
 | 
					 | 
				
			||||||
	return DATA
 | 
						return DATA
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -75,7 +62,14 @@ function loadAllImages(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var toggleMarkedOnlyView = createCSSClassToggler(
 | 
					var toggleMarkedOnlyView = createCSSClassToggler(
 | 
				
			||||||
		'.viewer', 
 | 
							'.viewer', 
 | 
				
			||||||
		'marked-only-view',
 | 
							'marked-only-view cropped-mode',
 | 
				
			||||||
 | 
							function(action){
 | 
				
			||||||
 | 
								// prevent reentering...
 | 
				
			||||||
 | 
								if(action == 'on' && $('.viewer').hasClass('cropped-mode')
 | 
				
			||||||
 | 
										|| action == toggleMarkedOnlyView('?')){
 | 
				
			||||||
 | 
									return false
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
		function(action){
 | 
							function(action){
 | 
				
			||||||
			if(action == 'on'){
 | 
								if(action == 'on'){
 | 
				
			||||||
				loadMarkedOnlyData()
 | 
									loadMarkedOnlyData()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										23
									
								
								ui/modes.js
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								ui/modes.js
									
									
									
									
									
								
							@ -170,6 +170,29 @@ var toggleSingleImageMode = createCSSClassToggler(
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// XXX make this not conflict with marked-only-mode, better yet, make them
 | 
				
			||||||
 | 
					// 		one single mode...
 | 
				
			||||||
 | 
					var toggleSingleRibbonMode = createCSSClassToggler(
 | 
				
			||||||
 | 
							'.viewer',
 | 
				
			||||||
 | 
							'single-ribbon-mode cropped-mode',
 | 
				
			||||||
 | 
							function(action){
 | 
				
			||||||
 | 
								// prevent reentering...
 | 
				
			||||||
 | 
								if(action == 'on' && $('.viewer').hasClass('cropped-mode')
 | 
				
			||||||
 | 
										|| action == toggleSingleRibbonMode('?')){
 | 
				
			||||||
 | 
									return false
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							function(action){
 | 
				
			||||||
 | 
								if(action == 'on'){
 | 
				
			||||||
 | 
									ALL_DATA = cropDataToGIDs(DATA.ribbons[getRibbonIndex()].slice())
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									DATA = ALL_DATA
 | 
				
			||||||
 | 
									reloadViewer()
 | 
				
			||||||
 | 
									updateImages()
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO transitions...
 | 
					// TODO transitions...
 | 
				
			||||||
// TODO a real setup UI (instead of prompt)
 | 
					// TODO a real setup UI (instead of prompt)
 | 
				
			||||||
var toggleSlideShowMode = createCSSClassToggler(
 | 
					var toggleSlideShowMode = createCSSClassToggler(
 | 
				
			||||||
 | 
				
			|||||||
@ -16,6 +16,11 @@ var PROPORTIONS_RATIO_THRESHOLD = 1.5
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function setupIndicators(){
 | 
					function setupIndicators(){
 | 
				
			||||||
 | 
						showGlobalIndicator(
 | 
				
			||||||
 | 
								'single-ribbon-mode', 
 | 
				
			||||||
 | 
								'Single ribbon mode (F3)')
 | 
				
			||||||
 | 
							.css('cursor', 'hand')
 | 
				
			||||||
 | 
							.click(function(){ toggleSingleRibbonMode() })
 | 
				
			||||||
	showGlobalIndicator(
 | 
						showGlobalIndicator(
 | 
				
			||||||
			'marks-visible', 
 | 
								'marks-visible', 
 | 
				
			||||||
			'Marks visible (F2)')
 | 
								'Marks visible (F2)')
 | 
				
			||||||
@ -23,7 +28,7 @@ function setupIndicators(){
 | 
				
			|||||||
		.click(function(){ toggleMarkesView() })
 | 
							.click(function(){ toggleMarkesView() })
 | 
				
			||||||
	showGlobalIndicator(
 | 
						showGlobalIndicator(
 | 
				
			||||||
			'marked-only-visible', 
 | 
								'marked-only-visible', 
 | 
				
			||||||
			'Marked only images visible (F3)')
 | 
								'Marked only images visible (shift-F2)')
 | 
				
			||||||
		.css('cursor', 'hand')
 | 
							.css('cursor', 'hand')
 | 
				
			||||||
		.click(function(){ toggleMarkedOnlyView() })
 | 
							.click(function(){ toggleMarkedOnlyView() })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -283,7 +288,7 @@ function setupDataBindings(viewer){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			// add marked image to list...
 | 
								// add marked image to list...
 | 
				
			||||||
			if(action == 'on'){
 | 
								if(action == 'on'){
 | 
				
			||||||
				MARKED.push(gid)
 | 
									 MARKED.indexOf(gid) == -1 && MARKED.push(gid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// remove marked image from list...
 | 
								// remove marked image from list...
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user