From da80a1d3ddf46e7121fff7d35ea7fabf6618deb6 Mon Sep 17 00:00:00 2001 From: hallgren Date: Mon, 11 Jun 2012 14:10:26 +0000 Subject: [PATCH] translator: source segments can now be edited --- src/www/translator/translator.js | 37 ++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/src/www/translator/translator.js b/src/www/translator/translator.js index a9601ca4c..745c846a0 100644 --- a/src/www/translator/translator.js +++ b/src/www/translator/translator.js @@ -340,6 +340,29 @@ Translator.prototype.pick_translation=function(i,txt) { t.replace_segment(i,t.draw_segment(s,i)) } +Translator.prototype.edit_source=function(source,i) { + var t=this + var s=t.document.segments[i] + + function restore() { t.replace_segment(i,t.draw_segment(s,i)) } + function done() { + s.source=inp.value // side effect, updating the document in-place + restore(); + if(s.options.method!="Manual") { + s.options.to="" // hack to force an update + t.update_translations() + } + return false; + } + + var inp=node("input",{name:"it",value:s.source}) + var e=wrap("form",[inp, submit(), button("Cancel",restore)]) + clear(source) + source.appendChild(e) + e.onsubmit=done + inp.focus() +} + Translator.prototype.edit_translation=function(i) { var t=this var s=t.document.segments[i] @@ -357,7 +380,7 @@ Translator.prototype.edit_translation=function(i) { var inp=node("input",{name:"it",value:s.target}) var e=wrap("form",[inp, submit(), button("Cancel",restore)]) var target=wrap_class("td","target",e) - var edit=t.draw_segment_given_target(s,target) + var edit=t.draw_segment_given_target(s,target,i) t.replace_segment(i,edit) e.onsubmit=done inp.focus(); @@ -430,7 +453,7 @@ Translator.prototype.draw_segment=function(s,i) { function pick(txt) { t.pick_translation(i,txt) } target.onclick=edit if(s.choices) appendChildren(target,draw_choices(s.choices,pick)) - return t.draw_segment_given_target(s,target) + return t.draw_segment_given_target(s,target,i) } function draw_choices(txts,onclick) { @@ -443,7 +466,7 @@ function draw_choices(txts,onclick) { wrap_class("dl","popupmenu",map(opt,txts))] } -Translator.prototype.draw_segment_given_target=function(s,target) { +Translator.prototype.draw_segment_given_target=function(s,target,i) { var t=this function draw_options2(o) { @@ -464,11 +487,11 @@ Translator.prototype.draw_segment_given_target=function(s,target) { return wrap("div",[span_class("arrow",text(" ⇒ ")), wrap("dl",draw_options2(o))]) } + var source=wrap_class("td","source",text(s.source)) + source.onclick=function() { t.edit_source(source,i); } + var options=wrap_class("td","options",draw_options(s.options)) - return wrap_class("tr","segment", - [wrap_class("td","source",text(s.source)), - wrap_class("td","options",draw_options(s.options)), - target]) + return wrap_class("tr","segment",[source,options,target]) } function empty_document() {