diff options
| author | hallgren <hallgren@chalmers.se> | 2011-10-18 15:21:49 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2011-10-18 15:21:49 +0000 |
| commit | 26b8df5cf512cfe2858661edf2b6ca5eec5b0ed6 (patch) | |
| tree | e20fcebf475488f790a1a307516c87bd9263474e /src/www/minibar/minibar_input.js | |
| parent | d63724ed5022d58620a9738ae359cd3e39446a2f (diff) | |
minibar: adding a start category menu
+ The start category menu can be turned off by passing the option
{startcat_menu:false} when starting the minibar.
+ Documentation updates.
Diffstat (limited to 'src/www/minibar/minibar_input.js')
| -rw-r--r-- | src/www/minibar/minibar_input.js | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/www/minibar/minibar_input.js b/src/www/minibar/minibar_input.js index 8075eb8ea..4083814d0 100644 --- a/src/www/minibar/minibar_input.js +++ b/src/www/minibar/minibar_input.js @@ -9,6 +9,7 @@ function Input(server,translations,opts) { // Input object constructor this.options={ delete_button_text: "⌫", default_source_language: null, + startcat_menu: true, random_button: true, } @@ -22,9 +23,12 @@ function Input(server,translations,opts) { // Input object constructor this.surface=div_id("surface"); this.words=div_id("words"); this.from_menu=empty("select"); + this.startcat_menu=empty("select") with(this) { appendChildren(main,[surface,words]); + if(options.startcat_menu) + appendChildren(menus,[text(" Startcat: "),startcat_menu]) appendChildren(menus,[text(" From: "),from_menu]) appendChildren(buttons, [button(options.delete_button_text,bind(delete_last,this),"H"), @@ -38,14 +42,28 @@ function Input(server,translations,opts) { // Input object constructor this.previous=null; this.from_menu.onchange=bind(this.change_language,this); + this.startcat_menu.onchange=bind(this.clear_all,this); } Input.prototype.change_grammar=function (grammar) { update_language_menu(this.from_menu,grammar); set_initial_language(this.options,this.from_menu,grammar); + this.update_startcat_menu(grammar) this.change_language(); } +Input.prototype.update_startcat_menu=function (grammar) { + var menu=this.startcat_menu; + menu.innerHTML=""; + var cats=grammar.categories; + for(var cat in cats) menu.appendChild(option(cats[cat],cats[cat])) + if(grammar.startcat) menu.value=grammar.startcat; + else { + insertFirst(menu,option("Default","")); + menu.value=""; + } +} + Input.prototype.change_language=function () { this.current.from=this.from_menu.value; this.clear_all(); @@ -73,7 +91,8 @@ Input.prototype.get_completions=function() { with(this) { //debug("get_completions "); words.innerHTML="..."; - server.complete({from:current.from,input:current.input}, + server.complete({from:current.from,input:current.input, + cat:startcat_menu.value}, bind(show_completions,this)); } } @@ -83,7 +102,7 @@ Input.prototype.show_completions=function(complete_output) { //debug("show_completions "); var completions=complete_output[0].completions; var emptycnt=add_completions(completions) - if(true/*emptycnt>0*/) translations.translateFrom(current); + if(true/*emptycnt>0*/) translations.translateFrom(current,startcat_menu.value); else translations.clear(); if(surface.typed && emptycnt==completions.length) { if(surface.typed.value=="") remove_typed_input(); @@ -198,7 +217,7 @@ Input.prototype.generate_random=function() { function lin_random(abs) { t.server.linearize({tree:abs[0].tree,to:t.current.from},show_random); } - t.server.get_random({},lin_random); + t.server.get_random({cat:t.startcat_menu.value},lin_random); } Input.prototype.add_words=function(s) { |
