#include "FuncRequest.h"
#include "Language.h"
#include "lyxfind.h"
+#include "WordLangTuple.h"
#include "support/debug.h"
#include "support/gettext.h"
#include "support/lstrings.h"
#include <QAbstractItemModel>
+#include <QCompleter>
+#include <QDialogButtonBox>
#include <QHeaderView>
#include <QLineEdit>
#include <QPushButton>
meaningsTV->setColumnCount(1);
meaningsTV->header()->hide();
- connect(closePB, SIGNAL(clicked()),
- this, SLOT(slotClose()));
+ connect(buttonBox, SIGNAL(clicked(QAbstractButton *)),
+ this, SLOT(slotButtonBox(QAbstractButton *)));
connect(replaceED, SIGNAL(returnPressed()),
this, SLOT(replaceClicked()));
connect(replaceED, SIGNAL(textChanged(QString)),
// FIXME: it would be nice if sorting was enabled/disabled via a checkbox.
language_model->sort(0);
languageCO->setModel(language_model);
+ languageCO->setModelColumn(2);
- bc().setCancel(closePB);
+ //bug #8138
+ if (entryCO->completer())
+ entryCO->completer()->setCompletionMode(QCompleter::PopupCompletion);
+
+ bc().setCancel(buttonBox->button(QDialogButtonBox::Close));
bc().setApply(replacePB);
bc().addReadOnly(replaceED);
bc().addReadOnly(replacePB);
bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
}
+void GuiThesaurus::checkStatus()
+{
+ if (!isBufferAvailable()) {
+ // deactivate the thesaurus if we have no buffer
+ enableView(false);
+ return;
+ }
+ updateView();
+}
void GuiThesaurus::change_adaptor()
{
if (pos > -1)
item = rex.cap(2).trimmed();
replaceED->setText(item);
- replacePB->setEnabled(true);
+ replacePB->setEnabled(!isBufferReadonly());
changed();
}
void GuiThesaurus::updateLists()
{
meaningsTV->clear();
+
+ if (entryCO->currentText().isEmpty())
+ return;
+
meaningsTV->setUpdatesEnabled(false);
QString const lang = languageCO->itemData(
languageCO->currentIndex()).toString();
- docstring const lang_code =
- from_ascii(lyx::languages.getLanguage(fromqstr(lang))->code());
+ Language * language = const_cast<Language*>(lyx::languages.getLanguage(fromqstr(lang)));
+ docstring const lang_code = from_ascii(language->code());
Thesaurus::Meanings meanings =
- getMeanings(qstring_to_ucs4(entryCO->currentText()), lang_code);
+ getMeanings(WordLangTuple(qstring_to_ucs4(entryCO->currentText()), language));
for (Thesaurus::Meanings::const_iterator cit = meanings.begin();
cit != meanings.end(); ++cit) {
}
meaningsTV->setEnabled(true);
lookupPB->setEnabled(true);
- replaceED->setEnabled(true);
- replacePB->setEnabled(true);
+ bool const readonly = isBufferReadonly();
+ replaceED->setEnabled(!readonly);
+ replacePB->setEnabled(!readonly);
}
if (meanings.empty()) {
}
-bool GuiThesaurus::initialiseParams(string const & data)
+bool GuiThesaurus::initialiseParams(string const & sdata)
{
string arg;
- string const lang = rsplit(data, arg, ' ');
+ string const lang = rsplit(sdata, arg, ' ');
if (prefixIs(lang, "lang=")) {
lang_ = from_utf8(split(lang, '='));
text_ = from_utf8(arg);
} else {
- text_ = from_utf8(data);
+ text_ = from_utf8(sdata);
if (bufferview())
lang_ = from_ascii(
bufferview()->buffer().params().language->lang());
* on a particular charpos in a paragraph that is broken on
* deletion/change !
*/
- docstring const data =
- replace2string(text_, newstr,
+ docstring const sdata =
+ replace2string(newstr, text_,
true, // case sensitive
true, // match word
false, // all words
true); // forward
- dispatch(FuncRequest(LFUN_WORD_REPLACE, data));
+ dispatch(FuncRequest(LFUN_WORD_REPLACE, sdata));
}
-Thesaurus::Meanings const & GuiThesaurus::getMeanings(docstring const & str,
- docstring const & lang)
+Thesaurus::Meanings const & GuiThesaurus::getMeanings(WordLangTuple const & wl)
{
- if (str != laststr_)
- meanings_ = thesaurus.lookup(str, lang);
+ if (wl.word() != laststr_)
+ meanings_ = thesaurus.lookup(wl);
return meanings_;
}