\r
c.onRenderMenu.add(function(c, m) {\r
m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
+ t.menuItems = {};\r
each(t.languages, function(v, k) {\r
var o = {icon : 1}, mi;\r
\r
if (v == t.selectedLang) {\r
return;\r
}\r
- mi.setSelected(1);\r
- t.selectedItem.setSelected(0);\r
- t.selectedItem = mi;\r
+ t._updateMenu(mi);\r
t.selectedLang = v;\r
};\r
\r
o.title = k;\r
mi = m.add(o);\r
mi.setSelected(v == t.selectedLang);\r
-\r
+ t.menuItems[v] = mi;\r
if (v == t.selectedLang)\r
t.selectedItem = mi;\r
- })\r
+ });\r
});\r
\r
+\r
+\r
return c;\r
}\r
},\r
\r
+ setLanguage: function(lang) {\r
+ var t = this;\r
+\r
+ if (lang == t.selectedLang) {\r
+ // allowed\r
+ return;\r
+ }\r
+\r
+ if (tinymce.grep(t.languages, function(v) { return v === lang; }).length === 0) {\r
+ throw "Unknown language: " + lang;\r
+ }\r
+\r
+ t.selectedLang = lang;\r
+\r
+ // if the menu has been shown, update it as well\r
+ if (t.menuItems) {\r
+ t._updateMenu(t.menuItems[lang]);\r
+ }\r
+\r
+ if (t.active) {\r
+ // clear error in the old language.\r
+ t._done();\r
+\r
+ // Don't immediately block the UI to check spelling in the new language, this is an API not a user action.\r
+ }\r
+ },\r
+\r
// Internal functions\r
\r
+ _updateMenu: function(mi) {\r
+ mi.setSelected(1);\r
+ this.selectedItem.setSelected(0);\r
+ this.selectedItem = mi;\r
+ },\r
+\r
_walk : function(n, f) {\r
var d = this.editor.getDoc(), w;\r
\r
each(nl, function(n) {\r
var node, elem, txt, pos, v = n.nodeValue;\r
\r
+ rx.lastIndex = 0;\r
if (rx.test(v)) {\r
// Encode the content\r
v = dom.encode(v);\r