00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <qstringlist.h>
00022 #include <qpushbutton.h>
00023 #include <qlabel.h>
00024 #include <qlayout.h>
00025
00026 #include <kapplication.h>
00027 #include <klocale.h>
00028 #include <klistbox.h>
00029 #include <klineedit.h>
00030 #include <kprogress.h>
00031 #include <kbuttonbox.h>
00032 #include <kdebug.h>
00033
00034 #include "kspelldlg.h"
00035
00036 KSpellDlg::KSpellDlg(
00037 QWidget * parent,
00038 const char * name,
00039 bool _progressbar,
00040 bool _modal
00041 )
00042 : KDialogBase(
00043 parent, name, _modal, i18n("Check spelling"), Help|Cancel|User1,
00044 Cancel, true, i18n("&Stop")
00045 ),
00046 progressbar(_progressbar)
00047 {
00048 QWidget * w = new QWidget(this);
00049 setMainWidget(w);
00050
00051 wordlabel = new QLabel(w, "wordlabel");
00052 wordlabel->setFrameStyle(QFrame::WinPanel | QFrame::Sunken);
00053
00054 editbox = new KLineEdit(w, "editbox");
00055
00056 listbox = new KListBox(w, "listbox");
00057
00058 QLabel * l_misspelled =
00059 new QLabel(i18n("Misspelled word:"), w, "l_misspelled");
00060
00061 QLabel * l_replacement =
00062 new QLabel(i18n("Replacement:"), w, "l_replacement");
00063
00064 QLabel * l_suggestions =
00065 new QLabel(i18n("Suggestions:"), w, "l_suggestions");
00066 l_suggestions->setAlignment(Qt::AlignLeft | Qt::AlignTop );
00067
00068 KButtonBox * buttonBox = new KButtonBox(w, Vertical);
00069
00070 QPushButton * b = 0L;
00071
00072 b = buttonBox->addButton(i18n("&Replace"), this, SLOT(replace()));
00073 connect(this, SIGNAL(ready(bool)), b, SLOT(setEnabled(bool)));
00074 qpbrep = b;
00075
00076 b = buttonBox->addButton(i18n("Replace &All"), this, SLOT(replaceAll()));
00077 connect(this, SIGNAL(ready(bool)), b, SLOT(setEnabled(bool)));
00078 qpbrepa = b;
00079
00080 b = buttonBox->addButton(i18n("&Ignore"), this, SLOT(ignore()));
00081 connect(this, SIGNAL(ready(bool)), b, SLOT(setEnabled(bool)));
00082
00083 b = buttonBox->addButton(i18n("I&gnore All"), this, SLOT(ignoreAll()));
00084 connect(this, SIGNAL(ready(bool)), this, SLOT(setEnabled(bool)));
00085
00086 b = buttonBox->addButton(i18n("A&dd"), this, SLOT(add()));
00087 connect(this, SIGNAL(ready(bool)), b, SLOT(setEnabled(bool)));
00088
00089 connect(this, SIGNAL(user1Clicked()), this, SLOT(stop()));
00090
00091 buttonBox->layout();
00092
00093 QHBoxLayout * layout = 0L;
00094
00095 if (progressbar) {
00096
00097 QVBoxLayout * topLayout =
00098 new QVBoxLayout(w, KDialog::marginHint(), KDialog::spacingHint());
00099
00100 layout = new QHBoxLayout(topLayout);
00101 progbar = new KProgress (w);
00102 topLayout->addWidget(progbar);
00103
00104 } else {
00105
00106 layout =
00107 new QHBoxLayout(w, KDialog::marginHint(), KDialog::spacingHint());
00108 }
00109
00110 QGridLayout * leftGrid = new QGridLayout(layout);
00111
00112 leftGrid->addWidget(l_misspelled, 0, 0);
00113 leftGrid->addWidget(l_replacement, 1, 0);
00114 leftGrid->addWidget(l_suggestions, 2, 0);
00115 leftGrid->addWidget(wordlabel, 0, 1);
00116 leftGrid->addWidget(editbox, 1, 1);
00117 leftGrid->addWidget(listbox, 2, 1);
00118
00119 layout->addWidget(buttonBox);
00120
00121 connect(
00122 editbox,
00123 SIGNAL(textChanged(const QString &)),
00124 SLOT(textChanged(const QString &))
00125 );
00126
00127 connect(editbox, SIGNAL(returnPressed()), SLOT(replace()));
00128 connect(listbox, SIGNAL(selected(int)), SLOT(selected(int)));
00129 connect(listbox, SIGNAL(highlighted(int)), SLOT(highlighted (int)));
00130
00131 QSize bs = sizeHint();
00132 if (bs.width() < bs.height()) {
00133 resize(9 * bs.height() / 6, bs.height());
00134 }
00135
00136 setHelp("spelldlg", "kspell");
00137
00138 emit(ready(false));
00139 }
00140
00141 void
00142 KSpellDlg::init(const QString & _word, QStringList * _sugg)
00143 {
00144 sugg = _sugg;
00145 word = _word;
00146
00147 listbox->clear();
00148 listbox->insertStringList(*sugg);
00149
00150 kdDebug(750) << "KSpellDlg::init [" << word << "]" << endl;
00151
00152 emit(ready(true));
00153
00154 wordlabel->setText(_word);
00155
00156 if (sugg->count() == 0) {
00157
00158 editbox->setText(_word);
00159 qpbrep->setEnabled(false);
00160 qpbrepa->setEnabled(false);
00161
00162 } else {
00163
00164 editbox->setText((*sugg)[0]);
00165 qpbrep->setEnabled(true);
00166 qpbrepa->setEnabled(true);
00167 listbox->setCurrentItem (0);
00168 }
00169 }
00170
00171 void
00172 KSpellDlg::slotProgress (unsigned int p)
00173 {
00174 if (!progressbar)
00175 return;
00176
00177 progbar->setValue((int) p);
00178 }
00179
00180 void
00181 KSpellDlg::textChanged (const QString &)
00182 {
00183 qpbrep->setEnabled(true);
00184 qpbrepa->setEnabled(true);
00185 }
00186
00187 void
00188 KSpellDlg::selected (int i)
00189 {
00190 highlighted (i);
00191 replace();
00192 }
00193
00194 void
00195 KSpellDlg::highlighted (int i)
00196 {
00197 if (listbox->text (i)!=0)
00198 editbox->setText (listbox->text (i));
00199 }
00200
00201
00202
00203
00204
00205 void
00206 KSpellDlg::closeEvent( QCloseEvent * )
00207 {
00208 cancel();
00209 }
00210
00211 void
00212 KSpellDlg::done (int result)
00213 {
00214 emit command (result);
00215 }
00216 void
00217 KSpellDlg::ignore()
00218 {
00219 newword = word;
00220 done (KS_IGNORE);
00221 }
00222
00223 void
00224 KSpellDlg::ignoreAll()
00225 {
00226 newword = word;
00227 done (KS_IGNOREALL);
00228 }
00229
00230 void
00231 KSpellDlg::add()
00232 {
00233 newword = word;
00234 done (KS_ADD);
00235 }
00236
00237
00238 void
00239 KSpellDlg::cancel()
00240 {
00241 newword=word;
00242 done (KS_CANCEL);
00243 }
00244
00245 void
00246 KSpellDlg::replace()
00247 {
00248 newword = editbox->text();
00249 done (KS_REPLACE);
00250 }
00251
00252 void
00253 KSpellDlg::stop()
00254 {
00255 newword = word;
00256 done (KS_STOP);
00257 }
00258
00259 void
00260 KSpellDlg::replaceAll()
00261 {
00262 newword = editbox->text();
00263 done (KS_REPLACEALL);
00264 }
00265
00266 #include "kspelldlg.moc"