#include "Language.h"
#include "LyX.h"
#include "LyXRC.h"
+#include "lyxfind.h"
#include "Paragraph.h"
#include "WordLangTuple.h"
#include "support/textutils.h"
#include <QListWidgetItem>
+#include <QKeyEvent>
#include "SpellChecker.h"
this, SLOT(on_replacePB_clicked()));
d->ui.wordED->setReadOnly(true);
+
+ d->ui.suggestionsLW->installEventFilter(this);
}
}
-void GuiSpellchecker::on_suggestionsLW_itemChanged(QListWidgetItem * item)
+bool GuiSpellchecker::eventFilter(QObject *obj, QEvent *event)
+{
+ if (obj == d->ui.suggestionsLW && event->type() == QEvent::KeyPress) {
+ QKeyEvent *e = static_cast<QKeyEvent *> (event);
+ if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) {
+ on_suggestionsLW_itemClicked(d->ui.suggestionsLW->currentItem());
+ on_replacePB_clicked();
+ return true;
+ } else if (e->key() == Qt::Key_Right) {
+ on_suggestionsLW_itemClicked(d->ui.suggestionsLW->currentItem());
+ return true;
+ }
+ }
+ // standard event processing
+ return QWidget::eventFilter(obj, event);
+}
+
+
+void GuiSpellchecker::on_suggestionsLW_itemClicked(QListWidgetItem * item)
{
if (d->ui.replaceCO->count() != 0)
d->ui.replaceCO->setItemText(0, item->text());
}
+void GuiSpellchecker::on_findNextPB_clicked()
+{
+ docstring const data = find2string(
+ qstring_to_ucs4(d->ui.wordED->text()),
+ true, true, true);
+ dispatch(FuncRequest(LFUN_WORD_FIND, data));
+}
+
+
void GuiSpellchecker::on_replacePB_clicked()
{
docstring const replacement = qstring_to_ucs4(d->ui.replaceCO->currentText());
LYXERR(Debug::GUI, "Replace (" << replacement << ")");
BufferView * bv = const_cast<BufferView *>(bufferview());
+ if (!bv->cursor().inTexted())
+ return;
cap::replaceSelectionWithString(bv->cursor(), replacement, true);
bv->buffer().markDirty();
// If we used an LFUN, we would not need that
}
+void GuiSpellchecker::on_replaceAllPB_clicked()
+{
+ docstring const data = replace2string(
+ qstring_to_ucs4(d->ui.replaceCO->currentText()),
+ qstring_to_ucs4(d->ui.wordED->text()),
+ true, true, true, true);
+ dispatch(FuncRequest(LFUN_WORD_REPLACE, data));
+ check(); // continue spellchecking
+}
+
+
void GuiSpellchecker::updateSuggestions(docstring_list & words)
{
QString const suggestion = toqstr(d->word_.word());
lw->clear();
if (words.empty()) {
- on_suggestionsLW_itemChanged(new QListWidgetItem(suggestion));
+ on_suggestionsLW_itemClicked(new QListWidgetItem(suggestion));
return;
}
for (size_t i = 0; i != words.size(); ++i)
lw->addItem(toqstr(words[i]));
- on_suggestionsLW_itemChanged(lw->item(0));
+ on_suggestionsLW_itemClicked(lw->item(0));
lw->setCurrentRow(0);
}