summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2012-10-02 13:50:35 +0000
committerhallgren <hallgren@chalmers.se>2012-10-02 13:50:35 +0000
commit63e589372ed8575f6378e58529c00cdee6e0efde (patch)
tree41ef62ab0ca4efe5969f9b7985c0ca5e0cbef458 /src
parent357b8b33ba3b8bbeda9087f2ff1fba4807a3d7f7 (diff)
gfse: you can now add new functions from the matrix view
Diffstat (limited to 'src')
-rw-r--r--src/www/gfse/editor.js22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/www/gfse/editor.js b/src/www/gfse/editor.js
index 3ef56fc98..a52474934 100644
--- a/src/www/gfse/editor.js
+++ b/src/www/gfse/editor.js
@@ -895,22 +895,24 @@ function draw_funs(g) {
return es;
}
-function draw_efun(g,i,dc,df) { // modifies df !!
+function draw_efun(g,i,dc,df,click) { // modifies df !!
var funs=g.abstract.funs;
function del() { delete_fun(g,i); }
- var f=deletable(del,editable("span",draw_fun(g,funs[i],dc,df),g,edit_fun(i),"Edit this function"),"Delete this function");
+ var f=deletable(del,editable("span",draw_fun(g,funs[i],dc,df,click),g,edit_fun(i),"Edit this function"),"Delete this function");
df[funs[i].name]=g.basename;
return f
}
-function draw_fun(g,fun,dc,df) {
+function draw_fun(g,fun,dc,df,click) {
function check(el) {
return ifError(dc[fun.name],
"Function names must be distinct from category names",
ifError(df[fun.name],duplicated(g,"function",df[fun.name]),el));
}
- return node("span",{},
- [check(ident(fun.name)),sep(" : "),draw_type(fun.type,dc)]);
+ var d=node("span",{},
+ [check(ident(fun.name)),sep(" : "),draw_type(fun.type,dc)]);
+ if(click) d.onclick=click;
+ return d;
}
function draw_type(t,dc) {
@@ -1429,8 +1431,7 @@ function draw_matrix(g) {
function openr(f) { return function() { g.row=f; open_row(g) } }
for(var i in g.abstract.funs) {
var fun=g.abstract.funs[i]
- var e=draw_efun(g,i,dc,df) // modifies df
- e.onclick=openr(fun.name)
+ var e=draw_efun(g,i,dc,df,openr(fun.name)) // modifies df
var row=[td(e)]
for(var ci in g.concretes) {
var conc=g.concretes[ci]
@@ -1440,7 +1441,7 @@ function draw_matrix(g) {
}
t.appendChild(tr(row))
}
- return t
+ return div_class("extensible",[t,more(g,add_fun,"Add a new function")])
}
function simple_draw_lin(f) {
@@ -1458,11 +1459,10 @@ function simple_draw_lin(f) {
}
function draw_row(g) {
- var ix,fname=g.row
+ var ix=null,fname=g.row
if(fname) ix=fun_index(g,fname)
- else ix=0,fname=g.abstract.funs[0] && g.abstract.funs[0].name
+ if(ix==null) ix=0,fname=g.abstract.funs[0] && g.abstract.funs[0].name
if(!fname) return text("No functions in the grammar")
- if(ix==null) return text(fname+" not found")
var igs=inherited_grammars(g)
var dc=defined_cats(g);