From 357b8b33ba3b8bbeda9087f2ff1fba4807a3d7f7 Mon Sep 17 00:00:00 2001 From: hallgren Date: Tue, 2 Oct 2012 13:09:56 +0000 Subject: [PATCH] gfse: more intuitive buttons for switching between the column, matrix & row views --- src/www/gfse/editor.css | 1 + src/www/gfse/editor.js | 57 ++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/www/gfse/editor.css b/src/www/gfse/editor.css index 2abebd09e..45199b72e 100644 --- a/src/www/gfse/editor.css +++ b/src/www/gfse/editor.css @@ -42,6 +42,7 @@ div.namebar table { width: 100%; } .namebar h3, .home h3, .sheet h3 { margin: 0; color: #009; } td.right { text-align: right; } +td.center { text-align: center; } .kw { font-weight: bold; font-family: sans-serif; color: #009; } .sep { font-weight: bold; color: #009; } diff --git a/src/www/gfse/editor.js b/src/www/gfse/editor.js index eafdf1d98..3ef56fc98 100644 --- a/src/www/gfse/editor.js +++ b/src/www/gfse/editor.js @@ -154,6 +154,7 @@ function draw_grammar(g) { var files=div_class("files",draw_row(g)) break; default: + g.view="column" var files=div_class("files",[draw_filebar(g),draw_file(g)]); break; } @@ -166,11 +167,18 @@ function draw_namebar(g,files) { var mb=minibar_button(g,files,err_ind,cb); var qb=quiz_button(g,err_ind); //var pb=draw_plainbutton(g,files); - var mxb=draw_matrixbutton(g,files) + + var fb=draw_view_button(g,"column") + var mxb=draw_view_button(g,"matrix") + var rb=draw_view_button(g,"row") + var xb=draw_closebutton(g); + var center=[wrap("small",text("View: ")),fb,mxb,rb] + var right=[err_ind,cb,mb,qb,xb] return div_class("namebar", [table([tr([td(draw_name(g)), - td_right([err_ind,cb,mb,qb/*,pb*/,mxb,xb])])])]) + td_center(center), + td_right(right)])])]) } function draw_name(g) { @@ -183,6 +191,14 @@ function draw_closebutton(g) { return b; } +function draw_view_button(g,view) { + var b=button(view,function(){open_view(g,view);}); + b.title="Shitch to the "+view+" view of the grammar"; + b.disabled=g.view==view + return b; +} + +/* function draw_plainbutton(g,files) { var b2; function show_editor() { edit_grammar(g); } @@ -199,19 +215,7 @@ function draw_plainbutton(g,files) { b.title="Show plain text representaiton of the grammar"; return b; } - -function draw_matrixbutton(g,files) { - switch(g.view) { - case "matrix": - function show_editor() { g.view="column"; reload_grammar(g); } - var b=button("Show editor",show_editor); - return b; - default: - var b=button("Matrix view",function(){open_matrix(g);}); - b.title="Show matrix view of the grammar"; - return b; - } -} +*/ function show_compile_error(res,err_ind) { var dst=compiler_output @@ -526,8 +530,12 @@ function add_concrete2(ix,code) { function open_abstract(g) { g.view="column"; g.current=0; reload_grammar(g); } function open_concrete(g,i) { g.view="column"; g.current=i+1; reload_grammar(g); } -function open_matrix(g) { g.view="matrix"; reload_grammar(g); } -function open_row(g,fun) { g.view="row"; g.row=fun; reload_grammar(g); } + +function open_view(g,view) { g.view=view; reload_grammar(g); } + +function open_matrix(g) { open_view(g,"matrix") } +function open_row(g) { open_view(g,"row") } +function open_column(g) { open_view(g,"column") } function td_gap(c) {return wrap_class("td","gap",c); } function gap() { return td_gap(text(" ")); } @@ -1411,14 +1419,14 @@ function draw_matrix(g) { for(var i in g.abstract.cats) { var cat=g.abstract.cats[i] - var row=[td(draw_ecat(g,i,dc))] // modifies dc + var row=[td([kw("cat"),draw_ecat(g,i,dc)])] // modifies dc for(var ci in g.concretes) { var conc=g.concretes[ci] row.push(td(text(cat_lincat(conc,cat)))) } t.appendChild(tr(row)) } - function openr(f) { return function() { open_row(g,f) } } + 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 @@ -1450,8 +1458,10 @@ function simple_draw_lin(f) { } function draw_row(g) { - var fname=g.row - var ix=fun_index(g,fname) + var ix,fname=g.row + if(fname) ix=fun_index(g,fname) + else 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) @@ -1461,7 +1471,7 @@ function draw_row(g) { var t=empty_class("table","matrixview") var e=draw_efun(g,ix,dc,df) // modifies df - t.appendChild(tr([th(abs_tab_button(g)),td([kw("fun"),e])])) + t.appendChild(tr([th(abs_tab_button(g)),td(kw("fun")),td(e)])) var fun=g.abstract.funs[ix] @@ -1470,7 +1480,7 @@ function draw_row(g) { var lin=fun_lin(conc,fname) || lin_template(g,fname) var dl=draw_elin(g,igs,ci,lin,dc,df) t.appendChild(tr([th(conc_tab_button(g,ci,true)), - td([kw("lin "),dl])])) + td(kw("lin")),td(dl)])) } var fbar=wrap_class("table","tabs",tr([gap(),tab(true,kw(fname)),gap()])) return [fbar,div_id("file",[t])] @@ -1739,6 +1749,7 @@ function ul(lis) { return node("ul",{},lis); } function li(xs) { return node("li",{},xs); } function table(rows) { return node("table",{},rows); } function td_right(cs) { return node("td",{"class":"right"},cs); } +function td_center(cs) { return node("td",{"class":"center"},cs); } function jsurl(js) { return "javascript:"+js; } /* -------------------------------------------------------------------------- */