+
+bool GuiThesaurus::initialiseParams(string const & data)
+{
+ string arg;
+ string const lang = rsplit(data, arg, ' ');
+ if (prefixIs(lang, "lang=")) {
+ lang_ = from_utf8(split(lang, '='));
+ text_ = from_utf8(arg);
+ } else {
+ text_ = from_utf8(data);
+ if (bufferview())
+ lang_ = from_ascii(
+ bufferview()->buffer().params().language->lang());
+ }
+ return true;
+}
+
+
+void GuiThesaurus::clearParams()
+{
+ text_.erase();
+ lang_.erase();
+}
+
+
+void GuiThesaurus::replace(docstring const & newstr)
+{
+ /* FIXME: this is not suitable ! We need to have a "lock"
+ * on a particular charpos in a paragraph that is broken on
+ * deletion/change !
+ */
+ docstring const data =
+ replace2string(newstr, text_,
+ true, // case sensitive
+ true, // match word
+ false, // all words
+ true); // forward
+ dispatch(FuncRequest(LFUN_WORD_REPLACE, data));
+}
+
+
+Thesaurus::Meanings const & GuiThesaurus::getMeanings(docstring const & str,
+ docstring const & lang)
+{
+ if (str != laststr_)
+ meanings_ = thesaurus.lookup(str, lang);
+ return meanings_;
+}
+
+
+Dialog * createGuiThesaurus(GuiView & lv) { return new GuiThesaurus(lv); }
+
+