ImageGrid/ui/editor.js
Alex A. Naanou 7f71d093b7 added panel list dialog -- panels not yet done...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2014-01-13 08:57:44 +04:00

124 lines
2.9 KiB
JavaScript
Executable File

/**********************************************************************
*
*
*
**********************************************************************/
//var DEBUG = DEBUG != null ? DEBUG : true
var PANEL_ROOT = '.viewer'
/*********************************************************************/
// XXX these are a bit too general...
// ...the editor needs to speak in terms of the editor only...
// right now the editor mode depends on presence of panels and not
// the editor itself...
function _setupPanel(panel){
return panel
.on('panelClosing', function(){
if($('.sub-panel').length <= 1){
// XXX when not only the editor is using the panels, this
// is not the correct way to go...
toggleEditor('off')
}
})
.on('newPanel', function(evt, panel){
_setupPanel(panel)
})
// make clicks on unfocusable elements remove focus...
.click(function(){
if(event.target != $('.panel :focus')[0]){
$('.panel :focus').blur()
}
})
}
var toggleEditor = createCSSClassToggler(
'.viewer',
'.editor-visible',
function(action){
// XXX when not only the editor is using the panels, this
// is not the correct way to go...
var ed = $('.panel, .side-panel')
if(action == 'on'){
// create the editor if this is first init...
if(ed.length == 0){
$('.viewer')
.append(makeSidePanel('left'))
.append(makeSidePanel('right'))
.append(_setupPanel(openGroupedPanels([
'Edit: Filters',
'Edit: Snapshots'
]))
//.draggable('option', 'snap', '.viewer')
.css({
// prevent the editor from moving under
// the title bar, that will prevent us from
// ever moving it away or closing it...
'margin-top': '20px',
top: '50px',
left: '5px',
}))
// XXX add handlers for saving data to images...
// XXX
// show the editor...
} else {
ed.show()
}
// update the state...
reloadControls('.current.image')
// hide...
} else {
ed.remove()
}
})
/**********************************************************************
* Dialogs...
*/
function panelListDialog(){
updateStatus('Open panel...').show()
cfg = {}
// XXX indicate open panels...
cfg['Open panel'] = Object.keys(PANELS).map(function(e){
if(getPanel(e).length > 0){
return e + ' (open)'
}
return e
})
formDialog(null, '',
cfg,
'OK',
'panelListDialog')
.done(function(res){
var panel = res['Open panel'].split(' (open)')[0]
// toggle panel visibility on...
// XXX
openPanel(panel)
showStatusQ('Opening panel: '+panel+'...')
})
.fail(function(){
showStatusQ('Opening panel: canceled.')
})
}
/**********************************************************************
* vim:set ts=4 sw=4 : */