mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-12-17 00:31:40 +00:00
started reworking external editor UI...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
d78fac69a7
commit
14f62ace9a
@ -11,6 +11,8 @@ define(function(require){ var module = {}
|
|||||||
var actions = require('lib/actions')
|
var actions = require('lib/actions')
|
||||||
var core = require('features/core')
|
var core = require('features/core')
|
||||||
|
|
||||||
|
var widgets = require('features/ui-widgets')
|
||||||
|
|
||||||
// widgets...
|
// widgets...
|
||||||
var browse = require('lib/widget/browse')
|
var browse = require('lib/widget/browse')
|
||||||
var overlay = require('lib/widget/overlay')
|
var overlay = require('lib/widget/overlay')
|
||||||
@ -44,6 +46,12 @@ var ExternalEditorActions = actions.Actions({
|
|||||||
// as argument unless it uses only '\' and not '/'
|
// as argument unless it uses only '\' and not '/'
|
||||||
['IrfanView|"C:/Program Files (x86)/IrfanView/i_view32.exe" "$PATH"'],
|
['IrfanView|"C:/Program Files (x86)/IrfanView/i_view32.exe" "$PATH"'],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'external-editor-targets': [
|
||||||
|
'Original image',
|
||||||
|
'Best preview',
|
||||||
|
// XXX
|
||||||
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
// XXX this still needs image type and better support for OS paths
|
// XXX this still needs image type and better support for OS paths
|
||||||
@ -109,6 +117,106 @@ module.ExternalEditor = core.ImageGridFeatures.Feature({
|
|||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
|
|
||||||
var ExternalEditorUIActions = actions.Actions({
|
var ExternalEditorUIActions = actions.Actions({
|
||||||
|
// XXX get editor data...
|
||||||
|
// XXX set editor data...
|
||||||
|
// XXX revise editor format...
|
||||||
|
// XXX empty title -- use app name without ext...
|
||||||
|
externalEditorDialog: ['- Edit/',
|
||||||
|
function(editor){
|
||||||
|
var that = this
|
||||||
|
|
||||||
|
// XXX STUB: get the real editor...
|
||||||
|
var editor = {
|
||||||
|
// NOTE: empty means use app name...
|
||||||
|
title: '',
|
||||||
|
// NOTE: empty means system to select editor...
|
||||||
|
path: '/',
|
||||||
|
// NOTE: empty is the same as '$TARGET'...
|
||||||
|
// XXX use $TARGET...
|
||||||
|
arguments: '',
|
||||||
|
target: 'Original image',
|
||||||
|
}
|
||||||
|
|
||||||
|
var o = overlay.Overlay(this.ribbons.viewer,
|
||||||
|
browse.makeLister(null, function(_, make){
|
||||||
|
make(['Title: ', function(){ return editor.title || '' }])
|
||||||
|
.on('open', function(){
|
||||||
|
event.preventDefault()
|
||||||
|
widgets.makeEditableItem(o.client,
|
||||||
|
$(this).find('.text').last(),
|
||||||
|
function(_, text){ editor.title = text }) })
|
||||||
|
|
||||||
|
make(['Path: ', function(){ return editor.path }], {
|
||||||
|
buttons: [
|
||||||
|
['browse', function(p){
|
||||||
|
var e = this.filter('"'+p+'"', false)
|
||||||
|
var path = e.find('.text').last().text()
|
||||||
|
var txt = e.find('.text').first().text()
|
||||||
|
|
||||||
|
var b = overlay.Overlay(that.ribbons.viewer,
|
||||||
|
browseWalk.makeWalk(null, path,
|
||||||
|
// XXX
|
||||||
|
'*+(exe|cmd|ps1|sh)',
|
||||||
|
{})
|
||||||
|
// path selected...
|
||||||
|
.open(function(evt, path){
|
||||||
|
editor.path = path
|
||||||
|
|
||||||
|
b.close()
|
||||||
|
|
||||||
|
o.client.update()
|
||||||
|
.then(function(){ o.client.select(txt+path) })
|
||||||
|
}))
|
||||||
|
.close(function(){
|
||||||
|
// XXX
|
||||||
|
that.getOverlay().focus()
|
||||||
|
})
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
})
|
||||||
|
.on('open', function(){
|
||||||
|
event.preventDefault()
|
||||||
|
widgets.makeEditableItem(o.client,
|
||||||
|
$(this).find('.text').last(),
|
||||||
|
function(_, text){ editor.path = text }) })
|
||||||
|
|
||||||
|
make(['Arguments: ', function(){ return editor.arguments || '' }])
|
||||||
|
.on('open', function(){
|
||||||
|
event.preventDefault()
|
||||||
|
widgets.makeEditableItem(o.client,
|
||||||
|
$(this).find('.text').last(),
|
||||||
|
function(_, text){ editor.arguments = text }) })
|
||||||
|
|
||||||
|
make(['Target: ', function(){ return editor.target || 'Original image' }])
|
||||||
|
.on('open',
|
||||||
|
widgets.makeNestedConfigListEditor(that, o,
|
||||||
|
'external-editor-targets',
|
||||||
|
function(val){
|
||||||
|
if(val == null){
|
||||||
|
return editor.target
|
||||||
|
} else {
|
||||||
|
editor.target = val
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
new_button: false,
|
||||||
|
itemButtons: [],
|
||||||
|
}))
|
||||||
|
|
||||||
|
make(['Save'])
|
||||||
|
.on('open', function(){
|
||||||
|
// XXX save stuff...
|
||||||
|
// XXX
|
||||||
|
|
||||||
|
o.close()
|
||||||
|
})
|
||||||
|
}))
|
||||||
|
|
||||||
|
o.client.dom.addClass('metadata-view tail-action')
|
||||||
|
|
||||||
|
return o
|
||||||
|
}],
|
||||||
|
// XXX use .externalEditorDialog(..)
|
||||||
listExtenalEditors: ['Edit/List external editors',
|
listExtenalEditors: ['Edit/List external editors',
|
||||||
function(){
|
function(){
|
||||||
var that = this
|
var that = this
|
||||||
|
|||||||
@ -860,7 +860,7 @@ var FileSystemWriterActions = actions.Actions({
|
|||||||
// XXX copy img.path -- the main image, especially when no previews present....
|
// XXX copy img.path -- the main image, especially when no previews present....
|
||||||
// XXX
|
// XXX
|
||||||
|
|
||||||
Object.keys(previews).forEach(function(res){
|
previews && Object.keys(previews).forEach(function(res){
|
||||||
var preview_path = decodeURI(previews[res])
|
var preview_path = decodeURI(previews[res])
|
||||||
|
|
||||||
var from = (img_base || base_dir) +'/'+ preview_path
|
var from = (img_base || base_dir) +'/'+ preview_path
|
||||||
|
|||||||
@ -507,6 +507,8 @@ module.MetadataUI = core.ImageGridFeatures.Feature({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Load etdata on demand...
|
||||||
|
//
|
||||||
var MetadataFSUI =
|
var MetadataFSUI =
|
||||||
module.MetadataFSUI = core.ImageGridFeatures.Feature({
|
module.MetadataFSUI = core.ImageGridFeatures.Feature({
|
||||||
title: '',
|
title: '',
|
||||||
|
|||||||
@ -31,6 +31,27 @@ var browseWalk = require('lib/widget/browse-walk')
|
|||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
|
// XXX make the selector more accurate...
|
||||||
|
// ...at this point this will select the first elem with text which
|
||||||
|
// can be a different elem...
|
||||||
|
var makeEditableItem =
|
||||||
|
module.makeEditableItem =
|
||||||
|
function(list, elem, callback, options){
|
||||||
|
return elem
|
||||||
|
.makeEditable({
|
||||||
|
clear_on_edit: false,
|
||||||
|
})
|
||||||
|
.on('edit-done', callback || function(){})
|
||||||
|
.on('edit-aborted edit-done', function(_, text){
|
||||||
|
list.update()
|
||||||
|
// XXX make the selector more accurate...
|
||||||
|
// ...at this point this will select the first elem
|
||||||
|
// with text which can be a different elem...
|
||||||
|
.then(function(){ list.select(text) })
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Options format:
|
// Options format:
|
||||||
// {
|
// {
|
||||||
@ -224,7 +245,11 @@ function(actions, parent, list_key, value_key, options){
|
|||||||
// NOTE: this is called when adding a new value and
|
// NOTE: this is called when adding a new value and
|
||||||
// list maximum length is reached...
|
// list maximum length is reached...
|
||||||
callback: function(value){
|
callback: function(value){
|
||||||
|
if(typeof(value_key) == typeof(function(){})){
|
||||||
|
value_key(value)
|
||||||
|
} else {
|
||||||
actions.config[value_key] = value
|
actions.config[value_key] = value
|
||||||
|
}
|
||||||
|
|
||||||
o.close()
|
o.close()
|
||||||
},
|
},
|
||||||
@ -244,8 +269,13 @@ function(actions, parent, list_key, value_key, options){
|
|||||||
parent.focus()
|
parent.focus()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if(typeof(value_key) == typeof(function(){})){
|
||||||
|
o.client.select(value_key())
|
||||||
|
|
||||||
|
} else {
|
||||||
o.client.select(actions.config[value_key])
|
o.client.select(actions.config[value_key])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user