]> git.lyx.org Git - features.git/commitdiff
next one
authorAndré Pönitz <poenitz@gmx.net>
Sat, 6 Oct 2007 19:59:13 +0000 (19:59 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Sat, 6 Oct 2007 19:59:13 +0000 (19:59 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20798 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/Dialogs.cpp
src/frontends/qt4/GuiThesaurus.cpp
src/frontends/qt4/GuiThesaurus.h

index c98f957fccb010d013fc93910fbb4c819c54ba34..4fde46988b0d3ad5f19552d9e8fc0a7d74fde501 100644 (file)
 #include "TocWidget.h"
 #include "GuiURL.h"
 
-#ifdef HAVE_LIBAIKSAURUS
-#include "ControlThesaurus.h"
-#include "GuiThesaurus.h"
-#endif
-
 // Uncomment this if you prefer dock widget
 //#define USE_DOCK_WIDGET
 
@@ -220,7 +215,7 @@ Dialog * Dialogs::build(string const & name)
                return createGuiTexInfo(lyxview_);
 #ifdef HAVE_LIBAIKSAURUS
        if (name == "thesaurus")
-               return new GuiThesaurusDialog(lyxview_);
+               return createGuiThesaurus(lyxview_);
 #endif
        if (name == "toc") {
 #ifdef Q_WS_MACX
index de513e6968f371189be94051cb51d417ab2bc087..9daa18aeedf8335b31efd0ef11d9e263f430c155 100644 (file)
@@ -12,7 +12,6 @@
 
 #include "GuiThesaurus.h"
 
-#include "ControlThesaurus.h"
 #include "qt_helpers.h"
 #include "debug.h"
 
 #include <QTreeWidget>
 #include <QTreeWidgetItem>
 
+#include "lyxfind.h"
+#include "FuncRequest.h"
+
 using std::string;
 
 
 namespace lyx {
 namespace frontend {
 
-GuiThesaurusDialog::GuiThesaurusDialog(LyXView & lv)
-       : GuiDialog(lv, "thesaurus")
+GuiThesaurus::GuiThesaurus(LyXView & lv)
+       : GuiDialog(lv, "thesaurus"), Controller(this)
 {
        setupUi(this);
        setViewTitle(_("Thesaurus"));
-       setController(new ControlThesaurus(*this));
+       setController(this, false);
 
        meaningsTV->setColumnCount(1);
        meaningsTV->header()->hide();
@@ -43,8 +45,8 @@ GuiThesaurusDialog::GuiThesaurusDialog(LyXView & lv)
                this, SLOT(slotClose()));
        connect(replaceED, SIGNAL(returnPressed()),
                this, SLOT(replaceClicked()));
-       connect(replaceED, SIGNAL(textChanged(const QString &)),
-               this, SLOT(change_adaptor() ) );
+       connect(replaceED, SIGNAL(textChanged(QString)),
+               this, SLOT(change_adaptor()));
        connect(entryED, SIGNAL(returnPressed()),
                this, SLOT(entryChanged()));
        connect(replacePB, SIGNAL(clicked()),
@@ -64,34 +66,29 @@ GuiThesaurusDialog::GuiThesaurusDialog(LyXView & lv)
 }
 
 
-ControlThesaurus & GuiThesaurusDialog::controller()
-{
-       return static_cast<ControlThesaurus &>(GuiDialog::controller());
-}
-
-void GuiThesaurusDialog::change_adaptor()
+void GuiThesaurus::change_adaptor()
 {
        changed();
 }
 
 
-void GuiThesaurusDialog::closeEvent(QCloseEvent * e)
+void GuiThesaurus::closeEvent(QCloseEvent * e)
 {
        slotClose();
        GuiDialog::closeEvent(e);
 }
 
 
-void GuiThesaurusDialog::entryChanged()
+void GuiThesaurus::entryChanged()
 {
        updateLists();
 }
 
 
-void GuiThesaurusDialog::selectionChanged()
+void GuiThesaurus::selectionChanged()
 {
        int const col = meaningsTV->currentColumn();
-       if (col < 0 || controller().isBufferReadonly())
+       if (col < 0 || isBufferReadonly())
                return;
 
        replaceED->setText(meaningsTV->currentItem()->text(col));
@@ -100,13 +97,13 @@ void GuiThesaurusDialog::selectionChanged()
 }
 
 
-void GuiThesaurusDialog::itemClicked(QTreeWidgetItem * /*item*/, int /*col*/)
+void GuiThesaurus::itemClicked(QTreeWidgetItem * /*item*/, int /*col*/)
 {
        selectionChanged();
 }
 
 
-void GuiThesaurusDialog::selectionClicked(QTreeWidgetItem * item, int col)
+void GuiThesaurus::selectionClicked(QTreeWidgetItem * item, int col)
 {
        entryED->setText(item->text(col));
        selectionChanged();
@@ -114,12 +111,12 @@ void GuiThesaurusDialog::selectionClicked(QTreeWidgetItem * item, int col)
 }
 
 
-void GuiThesaurusDialog::updateLists()
+void GuiThesaurus::updateLists()
 {
        meaningsTV->clear();
        meaningsTV->setUpdatesEnabled(false);
 
-       Thesaurus::Meanings meanings = controller().getMeanings(qstring_to_ucs4(entryED->text()));
+       Thesaurus::Meanings meanings = getMeanings(qstring_to_ucs4(entryED->text()));
 
        for (Thesaurus::Meanings::const_iterator cit = meanings.begin();
                cit != meanings.end(); ++cit) {
@@ -138,19 +135,60 @@ void GuiThesaurusDialog::updateLists()
 }
 
 
-void GuiThesaurusDialog::updateContents()
+void GuiThesaurus::updateContents()
 {
-       entryED->setText(toqstr(controller().text()));
+       entryED->setText(toqstr(text_));
        replaceED->setText("");
        updateLists();
 }
 
 
-void GuiThesaurusDialog::replaceClicked()
+void GuiThesaurus::replaceClicked()
+{
+       replace(qstring_to_ucs4(replaceED->text()));
+}
+
+
+bool GuiThesaurus::initialiseParams(string const & data)
+{
+       text_ = from_utf8(data);
+       return true;
+}
+
+
+void GuiThesaurus::clearParams()
 {
-       controller().replace(qstring_to_ucs4(replaceED->text()));
+       text_.erase();
 }
 
+
+void GuiThesaurus::replace(docstring const & newstr)
+{
+       /* FIXME: this is not suitable ! We need to have a "lock"
+        * on a particular charpos in a paragraph that is broken on
+        * deletion/change !
+        */
+       docstring const data =
+               replace2string(text_, newstr,
+                                    true,  // case sensitive
+                                    true,  // match word
+                                    false, // all words
+                                    true); // forward
+       dispatch(FuncRequest(LFUN_WORD_REPLACE, data));
+}
+
+
+Thesaurus::Meanings const & GuiThesaurus::getMeanings(docstring const & str)
+{
+       if (str != laststr_)
+               meanings_ = thesaurus.lookup(str);
+       return meanings_;
+}
+
+
+Dialog * createGuiThesaurus(LyXView & lv) { return new GuiThesaurus(lv); }
+
+
 } // namespace frontend
 } // namespace lyx
 
index 297e20daf28d4a1b28ea5a22f33b5c3d7a87f484..3e07f80eec78e31d097d10f4c08fdc276cca80b2 100644 (file)
@@ -13,7 +13,7 @@
 #define GUITHESAURUS_H
 
 #include "GuiDialog.h"
-#include "ControlThesaurus.h"
+#include "Thesaurus.h"
 #include "ui_ThesaurusUi.h"
 
 class QTreeWidgetItem;
@@ -21,12 +21,12 @@ class QTreeWidgetItem;
 namespace lyx {
 namespace frontend {
 
-class GuiThesaurusDialog : public GuiDialog, public Ui::ThesaurusUi
+class GuiThesaurus : public GuiDialog, public Ui::ThesaurusUi, public Controller
 {
        Q_OBJECT
 
 public:
-       GuiThesaurusDialog(LyXView & lv);
+       GuiThesaurus(LyXView & lv);
 
 private Q_SLOTS:
        void change_adaptor();
@@ -39,11 +39,38 @@ private Q_SLOTS:
 private:
        void closeEvent(QCloseEvent * e);
        /// parent controller
-       ControlThesaurus & controller();
+       Controller & controller() { return *this; }
        /// update
        void updateContents();
        ///
        void updateLists();
+       ///
+       bool initialiseParams(std::string const & data);
+       ///
+       void clearParams();
+       ///
+       void dispatchParams() {}
+       ///
+       bool isBufferDependent() const { return true; }
+
+       /// replace the particular string
+       void replace(docstring const & newstr);
+
+       /// get meanings
+       Thesaurus::Meanings const & getMeanings(docstring const & str);
+
+private:
+       /// last string looked up
+       docstring laststr_;
+
+       /// entries for last string
+       Thesaurus::Meanings meanings_;
+
+       /// original string
+       docstring text_;
+
+       /// not needed.
+       void apply() {}
 };
 
 } // namespace frontend