diff --git a/src/www/minibar/about.html b/src/www/minibar/about.html
index 69fba5a9d..08f891bbc 100644
--- a/src/www/minibar/about.html
+++ b/src/www/minibar/about.html
@@ -167,11 +167,14 @@ Some implementation details:
matching completions.
(You can now use names of people when constructing sentences in the Letter
grammar, for example.)
+
[Added 2011-10-18] Added a button to display some grammar info and a
+ start category menu. The start category menu can be turned off by passing
+ the option {startcat_menu:false} when starting the minibar.
- Last modified: Mon Aug 22 19:31:37 CEST 2011
+ Last modified: Tue Oct 18 17:18:42 CEST 2011
TH
diff --git a/src/www/minibar/gf-web-api-examples.html b/src/www/minibar/gf-web-api-examples.html
index 194967de0..520a66070 100644
--- a/src/www/minibar/gf-web-api-examples.html
+++ b/src/www/minibar/gf-web-api-examples.html
@@ -90,6 +90,7 @@ full API.
http://localhost:41296/grammars/Foods.pgf
{"name":"Foods",
"userLanguage":"FoodsEng",
+ "startcat":"Comment",
"categories":["Comment","Float","Int","Item","Kind","Quality","String"],
"functions":["Boring","Cheese","Delicious","Expensive","Fish","Fresh",
"Italian","Mod","Pizza","Pred","That","These","This","Those","Very",
@@ -145,7 +146,7 @@ full API.
- Last modified: Sun Aug 21 10:52:43 CEST 2011
+ Last modified: Tue Oct 18 16:36:36 CEST 2011
TH
\ No newline at end of file
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) {
diff --git a/src/www/minibar/minibar_translations.js b/src/www/minibar/minibar_translations.js
index ef6fbd701..73bd4be6a 100644
--- a/src/www/minibar/minibar_translations.js
+++ b/src/www/minibar/minibar_translations.js
@@ -38,8 +38,9 @@ Translations.prototype.clear=function() {
this.main.innerHTML="";
}
-Translations.prototype.translateFrom=function(current) {
+Translations.prototype.translateFrom=function(current,startcat) {
this.current=current;
+ this.startcat=startcat;
this.get_translations();
}
@@ -47,10 +48,10 @@ Translations.prototype.get_translations=function() {
with(this) {
var c=current;
if(options.show_grouped_translations)
- server.translategroup({from:c.from,input:c.input},
+ server.translategroup({from:c.from,input:c.input,cat:startcat},
bind(show_groupedtranslations,this));
else
- server.translate({from:c.from,input:c.input},
+ server.translate({from:c.from,input:c.input,cat:startcat},
bind(show_translations,this));
}
}