]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiSearch.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiSearch.cpp
index 437253fe735561bffd98e3055e34f8f9b567ae97..a8f10e7c63cf59b1169b0c5b59911e2cb495c9d8 100644 (file)
@@ -5,6 +5,7 @@
  *
  * \author John Levon
  * \author Edwin Leuven
+ * \author Angus Leeming
  *
  * Full author contact details are available in file CREDITS.
  */
 
 #include "GuiSearch.h"
 
-#include "ControlSearch.h"
 #include "qt_helpers.h"
 
-#include <QLineEdit>
-#include <QCloseEvent>
+#include "FuncRequest.h"
+#include "lyxfind.h"
 
-using std::string;
+#include <QLineEdit>
+#include <QShowEvent>
 
+using namespace std;
 
 namespace lyx {
 namespace frontend {
 
 static void uniqueInsert(QComboBox * box, QString const & text)
 {
-       for (int i = 0; i < box->count(); ++i) {
+       for (int i = box->count(); --i >= 0; )
                if (box->itemText(i) == text)
                        return;
-       }
 
-       box->addItem(text);
+       box->insertItem(0, text);
 }
 
 
-GuiSearchDialog::GuiSearchDialog(LyXView & lv)
-       : GuiDialog(lv, "findreplace"
+GuiSearch::GuiSearch(GuiView & lv)
+       : GuiDialog(lv, "findreplace", qt_("Find and Replace"))
 {
        setupUi(this);
-       setController(new ControlSearch(*this));
-       setViewTitle(_("Find and Replace"));
 
        connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
        connect(findPB, SIGNAL(clicked()), this, SLOT(findClicked()));
        connect(replacePB, SIGNAL(clicked()), this, SLOT(replaceClicked()));
        connect(replaceallPB, SIGNAL(clicked()), this, SLOT(replaceallClicked()));
-       connect(findCO, SIGNAL(editTextChanged(const QString &)),
+       connect(findCO, SIGNAL(editTextChanged(QString)),
                this, SLOT(findChanged()));
 
        setFocusProxy(findCO);
@@ -63,27 +62,15 @@ GuiSearchDialog::GuiSearchDialog(LyXView & lv)
 }
 
 
-ControlSearch & GuiSearchDialog::controller()
-{
-       return static_cast<ControlSearch &>(GuiDialog::controller());
-}
-
-
-void GuiSearchDialog::showView()
+void GuiSearch::showEvent(QShowEvent * e)
 {
-       findCO->lineEdit()->setSelection(0, findCO->lineEdit()->text().length());
-       GuiDialog::showView();
+       findPB->setFocus();
+       findCO->lineEdit()->selectAll();
+       GuiDialog::showEvent(e);
 }
 
 
-void GuiSearchDialog::closeEvent(QCloseEvent * e)
-{
-       slotClose();
-       e->accept();
-}
-
-
-void GuiSearchDialog::findChanged()
+void GuiSearch::findChanged()
 {
        if (findCO->currentText().isEmpty()) {
                findPB->setEnabled(false);
@@ -91,60 +78,67 @@ void GuiSearchDialog::findChanged()
                replaceallPB->setEnabled(false);
        } else {
                findPB->setEnabled(true);
-               replacePB->setEnabled(!controller().isBufferReadonly());
-               replaceallPB->setEnabled(!controller().isBufferReadonly());
+               replacePB->setEnabled(!isBufferReadonly());
+               replaceallPB->setEnabled(!isBufferReadonly());
        }
 }
 
 
-void GuiSearchDialog::findClicked()
+void GuiSearch::findClicked()
 {
        docstring const needle = qstring_to_ucs4(findCO->currentText());
        find(needle, caseCB->isChecked(), wordsCB->isChecked(),
-               backwardsCB->isChecked());
+               !backwardsCB->isChecked());
        uniqueInsert(findCO, findCO->currentText());
-       findCO->lineEdit()->setSelection(0, findCO->lineEdit()->text().length());
+       findCO->lineEdit()->selectAll();
 }
 
 
-void GuiSearchDialog::replaceClicked()
+void GuiSearch::replaceClicked()
 {
        docstring const needle = qstring_to_ucs4(findCO->currentText());
        docstring const repl = qstring_to_ucs4(replaceCO->currentText());
        replace(needle, repl, caseCB->isChecked(), wordsCB->isChecked(),
-               backwardsCB->isChecked(), false);
+               !backwardsCB->isChecked(), false);
        uniqueInsert(findCO, findCO->currentText());
        uniqueInsert(replaceCO, replaceCO->currentText());
 }
 
 
-void GuiSearchDialog::replaceallClicked()
+void GuiSearch::replaceallClicked()
 {
        replace(qstring_to_ucs4(findCO->currentText()),
                qstring_to_ucs4(replaceCO->currentText()),
-               caseCB->isChecked(), wordsCB->isChecked(), false, true);
+               caseCB->isChecked(), wordsCB->isChecked(), true, true);
        uniqueInsert(findCO, findCO->currentText());
        uniqueInsert(replaceCO, replaceCO->currentText());
 }
 
 
-void GuiSearchDialog::find(docstring const & str, bool casesens,
-       bool words, bool backwards)
+void GuiSearch::find(docstring const & search, bool casesensitive,
+                        bool matchword, bool forward)
 {
-       controller().find(str, casesens, words, !backwards);
+       docstring const data =
+               find2string(search, casesensitive, matchword, forward);
+       dispatch(FuncRequest(LFUN_WORD_FIND, data));
 }
 
 
-void GuiSearchDialog::replace(docstring const & findstr,
-       docstring const & replacestr,
-       bool casesens, bool words, bool backwards, bool all)
+void GuiSearch::replace(docstring const & search, docstring const & replace,
+                           bool casesensitive, bool matchword,
+                           bool forward, bool all)
 {
-       controller().replace(findstr, replacestr, casesens, words,
-                            !backwards, all);
+       docstring const data =
+               replace2string(replace, search, casesensitive,
+                                    matchword, all, forward);
+       dispatch(FuncRequest(LFUN_WORD_REPLACE, data));
 }
 
+Dialog * createGuiSearch(GuiView & lv) { return new GuiSearch(lv); }
+
+
 } // namespace frontend
 } // namespace lyx
 
 
-#include "GuiSearch_moc.cpp"
+#include "moc_GuiSearch.cpp"