summaryrefslogtreecommitdiff
path: root/src/www/minibar/minibar_input.js
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2011-10-18 15:21:49 +0000
committerhallgren <hallgren@chalmers.se>2011-10-18 15:21:49 +0000
commit26b8df5cf512cfe2858661edf2b6ca5eec5b0ed6 (patch)
treee20fcebf475488f790a1a307516c87bd9263474e /src/www/minibar/minibar_input.js
parentd63724ed5022d58620a9738ae359cd3e39446a2f (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.js25
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) {