some refining and cleanup...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2016-04-16 04:17:34 +03:00
parent e4897d5c31
commit a62e144570
2 changed files with 58 additions and 12 deletions

View File

@ -1111,6 +1111,15 @@ module.FileSystemWriter = core.ImageGridFeatures.Feature({
// - save as.. (browser)
// - save if not base path present (browser)
var FileSystemWriterUIActions = actions.Actions({
config: {
'export-dialog-mode': 'Directories',
'export-dialog-modes': {
'Images only': 'exportDirs',
'Full index': 'exportIndex',
},
},
// XXX this needs feedback...
// XXX should this return a promise???
saveIndexHere: ['File/Save',
@ -1151,12 +1160,24 @@ var FileSystemWriterUIActions = actions.Actions({
// - dirs
// - ...
// XXX indicate export state: index, crop, image...
exportDirsDialog: ['File/Export/Images...',
exportDialog: ['File/Export/Images...',
function(){
var that = this
var o = overlay.Overlay(this.ribbons.viewer,
browse.makeLister(null, function(path, make){
// XXX disable 'x' buttons...
make(['Export mode: ',
function(){ return that.config['export-dialog-mode'] || 'Directories' }])
.on('open',
widgets.makeNestedConfigListEditor(that, o,
'export-dialog-modes',
'export-dialog-mode',
{
new_button: false,
itemButtons: [],
}))
make(['Filename pattern: ',
function(){ return that.config['export-preview-name-pattern'] || '%f' }])
.on('open',
@ -1182,8 +1203,10 @@ var FileSystemWriterUIActions = actions.Actions({
make(['To: ',
function(){ return that.config['export-path'] || './' }],
{ buttons: [
['browse', function(){
var path = $(this).find('.text').last().text()
['browse', function(p){
var e = this.filter('"'+p+'"', false)
var path = e.find('.text').last().text()
var txt = e.find('.text').first().text()
// XXX add new dir global button...
return that.browsePath(path,
@ -1191,6 +1214,9 @@ var FileSystemWriterUIActions = actions.Actions({
that.config['export-path'] = path
that.config['export-paths'].splice(0, 0, path)
o.client.update()
o.client.select(txt)
// XXX ugly...
o.focus()
})
@ -1199,7 +1225,11 @@ var FileSystemWriterUIActions = actions.Actions({
.on('open',
widgets.makeNestedConfigListEditor(that, o,
'export-paths',
'export-path'))
'export-path',
{
// XXX add 'edit' button...
//itemButtons: []
}))
// Start/stop...
make([function(){
@ -1208,7 +1238,7 @@ var FileSystemWriterUIActions = actions.Actions({
.on('open', function(){
// XXX is this correct???
// XXX handle relative paths!!!
that.exportDirs(that.config['export-path'] || that.location.path)
that[that.config['export-mode']](that.config['export-path'] || that.location.path)
o.close()
})
}))

View File

@ -53,6 +53,9 @@ var browseWalk = require('lib/widget/browse-walk')
// // this is called when a new value is added via new_button but
// // list length limit is reached...
// callback: function(selected){ ... },
//
// // see: itemButtons doc in browse.js for more info...
// itemButtons: [..]
// }
//
// XXX add sort buttons: up/down/top/bottom...
@ -92,13 +95,18 @@ function(actions, list_key, options){
// list length limit
if(options.length_limit
&& (actions.config[list_key].length >= options.length_limit)){
&& (lst.length >= options.length_limit)){
options.callback && options.callback.call(list, txt)
return
}
// prevent editing non-arrays...
if(!(actions.config[list_key] instanceof Array)){
return
}
// save the new version...
actions.config[list_key] = actions.config[list_key].slice()
// add new value and sort list...
@ -134,9 +142,12 @@ function(actions, list_key, options){
var to_remove = []
var lst = actions.config[list_key]
lst = lst instanceof Array ? lst : Object.keys(lst)
var list = browse.makeList( null,
actions.config[list_key].concat(new_button ? [ new_button ] : []),
{itemButtons: [
lst.concat(new_button ? [ new_button ] : []),
{itemButtons: options.itemButtons || [
// mark for removal...
['&times;',
function(p){
@ -174,6 +185,11 @@ function(actions, list_key, options){
var o = overlay.Overlay(actions.ribbons.viewer, list)
.close(function(){
// prevent editing non-arrays...
if(!(actions.config[list_key] instanceof Array)){
return
}
// remove striked items...
to_remove.forEach(function(e){
var lst = actions.config[list_key].slice()
@ -198,7 +214,7 @@ function(actions, list_key, options){
// XXX should this be more generic...
var makeNestedConfigListEditor =
module.makeNestedConfigListEditor =
function(actions, parent, list_name, value_name, options){
function(actions, parent, list_key, value_key, options){
return function(){
var txt = $(this).find('.text').first().text()
@ -209,14 +225,14 @@ function(actions, parent, list_name, value_name, options){
// NOTE: this is called when adding a new value and
// list maximum length is reached...
callback: function(value){
actions.config[value_name] = value
actions.config[value_key] = value
o.close()
},
}
options.__proto__ = dfl_options
var o = makeConfigListEditor(actions, list_name, options)
var o = makeConfigListEditor(actions, list_key, options)
// update slideshow menu...
o.client.open(function(){
@ -229,7 +245,7 @@ function(actions, parent, list_name, value_name, options){
parent.focus()
})
o.client.select(actions.config[value_name])
o.client.select(actions.config[value_key])
}
}