summaryrefslogtreecommitdiff
path: root/src/www/syntax-editor/editor_menu.js
diff options
context:
space:
mode:
authorjohn.j.camilleri <john.j.camilleri@chalmers.se>2012-11-23 15:03:36 +0000
committerjohn.j.camilleri <john.j.camilleri@chalmers.se>2012-11-23 15:03:36 +0000
commitd9867893f83c801b37a4fe0acf0fa7289e857031 (patch)
tree33af1fe9716a507a6047148441ae9a749e238def /src/www/syntax-editor/editor_menu.js
parent9e430184ba5063110e5ec72c6137e4d38f92e206 (diff)
Syntax editor: now uses common GrammarManager object
Diffstat (limited to 'src/www/syntax-editor/editor_menu.js')
-rw-r--r--src/www/syntax-editor/editor_menu.js94
1 files changed, 49 insertions, 45 deletions
diff --git a/src/www/syntax-editor/editor_menu.js b/src/www/syntax-editor/editor_menu.js
index 2caa5a658..e207133e7 100644
--- a/src/www/syntax-editor/editor_menu.js
+++ b/src/www/syntax-editor/editor_menu.js
@@ -34,39 +34,64 @@ function EditorMenu(editor,opts) {
random_button: button("Random", function(){
t.editor.generate_random();
}),
+ debug_toggle: button("⚙", function(){
+ var sel = element("debug");
+ if (sel.classList.contains("hidden"))
+ sel.classList.remove("hidden")
+ else
+ sel.classList.add("hidden")
+ }),
};
- with(this.ui) {
- if (this.options.show.grammar_menu) {
- appendChildren(this.container, [text(" Grammar: "), grammar_menu]);
- grammar_menu.onchange = bind(this.change_grammar,this);
+ if (t.options.show.grammar_menu) {
+ appendChildren(t.container, [text(" Grammar: "), t.ui.grammar_menu]);
+ t.ui.grammar_menu.onchange = function(){
+ var grammar_url = t.ui.grammar_menu.value;
+ t.gm.change_grammar(grammar_url);
}
- if (this.options.show.startcat_menu) {
- appendChildren(this.container, [text(" Startcat: "), startcat_menu]);
- startcat_menu.onchange = bind(this.change_startcat,this);
- }
- if (this.options.show.to_menu) {
- appendChildren(this.container, [text(" To: "), to_toggle, to_menu]);
- to_menu.onchange = bind(this.change_language,this);
+ }
+ if (t.options.show.startcat_menu) {
+ appendChildren(t.container, [text(" Startcat: "), t.ui.startcat_menu]);
+ t.ui.startcat_menu.onchange = function(){
+ var startcat = t.ui.startcat_menu.value;
+ t.gm.change_startcat(startcat);
}
- appendChildren(this.container, [clear_button]);
- if (this.options.show.random_button) {
- appendChildren(this.container, [random_button]);
+ }
+ if (t.options.show.to_menu) {
+ appendChildren(t.container, [text(" To: "), t.ui.to_toggle, t.ui.to_menu]);
+ t.ui.to_menu.onchange = function(){
+ var languages = new Array();
+ for (i in t.ui.to_menu.options) {
+ var opt = t.ui.to_menu.options[i];
+ if (opt.selected)
+ languages.push(opt.value);
+ }
+ t.gm.change_languages(languages);
}
}
+ appendChildren(t.container, [t.ui.clear_button]);
+ if (t.options.show.random_button) {
+ appendChildren(t.container, [t.ui.random_button]);
+ }
+ appendChildren(t.container, [t.ui.debug_toggle]);
/* --- Client state initialisation -------------------------------------- */
this.editor = editor;
+ this.gm = editor.gm;
this.server = editor.server;
- /* --- Main program, this gets things going ----------------------------- */
- this.server.get_grammarlists(bind(this.show_grammarlist,this));
+ /* --- Register Grammar Manager hooks ----------------------------------- */
+ this.gm.register_action("onload", bind(this.hook_onload, this));
+ this.gm.register_action("change_grammar", bind(this.hook_change_grammar, this));
+ // this.gm.register_action("change_startcat", bind(this.hook_change_startcat, this));
+ // this.gm.register_action("change_languages", bind(this.hook_change_languages, this));
+
}
/* --- Grammar menu --------------------------------------------------------- */
-// Basically called once, when initializing
-// Copied from minibar.js
-EditorMenu.prototype.show_grammarlist=function(dir,grammar_names,dir_count) {
+// show the grammar list
+EditorMenu.prototype.hook_onload=function(dir,grammar_names,dir_count) {
+ debug("EditorMenu: onload");
var t=this;
var first_time=t.ui.grammar_menu.options.length == 0;
if(first_time) {
@@ -85,7 +110,7 @@ EditorMenu.prototype.show_grammarlist=function(dir,grammar_names,dir_count) {
var grammar0=t.options.initial.grammar;
if(!grammar0) grammar0=t.grammars[0];
t.ui.grammar_menu.value=grammar0;
- t.change_grammar();
+// t.change_grammar();
}
// Wait at most 1.5s before showing the grammar menu.
if(first_time) t.timeout=setTimeout(pick_first_grammar,1500);
@@ -93,24 +118,21 @@ EditorMenu.prototype.show_grammarlist=function(dir,grammar_names,dir_count) {
}
// Copied from minibar.js
-EditorMenu.prototype.change_grammar=function() {
+EditorMenu.prototype.hook_change_grammar=function() {
+ debug("EditorMenu: change grammar");
var t=this;
var grammar_url = t.ui.grammar_menu.value;
t.server.switch_to_other_grammar(grammar_url, function() {
t.server.grammar_info(function(grammar){
t.update_startcat_menu(grammar);
t.update_language_menu(t.ui.to_menu, grammar);
-
- // Call in main Editor object
- t.editor.change_grammar(grammar);
});
});
}
/* --- Start category menu -------------------------------------------------- */
-// Called each time the current grammar is changed!
-// Copied from minibar_input.js
+// Called from hook_change_grammar
EditorMenu.prototype.update_startcat_menu=function(grammar) {
var t=this;
var menu=this.ui.startcat_menu;
@@ -129,16 +151,9 @@ EditorMenu.prototype.update_startcat_menu=function(grammar) {
// }
}
-//
-EditorMenu.prototype.change_startcat=function() {
- var new_startcat = this.ui.startcat_menu.value;
- this.editor.change_startcat(new_startcat);
-}
-
/* --- Langugage (to) menu -------------------------------------------------- */
-// Called each time the current grammar is changed!
-// Copied from minibar_support.js
+// Called from hook_change_grammar
EditorMenu.prototype.update_language_menu=function(menu,grammar) {
var t = this;
function langpart(conc,abs) { // langpart("FoodsEng","Foods") == "Eng"
@@ -162,14 +177,3 @@ EditorMenu.prototype.update_language_menu=function(menu,grammar) {
}
}
-//
-EditorMenu.prototype.change_language=function() {
- this.editor.languages = new Array();
- for (i in this.ui.to_menu.options) {
- var opt = this.ui.to_menu.options[i];
- if (opt.selected)
- this.editor.languages.push(opt.value);
- }
- this.editor.update_linearisation();
-}
-