mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-31 19:30:07 +00:00
did a better generic options ui generator...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
b121a6327e
commit
fea4929647
@ -195,27 +195,29 @@ function toKeyName(code){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// XXX merge this with showSetup as they are virtually identical...
|
// XXX merge this with showSetup as they are virtually identical...
|
||||||
function showKeyboardBindings(){
|
// XXX revise!!
|
||||||
var actions = {}
|
function showSettingUI(data, get_value, get_handler){
|
||||||
|
var tree = {}
|
||||||
var groups = []
|
var groups = []
|
||||||
|
var groups_ui = {}
|
||||||
// build the group/action structure...
|
// build the group/action structure...
|
||||||
for(var a in ImageGrid.actions){
|
for(var a in data){
|
||||||
var group = ImageGrid[a].group
|
var group = data[a].group!=null?data[a].group:'Other'
|
||||||
if(group.indexOf(groups) == -1){
|
if(groups.indexOf(group) == -1){
|
||||||
groups.push(group)
|
groups.push(group)
|
||||||
}
|
}
|
||||||
if(actions[group] == null){
|
if(tree[group] == null){
|
||||||
actions[group] = []
|
tree[group] = []
|
||||||
}
|
}
|
||||||
actions[group].push([
|
tree[group].push([
|
||||||
ImageGrid[a].title!=null?ImageGrid[a].title:a,
|
data[a].title!=null?data[a].title:a,
|
||||||
a
|
a
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
// sort things...
|
// sort things...
|
||||||
groups.sort()
|
groups.sort()
|
||||||
for(var g in actions){
|
for(var g in tree){
|
||||||
actions[g].sort(function(a, b){
|
tree[g].sort(function(a, b){
|
||||||
a = a[0]
|
a = a[0]
|
||||||
b = b[0]
|
b = b[0]
|
||||||
return a > b ? 1 : a < b ? -1 : 0
|
return a > b ? 1 : a < b ? -1 : 0
|
||||||
@ -223,40 +225,65 @@ function showKeyboardBindings(){
|
|||||||
}
|
}
|
||||||
// build the HTML...
|
// build the HTML...
|
||||||
var ui = $('<div class="options"/>')
|
var ui = $('<div class="options"/>')
|
||||||
for(var g in actions){
|
for(var g in tree){
|
||||||
var group = null
|
var group = null
|
||||||
for(var i=0; i<actions[g].length; i++){
|
for(var i=0; i<tree[g].length; i++){
|
||||||
// get the action object...
|
// get the element...
|
||||||
var action = ImageGrid.actions[actions[g][i][1]]
|
var elem = data[tree[g][i][1]]
|
||||||
if(!DEBUG && action.display == false){
|
if(!DEBUG && elem.display == false){
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if(group == null){
|
if(group == null){
|
||||||
group = $('<div class="group"/>')
|
group = $('<div class="group"/>')
|
||||||
.append($('<div class="title"/>').text(g!=null?g:'Other'))
|
.append($('<div class="title"/>').text(g))
|
||||||
}
|
}
|
||||||
var option
|
var option
|
||||||
group.append(
|
group.append(
|
||||||
option = $('<div class="option"/>').append($([
|
option = $('<div class="option"/>').append($([
|
||||||
$('<div class="title"/>').text(actions[g][i][0])[0],
|
$('<div class="title"/>').text(tree[g][i][0])[0],
|
||||||
$('<div class="doc"/>').html(
|
$('<div class="doc"/>').html(
|
||||||
action.doc?action.doc.replace(/\n/g, '<br>'):'')[0],
|
elem.doc?elem.doc.replace(/\n/g, '<br>'):'')[0],
|
||||||
// XXX keys...
|
// XXX keys...
|
||||||
$('<div class="value"/>').text('KEY')[0],
|
$('<div class="value"/>').text(get_value(elem))[0],
|
||||||
])))
|
])))
|
||||||
if(action.display == false){
|
if(elem.display == false){
|
||||||
option.addClass('disabled')
|
option.addClass('disabled')
|
||||||
} else {
|
} else {
|
||||||
// XXX handler...
|
// handler...
|
||||||
|
var handler = get_handler(elem)
|
||||||
|
if(handler != null){
|
||||||
|
option.click(handler)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(group != null){
|
if(group != null){
|
||||||
ui.append(group)
|
groups_ui[g] = group
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// put the Other group in the back...
|
||||||
|
var i = groups.indexOf('Other')
|
||||||
|
if(i != -1){
|
||||||
|
groups.splice(i, 1)
|
||||||
|
groups.push('Other')
|
||||||
|
}
|
||||||
|
// buildup the sorted groups...
|
||||||
|
for(var i=0; i<groups.length; i++){
|
||||||
|
ui.append(groups_ui[groups[i]])
|
||||||
|
}
|
||||||
|
// refresh...
|
||||||
|
ui.click(function(){
|
||||||
|
// XXX is this a good way to do a refresh?
|
||||||
|
showSettingUI(data, get_value, get_handler)
|
||||||
|
})
|
||||||
showInOverlay(ui)
|
showInOverlay(ui)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showKeyboardBindings(){
|
||||||
|
// XXX build reverse key index...
|
||||||
|
// XXX
|
||||||
|
showSettingUI(ImageGrid.actions,
|
||||||
|
function(){},
|
||||||
|
function(){})}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -335,6 +362,13 @@ ImageGrid.GROUP('Mode: All',
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
||||||
|
if(DEBUG){
|
||||||
|
ImageGrid.OPTION({
|
||||||
|
name: 'TEST',
|
||||||
|
title: 'Test the Other group mechanics',
|
||||||
|
value: 0,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -380,6 +414,7 @@ function cmpImageOrder(a, b){
|
|||||||
|
|
||||||
// show a jQuary opject in viewer overlay...
|
// show a jQuary opject in viewer overlay...
|
||||||
function showInOverlay(obj){
|
function showInOverlay(obj){
|
||||||
|
obj.click(function(){ return false })
|
||||||
// clean things up...
|
// clean things up...
|
||||||
$('.overlay .content').children().remove()
|
$('.overlay .content').children().remove()
|
||||||
// put it in the overlay...
|
// put it in the overlay...
|
||||||
@ -1124,62 +1159,9 @@ ImageGrid.GROUP('Mode: All',
|
|||||||
doc: 'Show setup interface.',
|
doc: 'Show setup interface.',
|
||||||
},
|
},
|
||||||
function showSetup(){
|
function showSetup(){
|
||||||
var opts = ImageGrid.option
|
showSettingUI(ImageGrid.option_props,
|
||||||
var opt_ps = ImageGrid.option_props
|
function(e){return ImageGrid.option[e.name]},
|
||||||
var groups = {}
|
function(e){return e.click_handler})
|
||||||
|
|
||||||
var opts_container = $('<div class="options"/>')
|
|
||||||
// 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???
|
|
||||||
ImageGrid.showSetup()
|
|
||||||
e.preventDefault()
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
showInOverlay(opts_container)
|
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
||||||
@ -1484,15 +1466,15 @@ ImageGrid.GROUP('Zooming',
|
|||||||
ImageGrid.setContainerScale(f)
|
ImageGrid.setContainerScale(f)
|
||||||
}),
|
}),
|
||||||
// the fit N image pack, for 1 <= N <= 9
|
// the fit N image pack, for 1 <= N <= 9
|
||||||
ImageGrid.ACTION({ title: 'Fit single image' }, function fitImage(){ImageGrid.fitNImages(1)}),
|
ImageGrid.ACTION({ title: 'Fit 1 image' }, function fitImage(){ImageGrid.fitNImages(1)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit two images' }, function fitTwoImages(){ImageGrid.fitNImages(2)}),
|
ImageGrid.ACTION({ title: 'Fit 2 images' }, function fitTwoImages(){ImageGrid.fitNImages(2)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit three images' }, function fitThreeImages(){ImageGrid.fitNImages(3)}),
|
ImageGrid.ACTION({ title: 'Fit 3 images' }, function fitThreeImages(){ImageGrid.fitNImages(3)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit four images' }, function fitFourImages(){ImageGrid.fitNImages(4)}),
|
ImageGrid.ACTION({ title: 'Fit 4 images' }, function fitFourImages(){ImageGrid.fitNImages(4)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit five images' }, function fitFiveImages(){ImageGrid.fitNImages(5)}),
|
ImageGrid.ACTION({ title: 'Fit 5 images' }, function fitFiveImages(){ImageGrid.fitNImages(5)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit six images' }, function fitSixImages(){ImageGrid.fitNImages(6)}),
|
ImageGrid.ACTION({ title: 'Fit 6 images' }, function fitSixImages(){ImageGrid.fitNImages(6)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit seven images' }, function fitSevenImages(){ImageGrid.fitNImages(7)}),
|
ImageGrid.ACTION({ title: 'Fit 7 images' }, function fitSevenImages(){ImageGrid.fitNImages(7)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit eight images' }, function fitEightImages(){ImageGrid.fitNImages(8)}),
|
ImageGrid.ACTION({ title: 'Fit 8 images' }, function fitEightImages(){ImageGrid.fitNImages(8)}),
|
||||||
ImageGrid.ACTION({ title: 'Fit nine images' }, function fitNineImages(){ImageGrid.fitNImages(9)})
|
ImageGrid.ACTION({ title: 'Fit 9 images' }, function fitNineImages(){ImageGrid.fitNImages(9)})
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user