From a1d2d11057b1ab727fdbec4430808d53d67128b1 Mon Sep 17 00:00:00 2001 From: hallgren Date: Wed, 3 Oct 2012 12:37:47 +0000 Subject: [PATCH] gfse: row view: add a button to copy a linearization When adding a new function, you can enter a linearization for one language and then copy it to the other languages with one button click. --- src/www/gfse/editor.js | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/www/gfse/editor.js b/src/www/gfse/editor.js index adfa1b086..e59afdefb 100644 --- a/src/www/gfse/editor.js +++ b/src/www/gfse/editor.js @@ -1309,6 +1309,7 @@ function draw_elin(g,igs,ci,f,dc,df) { if(f.template) conc.lins.push({fun:f.fun,args:f.args,lin:s}); else { f.lin=s; f.eb_lin=null; } + timestamp(conc); reload_grammar(g); } cont(msg); @@ -1474,12 +1475,34 @@ function draw_row(g) { var fun=g.abstract.funs[ix] + var missing=[] + for(var ci in g.concretes) + if(!fun_lin(g.concretes[ci],fname)) + missing.push(ci) + + function copy_button(langcode,lin) { + function copy() { + for(var i in missing) { + var ci=missing[i] + var conc=g.concretes[ci] + conc.lins.push(lin) + timestamp(conc); + } + reload_grammar(g) + } + var b=button("Copy",copy) + b.title="Copy lin "+fname+" from "+concname(langcode) + +" to languages that lack lin "+fname + return b + } + for(var ci in g.concretes) { var conc=g.concretes[ci] - var lin=fun_lin(conc,fname) || lin_template(g,fname) - var dl=draw_elin(g,igs,ci,lin,dc,df) + var lin=fun_lin(conc,fname) + var cp= lin && missing.length>0 ? [copy_button(conc.langcode,lin)] : [] + var dl=draw_elin(g,igs,ci,lin || lin_template(g,fname),dc,df) t.appendChild(tr([th(conc_tab_button(g,ci,true)), - td(kw("lin")),td(dl)])) + td(kw("lin")),td(dl),td(cp)])) } var fbar=wrap_class("table","tabs",tr([gap(),tab(true,kw(fname)),gap()])) return [fbar,div_id("file",[t])]