2 * \file GuiSpellchecker.cpp
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS.
13 #include "GuiSpellchecker.h"
15 #include "ControlSpellchecker.h"
16 #include "qt_helpers.h"
18 #include <QProgressBar>
20 #include <QPushButton>
21 #include <QListWidget>
22 #include <QListWidgetItem>
23 #include <QCloseEvent>
24 #include <QSyntaxHighlighter>
25 #include <QTextCharFormat>
26 #include <QTextDocument>
34 GuiSpellcheckerDialog::GuiSpellcheckerDialog(LyXView & lv)
35 : GuiDialog(lv, "spellchecker")
38 setViewTitle(_("Spellchecker"));
39 setController(new ControlSpellchecker(*this));
41 connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
43 connect(replaceCO, SIGNAL(highlighted(const QString &)),
44 this, SLOT(replaceChanged(const QString &)));
45 connect(replacePB, SIGNAL(clicked()),
46 this, SLOT(replaceClicked()));
47 connect(ignorePB, SIGNAL(clicked()),
48 this, SLOT(ignoreClicked()));
49 connect(replacePB_3, SIGNAL(clicked()),
50 this, SLOT(acceptClicked()));
51 connect(addPB, SIGNAL(clicked()),
52 this, SLOT(addClicked()));
53 connect(suggestionsLW, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
54 this, SLOT(replaceClicked() ) );
55 connect(suggestionsLW, SIGNAL(itemClicked(QListWidgetItem*)),
56 this, SLOT(suggestionChanged(QListWidgetItem*)));
58 wordED->setReadOnly(true);
60 bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
61 bc().setCancel(closePB);
65 ControlSpellchecker & GuiSpellcheckerDialog::controller()
67 return static_cast<ControlSpellchecker &>(GuiDialog::controller());
71 void GuiSpellcheckerDialog::acceptClicked()
77 void GuiSpellcheckerDialog::addClicked()
83 void GuiSpellcheckerDialog::replaceClicked()
89 void GuiSpellcheckerDialog::ignoreClicked()
95 void GuiSpellcheckerDialog::suggestionChanged(QListWidgetItem * item)
97 if (replaceCO->count() != 0)
98 replaceCO->setItemText(0, item->text());
100 replaceCO->addItem(item->text());
102 replaceCO->setCurrentIndex(0);
106 void GuiSpellcheckerDialog::replaceChanged(const QString & str)
108 if (suggestionsLW->currentItem()->text() == str)
111 for (int i = 0; i < suggestionsLW->count(); ++i) {
112 if (suggestionsLW->item(i)->text() == str) {
113 suggestionsLW->setCurrentRow(i);
120 void GuiSpellcheckerDialog::closeEvent(QCloseEvent * e)
127 void GuiSpellcheckerDialog::reject()
134 void GuiSpellcheckerDialog::updateContents()
136 if (isVisibleView() || controller().exitEarly())
137 controller().check();
141 void GuiSpellcheckerDialog::accept()
143 controller().ignoreAll();
147 void GuiSpellcheckerDialog::add()
149 controller().insert();
153 void GuiSpellcheckerDialog::ignore()
155 controller().check();
159 void GuiSpellcheckerDialog::replace()
161 controller().replace(qstring_to_ucs4(replaceCO->currentText()));
165 void GuiSpellcheckerDialog::partialUpdate(int state)
168 case ControlSpellchecker::SPELL_PROGRESSED:
169 spellcheckPR->setValue(controller().getProgress());
172 case ControlSpellchecker::SPELL_FOUND_WORD: {
173 wordED->setText(toqstr(controller().getWord()));
174 suggestionsLW->clear();
177 while (!(w = controller().getSuggestion()).empty())
178 suggestionsLW->addItem(toqstr(w));
180 if (suggestionsLW->count() == 0)
181 suggestionChanged(new QListWidgetItem(wordED->text()));
183 suggestionChanged(suggestionsLW->item(0));
185 suggestionsLW->setCurrentRow(0);
191 } // namespace frontend
194 #include "GuiSpellchecker_moc.cpp"