made crop modes alot more generic...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2013-09-21 05:47:54 +04:00
parent fa64b51e89
commit 6d80a86ab2
4 changed files with 63 additions and 59 deletions

View File

@ -111,6 +111,8 @@ var MARKED = []
var CROP_STACK = []
var CROP_MODES = []
// NOTE: these are named: <mode>-<feature>
var SETTINGS = {
'global-theme': null,
@ -1639,6 +1641,60 @@ function showAllData(){
}
// Helpers for making crop modes and using crop...
// Make a generic crop mode toggler
//
// NOTE: This will add the toggler to CROP_MODES, for use by
// uncropLastState(...)
function makeCropModeToggler(cls, crop){
var res = createCSSClassToggler(
'.viewer',
cls + ' cropped-mode',
function(action){
// prevent mixing marked-only and single-ribbon modes...
if(action == 'on'
&& $('.viewer').hasClass('cropped-mode')
&& res('?') != 'on'){
return false
}
},
function(action){
if(action == 'on'){
showStatusQ('Cropping current ribbon...')
crop()
} else {
showStatusQ('Uncropping to all data...')
showAllData()
}
})
CROP_MODES.push(res)
return res
}
// Uncrop to last state and there is no states to uncrop then exit
// cropped mode.
//
// NOTE: this will exit all crop modes when uncropping the last step.
function uncropLastState(){
// do nothing if we aren't in a crop mode...
if(!$('.viewer').hasClass('cropped-mode')){
return
}
// exit cropped all modes...
if(CROP_STACK.length == 1){
$.each(CROP_MODES, function(_, e){ e('off') })
// ucrop one state...
} else {
showStatusQ('Uncropping...')
uncropData()
}
}
/********************************************************* Workers ***/

View File

@ -22,9 +22,9 @@
<script src="compatibility.js"></script>
<script src="base.js"></script>
<script src="data.js"></script>
<script src="modes.js"></script>
<script src="marks.js"></script>
<script src="data.js"></script>
<script src="files.js"></script>
<script src="localstorage.js"></script>
<script src="info.js"></script>

View File

@ -46,27 +46,9 @@ function cropMarkedImages(cmp, no_cleanout_marks){
*/
// XXX is this a mode???
var toggleMarkedOnlyView = createCSSClassToggler(
'.viewer',
'marked-only-view cropped-mode',
function(action){
// prevent mixing marked-only and single-ribbon modes...
if(action == 'on'
&& $('.viewer').hasClass('cropped-mode')
&& toggleMarkedOnlyView('?') != 'on'){
return false
}
},
function(action){
if(action == 'on'){
// XXX do we need to keep ribbons here???
showStatusQ('Cropping marked images...')
cropMarkedImages()
} else {
showStatusQ('Uncropping to all data...')
showAllData()
}
})
var toggleMarkedOnlyView = makeCropModeToggler(
'marked-only-view',
cropMarkedImages)
// XXX shifting images and unmarking in this mode do not work correctly...

View File

@ -173,47 +173,13 @@ var toggleSingleImageMode = createCSSClassToggler(
// XXX make this not conflict with marked-only-mode, better yet, make them
// one single mode...
// XXX is this a mode???
var toggleSingleRibbonMode = createCSSClassToggler(
'.viewer',
'single-ribbon-mode cropped-mode',
function(action){
// prevent mixing marked-only and single-ribbon modes...
if(action == 'on'
&& $('.viewer').hasClass('cropped-mode')
&& toggleSingleRibbonMode('?') != 'on'){
return false
}
},
function(action){
if(action == 'on'){
showStatusQ('Cropping current ribbon...')
var toggleSingleRibbonMode = makeCropModeToggler(
'single-ribbon-mode',
function(){
cropDataTo(DATA.ribbons[getRibbonIndex()].slice())
} else {
showStatusQ('Uncropping to all data...')
showAllData()
}
})
function uncropLastState(){
if(toggleSingleRibbonMode('?') == 'off'
&& toggleMarkedOnlyView('?') == 'off'){
return
}
// exit cropped mode...
if(CROP_STACK.length == 1){
toggleSingleRibbonMode('off')
toggleMarkedOnlyView('off')
// ucrop one state...
} else {
showStatusQ('Uncropping...')
uncropData()
}
}
// TODO transitions...
// TODO a real setup UI (instead of prompt)
var toggleSlideShowMode = createCSSClassToggler(