]> git.lyx.org Git - features.git/commitdiff
Edwins f&r GUII patch with a small fix.
authorJürgen Vigna <jug@sad.it>
Tue, 6 Mar 2001 10:20:33 +0000 (10:20 +0000)
committerJürgen Vigna <jug@sad.it>
Tue, 6 Mar 2001 10:20:33 +0000 (10:20 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1678 a592a061-630c-0410-9148-cb99ea01b6c8

26 files changed:
forms/ChangeLog
forms/form1.fd
po/POTFILES.in
src/ChangeLog
src/Makefile.am
src/form1.C
src/form1.h
src/frontends/Dialogs.h
src/frontends/xforms/ChangeLog
src/frontends/xforms/Dialogs.C
src/frontends/xforms/FormSearch.C [new file with mode: 0644]
src/frontends/xforms/FormSearch.h [new file with mode: 0644]
src/frontends/xforms/Makefile.am
src/frontends/xforms/form_search.C [new file with mode: 0644]
src/frontends/xforms/form_search.h [new file with mode: 0644]
src/frontends/xforms/forms/form_search.fd [new file with mode: 0644]
src/frontends/xforms/forms/makefile
src/lyxfind.C [new file with mode: 0644]
src/lyxfind.h [new file with mode: 0644]
src/lyxfr0.C [deleted file]
src/lyxfr0.h [deleted file]
src/lyxfr1.C [deleted file]
src/lyxfr1.h [deleted file]
src/lyxfunc.C
src/lyxtext.h
src/text2.C

index 43b57703fbd5a1fd006bf1089231ee68739fb5f8..c73dd50cfff23781a7622c61d1f871fc3abbc3ca 100644 (file)
@@ -1,3 +1,7 @@
+2001-03-05  Edwin Leuven  <leuven@fee.uva.nl>
+
+       * form1.fd: search_form deleted
+       
 2001-02-26  Lars Gullik Bjønnes  <larsbj@trylle.birdstep.com>
 
        * layout_forms.fd: delete
index 1ac333c4aa19266776b6a5e970a975879314b730..2e552f912a2c15f08b541294e137fbcc63976dad 100644 (file)
@@ -3,7 +3,7 @@ Magic: 13000
 Internal Form Definition File
     (do not change)
 
-Number of forms: 4
+Number of forms: 3
 Unit of measure: FL_COORD_PIXEL
 
 =============== FORM ===============
@@ -249,7 +249,7 @@ argument:
 --------------------
 class: FL_BEGIN_GROUP
 type: 0
-box: 0 10 10 0
+box: 0 0 0
 boxtype: FL_NO_BOX
 colors: FL_COL1 FL_MCOL
 alignment: FL_ALIGN_CENTER
@@ -687,7 +687,7 @@ argument: 2
 --------------------
 class: FL_BEGIN_GROUP
 type: 0
-box: 0 10 10 0
+box: 0 0 0
 boxtype: FL_NO_BOX
 colors: FL_COL1 FL_MCOL
 alignment: FL_ALIGN_CENTER
@@ -867,7 +867,7 @@ argument:
 --------------------
 class: FL_BEGIN_GROUP
 type: 0
-box: 0 10 10 0
+box: 0 0 0
 boxtype: FL_NO_BOX
 colors: FL_COL1 FL_MCOL
 alignment: FL_ALIGN_CENTER
@@ -975,7 +975,7 @@ argument:
 --------------------
 class: FL_BEGIN_GROUP
 type: 0
-box: 0 10 10 0
+box: 0 0 0
 boxtype: FL_NO_BOX
 colors: FL_COL1 FL_MCOL
 alignment: FL_ALIGN_CENTER
@@ -1392,209 +1392,5 @@ name: timer
 callback: 
 argument: 
 
-=============== FORM ===============
-Name: form_search
-Width: 440
-Height: 160
-Number of Objects: 11
-
---------------------
-class: FL_BOX
-type: UP_BOX
-box: 0 0 440 160
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label: 
-shortcut: 
-resize: FL_RESIZE_ALL
-gravity: FL_NoGravity FL_NoGravity
-name: 
-callback: 
-argument: 
-
---------------------
-class: FL_FRAME
-type: ENGRAVED_FRAME
-box: 300 10 130 80
-boxtype: FL_NO_BOX
-colors: FL_BLACK FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label: 
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_NorthEast FL_NorthEast
-name: 
-callback: 
-argument: 
-
---------------------
-class: FL_INPUT
-type: NORMAL_INPUT
-box: 110 10 180 30
-boxtype: FL_DOWN_BOX
-colors: FL_COL1 FL_MCOL
-alignment: FL_ALIGN_LEFT
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Find|#n
-shortcut: 
-resize: FL_RESIZE_X
-gravity: FL_NorthWest FL_NorthEast
-name: input_search
-callback: 
-argument: 
-
---------------------
-class: FL_INPUT
-type: NORMAL_INPUT
-box: 110 40 180 30
-boxtype: FL_DOWN_BOX
-colors: FL_COL1 FL_MCOL
-alignment: FL_ALIGN_LEFT
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Replace with|#W
-shortcut: 
-resize: FL_RESIZE_X
-gravity: FL_NorthWest FL_NorthEast
-name: input_replace
-callback: 
-argument: 
-
---------------------
-class: FL_BUTTON
-type: NORMAL_BUTTON
-box: 200 80 90 30
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: @>|#F^s
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name: 
-callback: SearchForwardCB
-argument: 0
-
---------------------
-class: FL_BUTTON
-type: NORMAL_BUTTON
-box: 110 80 90 30
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: @<|#B^r
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name: 
-callback: SearchBackwardCB
-argument: 0
-
---------------------
-class: FL_BUTTON
-type: NORMAL_BUTTON
-box: 110 120 90 30
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Replace|#R#r
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name: replace_button
-callback: SearchReplaceCB
-argument: 0
-
---------------------
-class: FL_BUTTON
-type: NORMAL_BUTTON
-box: 350 120 80 30
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Close|^[
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name: 
-callback: SearchCancelCB
-argument: 0
-
---------------------
-class: FL_CHECKBUTTON
-type: PUSH_BUTTON
-box: 300 20 150 30
-boxtype: FL_NO_BOX
-colors: FL_COL1 FL_YELLOW
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label: Case sensitive|#s#S
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_NorthEast FL_NorthEast
-name: btnCaseSensitive
-callback: 
-argument: 0
-
---------------------
-class: FL_CHECKBUTTON
-type: PUSH_BUTTON
-box: 300 50 150 30
-boxtype: FL_NO_BOX
-colors: FL_COL1 FL_YELLOW
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label: Match word|#M#m
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_NorthEast FL_NorthEast
-name: btnMatchWord
-callback: 
-argument: 0
-
---------------------
-class: FL_BUTTON
-type: NORMAL_BUTTON
-box: 200 120 90 30
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Replace All|#A#a
-shortcut: 
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name: replaceall_button
-callback: SearchReplaceAllCB
-argument: 0
-
 ==============================
 --------------------
index adbe2e8da4f63adb451f40217ee01da0c351a1c0..daf35bfa7f4eb435700d88d3196520c624f6fecf 100644 (file)
@@ -64,6 +64,7 @@ src/frontends/kde/refdlg.C
 src/frontends/kde/tabcreatedlg.C
 src/frontends/kde/tocdlg.C
 src/frontends/kde/urldlg.C
+src/frontends/qt2/FormCharacter.C
 src/frontends/qt2/FormCopyright.C
 src/frontends/qt2/FormParagraph.C
 src/frontends/qt2/FormPrint.C
@@ -71,52 +72,54 @@ src/frontends/qt2/FormTabularCreate.C
 src/frontends/qt2/paragraphdlgimpl.C
 src/frontends/qt2/tabularcreatedlgimpl.C
 src/frontends/xforms/FormBase.h
-src/frontends/xforms/FormBibitem.C
 src/frontends/xforms/form_bibitem.C
-src/frontends/xforms/FormBibtex.C
+src/frontends/xforms/FormBibitem.C
 src/frontends/xforms/form_bibtex.C
+src/frontends/xforms/FormBibtex.C
 src/frontends/xforms/form_browser.C
-src/frontends/xforms/FormCharacter.C
 src/frontends/xforms/form_character.C
-src/frontends/xforms/FormCitation.C
+src/frontends/xforms/FormCharacter.C
 src/frontends/xforms/form_citation.C
-src/frontends/xforms/FormCopyright.C
+src/frontends/xforms/FormCitation.C
 src/frontends/xforms/form_copyright.C
-src/frontends/xforms/FormDocument.C
+src/frontends/xforms/FormCopyright.C
 src/frontends/xforms/form_document.C
-src/frontends/xforms/FormError.C
+src/frontends/xforms/FormDocument.C
 src/frontends/xforms/form_error.C
-src/frontends/xforms/FormGraphics.C
+src/frontends/xforms/FormError.C
 src/frontends/xforms/form_graphics.C
-src/frontends/xforms/FormInclude.C
+src/frontends/xforms/FormGraphics.C
 src/frontends/xforms/form_include.C
-src/frontends/xforms/FormIndex.C
+src/frontends/xforms/FormInclude.C
 src/frontends/xforms/form_index.C
+src/frontends/xforms/FormIndex.C
 src/frontends/xforms/FormInset.h
 src/frontends/xforms/FormLog.C
-src/frontends/xforms/FormParagraph.C
 src/frontends/xforms/form_paragraph.C
-src/frontends/xforms/FormPreamble.C
+src/frontends/xforms/FormParagraph.C
 src/frontends/xforms/form_preamble.C
-src/frontends/xforms/FormPreferences.C
+src/frontends/xforms/FormPreamble.C
 src/frontends/xforms/form_preferences.C
-src/frontends/xforms/FormPrint.C
+src/frontends/xforms/FormPreferences.C
 src/frontends/xforms/form_print.C
-src/frontends/xforms/FormRef.C
+src/frontends/xforms/FormPrint.C
 src/frontends/xforms/form_ref.C
+src/frontends/xforms/FormRef.C
+src/frontends/xforms/form_search.C
+src/frontends/xforms/FormSearch.C
 src/frontends/xforms/FormSplash.C
-src/frontends/xforms/FormTabular.C
 src/frontends/xforms/form_tabular.C
-src/frontends/xforms/FormTabularCreate.C
+src/frontends/xforms/FormTabular.C
 src/frontends/xforms/form_tabular_create.C
-src/frontends/xforms/FormToc.C
+src/frontends/xforms/FormTabularCreate.C
 src/frontends/xforms/form_toc.C
-src/frontends/xforms/FormUrl.C
+src/frontends/xforms/FormToc.C
 src/frontends/xforms/form_url.C
+src/frontends/xforms/FormUrl.C
 src/frontends/xforms/FormVCLog.C
 src/frontends/xforms/input_validators.C
 src/frontends/xforms/Menubar_pimpl.C
-src/frontends/xforms/xform_helpers.C
+src/frontends/xforms/xforms_helpers.C
 src/gettext.h
 src/importer.C
 src/insets/figinset.C
@@ -151,6 +154,7 @@ src/LColor.C
 src/LyXAction.C
 src/lyx.C
 src/lyx_cb.C
+src/lyxfind.C
 src/lyxfont.C
 src/lyxfr0.C
 src/lyxfr1.C
index eb20f0c3171f88ffc8c732730fa8ada9cca38b27..0116dc70b08a06b03c9fe19a9a9d76460969dcd4 100644 (file)
@@ -1,3 +1,11 @@
+2001-03-06  Juergen Vigna  <jug@sad.it>
+
+       * lyxfind.C (IsStringInText): put parentes around expressions.
+
+2001-03-05  Edwin Leuven  <leuven@fee.uva.nl>
+
+       * lyxfind.[Ch]: find stuff moved out of text2.C/lyxtext.h
+       
 2001-02-23  John Levon  <moz@compsoc.man.ac.uk>
 
        * lyx_main.C: add ISO_Left_Tab as bind synonym for Tab
index 360de916e67179fbaaeb524f3c5c6c1fd2de9a16..72c92a32a650801b06f41401b216bae9055f5087 100644 (file)
@@ -151,10 +151,8 @@ lyx_SOURCES = \
        lyxcursor.h \
        lyxfont.C \
        lyxfont.h \
-       lyxfr0.C \
-       lyxfr0.h \
-       lyxfr1.C \
-       lyxfr1.h \
+       lyxfind.C \
+       lyxfind.h \
        lyxfunc.C \
        lyxfunc.h \
        lyxlex.C \
index 7c1e5b239fd0ac8e37210b6bb5e1cb4a10327e4b..e05c8885755be89fc6efb9bb83bbe9291edc545f 100644 (file)
@@ -274,52 +274,3 @@ FD_FileDlg *create_form_FileDlg(void)
 }
 /*---------------------------------------*/
 
-FD_form_search *create_form_form_search(void)
-{
-  FL_OBJECT *obj;
-  FD_form_search *fdui = (FD_form_search *) fl_calloc(1, sizeof(FD_form_search));
-
-  fdui->form_search = fl_bgn_form(FL_NO_BOX, 440, 160);
-  obj = fl_add_box(FL_UP_BOX, 0, 0, 440, 160, "");
-  obj = fl_add_frame(FL_ENGRAVED_FRAME, 300, 10, 130, 80, "");
-    fl_set_object_gravity(obj, FL_NorthEast, FL_NorthEast);
-  fdui->input_search = obj = fl_add_input(FL_NORMAL_INPUT, 110, 10, 180, 30, idex(_("Find|#n")));fl_set_button_shortcut(obj, scex(_("Find|#n")), 1);
-    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
-    fl_set_object_gravity(obj, FL_NorthWest, FL_NorthEast);
-    fl_set_object_resize(obj, FL_RESIZE_X);
-  fdui->input_replace = obj = fl_add_input(FL_NORMAL_INPUT, 110, 40, 180, 30, idex(_("Replace with|#W")));fl_set_button_shortcut(obj, scex(_("Replace with|#W")), 1);
-    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
-    fl_set_object_gravity(obj, FL_NorthWest, FL_NorthEast);
-    fl_set_object_resize(obj, FL_RESIZE_X);
-  obj = fl_add_button(FL_NORMAL_BUTTON, 200, 80, 90, 30, idex(_("@>|#F^s")));fl_set_button_shortcut(obj, scex(_("@>|#F^s")), 1);
-    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
-    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
-    fl_set_object_callback(obj, SearchForwardCB, 0);
-  obj = fl_add_button(FL_NORMAL_BUTTON, 110, 80, 90, 30, idex(_("@<|#B^r")));fl_set_button_shortcut(obj, scex(_("@<|#B^r")), 1);
-    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
-    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
-    fl_set_object_callback(obj, SearchBackwardCB, 0);
-  fdui->replace_button = obj = fl_add_button(FL_NORMAL_BUTTON, 110, 120, 90, 30, idex(_("Replace|#R#r")));fl_set_button_shortcut(obj, scex(_("Replace|#R#r")), 1);
-    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
-    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
-    fl_set_object_callback(obj, SearchReplaceCB, 0);
-  obj = fl_add_button(FL_NORMAL_BUTTON, 350, 120, 80, 30, idex(_("Close|^[")));fl_set_button_shortcut(obj, scex(_("Close|^[")), 1);
-    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
-    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
-    fl_set_object_callback(obj, SearchCancelCB, 0);
-  fdui->btnCaseSensitive = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 300, 20, 150, 30, idex(_("Case sensitive|#s#S")));fl_set_button_shortcut(obj, scex(_("Case sensitive|#s#S")), 1);
-    fl_set_object_gravity(obj, FL_NorthEast, FL_NorthEast);
-  fdui->btnMatchWord = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 300, 50, 150, 30, idex(_("Match word|#M#m")));fl_set_button_shortcut(obj, scex(_("Match word|#M#m")), 1);
-    fl_set_object_gravity(obj, FL_NorthEast, FL_NorthEast);
-  fdui->replaceall_button = obj = fl_add_button(FL_NORMAL_BUTTON, 200, 120, 90, 30, idex(_("Replace All|#A#a")));fl_set_button_shortcut(obj, scex(_("Replace All|#A#a")), 1);
-    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
-    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
-    fl_set_object_callback(obj, SearchReplaceAllCB, 0);
-  fl_end_form();
-
-  fdui->form_search->fdui = fdui;
-
-  return fdui;
-}
-/*---------------------------------------*/
-
index d26101da3335fcf8d507d79d4fd522c88ffaa9a8..ed1ecd820c32558b826cc2906cf73c396681640c 100644 (file)
@@ -8,13 +8,6 @@
 extern "C" void GraphicsCB(FL_OBJECT *, long);
 
 
-extern "C" void SearchForwardCB(FL_OBJECT *, long);
-extern "C" void SearchBackwardCB(FL_OBJECT *, long);
-extern "C" void SearchReplaceCB(FL_OBJECT *, long);
-extern "C" void SearchCancelCB(FL_OBJECT *, long);
-extern "C" void SearchReplaceAllCB(FL_OBJECT *, long);
-
-
 /**** Forms and Objects ****/
 typedef struct {
        FL_FORM *KeyMap;
@@ -107,6 +100,4 @@ typedef struct {
        FL_OBJECT *replaceall_button;
 } FD_form_search;
 
-extern FD_form_search * create_form_form_search(void);
-
 #endif /* FD_KeyMap_h_ */
index a8cd0320367ab6b37256e991adf538b6e7007fb1..472e959c8bcc5ce938e4dfad22d17d66f6957bf5 100644 (file)
@@ -134,6 +134,8 @@ public:
        Signal1<void, InsetCommand *> showRef;
        ///
        Signal1<void, string const &> createRef;
+       ///
+       Signal0<void> showSearch;
        /// pop up the splash
        Signal0<void> showSplash;
        /// hide the splash immediately
index 97d04907f8e646ace1d9c6f7e59124d40452d53f..97a52b3a50781d5d17fbc67220bc938bd414e922 100644 (file)
@@ -1,3 +1,10 @@
+2001-03-05  Edwin Leuven  <leuven@fee.uva.nl>
+
+       * added find/replace dialog:
+       * FormSearch.*: added
+       * form_search.*: added
+       * forms/form_search.fd: added
+
 2001-03-05  Angus Leeming  <a.leeming@ic.ac.uk>
 
        * xform_helpers.[Ch]: renamed as xforms_helpers.[Ch].
index e078af96a9e9378dadc025c0346c3a8b98e5655e..7884a781cfe821afd92893931792fa47225b4f86 100644 (file)
@@ -28,6 +28,7 @@
 #include "FormPreferences.h"
 #include "FormPrint.h"
 #include "FormRef.h"
+#include "FormSearch.h"
 #include "FormSplash.h"
 #include "FormTabular.h"
 #include "FormTabularCreate.h"
@@ -68,6 +69,7 @@ Dialogs::Dialogs(LyXView * lv)
        dialogs_.push_back(new FormPreferences(lv, this));
        dialogs_.push_back(new FormPrint(lv, this));
        dialogs_.push_back(new FormRef(lv, this));
+       dialogs_.push_back(new FormSearch(lv, this));
        dialogs_.push_back(new FormSplash(lv, this));
        dialogs_.push_back(new FormTabular(lv, this));
        dialogs_.push_back(new FormTabularCreate(lv, this));
diff --git a/src/frontends/xforms/FormSearch.C b/src/frontends/xforms/FormSearch.C
new file mode 100644 (file)
index 0000000..03a113b
--- /dev/null
@@ -0,0 +1,127 @@
+/**
+ * \file FormSearch.C
+ * Copyright 2001 The LyX Team.
+ * See the file COPYING.
+ *
+ * \author Edwin Leuven
+ */
+
+#include <config.h>
+
+#include "FormSearch.h"
+#include "form_search.h"
+#include "gettext.h"
+#include "Dialogs.h"
+#include "Liason.h"
+#include "LyXView.h"
+#include "buffer.h"
+#include "gettext.h"
+#include "lyxfind.h"
+#include "debug.h"
+
+#ifdef CXX_WORKING_NAMESPACES
+using Liason::setMinibuffer;
+#endif
+
+
+FormSearch::FormSearch(LyXView * lv, Dialogs * d)
+       : FormBaseBD(lv, d, _("LyX: Find and Replace"), new NoRepeatedApplyReadOnlyPolicy),
+       dialog_(0)
+{
+    // let the popup be shown
+    // This is a permanent connection so we won't bother
+    // storing a copy because we won't be disconnecting.
+    d->showSearch.connect(slot(this, &FormSearch::show));
+   // perhaps in the future we'd like a
+   // "search again" button/keybinding
+//    d->searchAgain.connect(slot(this, &FormSearch::FindNext));
+}
+
+
+FormSearch::~FormSearch()
+{
+   delete dialog_;
+}
+
+
+FL_FORM * FormSearch::form() const
+{
+    if (dialog_) 
+     return dialog_->form;
+    return 0;
+}
+
+void FormSearch::build()
+{
+   dialog_ = build_search();
+   // Workaround dumb xforms sizing bug
+   minw_ = form()->w;
+   minh_ = form()->h;
+       
+   // Manage the ok, apply and cancel/close buttons
+   bc_.setCancel(dialog_->button_cancel);
+   bc_.addReadOnly(dialog_->input_replace);
+   bc_.addReadOnly(dialog_->replace);
+   bc_.addReadOnly(dialog_->replaceall);
+   bc_.refresh();
+}
+
+void FormSearch::update()
+{
+   if (!dialog_)
+     return;
+
+   bc_.readOnly(lv_->buffer()->isReadonly());
+}
+
+bool FormSearch::input(FL_OBJECT * obj, long)
+{
+   if (obj == dialog_->findnext)
+     Find();
+   else if (obj == dialog_->findprev)
+     Find(false);
+   else if (obj == dialog_->replace)
+     Replace();
+   else if (obj == dialog_->replaceall)
+     Replace(true);
+   
+   return 0;
+}
+
+void FormSearch::Find(bool const next = true)
+{
+   bool found = LyXFind(lv_->view(),
+                       fl_get_input(dialog_->input_search),
+                       fl_get_button(dialog_->casesensitive),
+                       fl_get_button(dialog_->matchword),
+                       next);
+   
+   if (!found)
+     setMinibuffer(lv_, _("String not found!"));
+ };
+
+
+void FormSearch::Replace(bool const all = false)
+{
+   int replace_count = LyXReplace(lv_->view(),
+                                 fl_get_input(dialog_->input_search),
+                                 fl_get_input(dialog_->input_replace),
+                                 fl_get_button(dialog_->casesensitive),
+                                 fl_get_button(dialog_->matchword), 
+                                 true, 
+                                 all);
+                                 
+   if (replace_count == 0) {
+      setMinibuffer(lv_, _("String not found!"));
+   } else {
+      if (replace_count == 1) {
+        setMinibuffer(lv_, _("String has been replaced."));
+      } else {
+        string str = tostr(replace_count);
+        str += _(" strings have been replaced.");
+        setMinibuffer(lv_, str.c_str());
+      }
+   }
+};
+
+
diff --git a/src/frontends/xforms/FormSearch.h b/src/frontends/xforms/FormSearch.h
new file mode 100644 (file)
index 0000000..66ad7ac
--- /dev/null
@@ -0,0 +1,58 @@
+/**
+ * \file FormSearch.h
+ * Copyright 2001 The LyX Team.
+ * See the file COPYING.
+ *
+ * \author Edwin Leuven
+ */
+
+#ifndef FORMSEARCH_H
+#define FORMSEARCH_H
+
+#include "FormBase.h"
+
+struct FD_form_search;
+class LyXView;
+class Dialogs;
+
+/** This class provides an XForms implementation of the FormSearch Dialog.
+ */
+class FormSearch : public FormBaseBD {
+public:
+   ///
+   FormSearch(LyXView *, Dialogs *);
+   ///
+   ~FormSearch();
+   
+private:
+   /** Redraw the form (on receipt of a Signal indicating, for example,
+    *  that the xform colours have been re-mapped). 
+    */
+
+   /// Filter the inputs
+   virtual bool input(FL_OBJECT *, long);
+   
+   /// Build the popup
+   virtual void build();
+
+   /// Update the popup
+   virtual void update();
+
+   /// Searches occurance of string
+   /// if argument=true forward search otherwise backward search
+   void Find(bool const = true);
+   /// if argument=false replace once otherwise replace all
+   /// Replaces occurance of string
+   void Replace(bool const = false);
+   
+   ///
+   virtual FL_FORM * form() const;
+   
+   /// Typedefinitions from the fdesign produced Header file
+   FD_form_search  * build_search();
+   
+   /// Real GUI implementation.
+   FD_form_search  * dialog_;
+};
+
+#endif
index 60f689b7b479651eba176af2f3efbd38a35c9969..a4489c52595105a98e27a412bb998e4afe2706bb 100644 (file)
@@ -88,6 +88,10 @@ libxforms_la_SOURCES = \
        FormRef.h \
        form_ref.C \
        form_ref.h \
+       FormSearch.C \
+       FormSearch.h \
+       form_search.C \
+       form_search.h \
        FormSplash.C \
        FormSplash.h \
        form_splash.C \
diff --git a/src/frontends/xforms/form_search.C b/src/frontends/xforms/form_search.C
new file mode 100644 (file)
index 0000000..00bd8ba
--- /dev/null
@@ -0,0 +1,109 @@
+// File modified by fdfix.sh for use by lyx (with xforms >= 0.88) and gettext
+#include <config.h>
+#include "lyx_gui_misc.h"
+#include "gettext.h"
+
+/* Form definition file generated with fdesign. */
+
+#include FORMS_H_LOCATION
+#include <stdlib.h>
+#include "form_search.h"
+#include "FormSearch.h"
+
+FD_form_search::~FD_form_search()
+{
+  if ( form->visible ) fl_hide_form( form );
+  fl_free_form( form );
+}
+
+
+FD_form_search * FormSearch::build_search()
+{
+  FL_OBJECT *obj;
+  FD_form_search *fdui = new FD_form_search;
+
+  fdui->form = fl_bgn_form(FL_NO_BOX, 440, 160);
+  fdui->form->u_vdata = this;
+  obj = fl_add_box(FL_UP_BOX, 0, 0, 440, 160, "");
+  obj = fl_add_frame(FL_ENGRAVED_FRAME, 300, 10, 130, 80, "");
+    fl_set_object_gravity(obj, FL_NorthEast, FL_NorthEast);
+  {
+    char const * const dummy = N_("Find|#n");
+    fdui->input_search = obj = fl_add_input(FL_NORMAL_INPUT, 110, 10, 180, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+    fl_set_object_gravity(obj, FL_NorthWest, FL_NorthEast);
+    fl_set_object_resize(obj, FL_RESIZE_X);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  {
+    char const * const dummy = N_("Replace with|#W");
+    fdui->input_replace = obj = fl_add_input(FL_NORMAL_INPUT, 110, 40, 180, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+    fl_set_object_gravity(obj, FL_NorthWest, FL_NorthEast);
+    fl_set_object_resize(obj, FL_RESIZE_X);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  {
+    char const * const dummy = N_(" >|#F^s");
+    fdui->findnext = obj = fl_add_button(FL_NORMAL_BUTTON, 200, 80, 90, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  {
+    char const * const dummy = N_(" <|#B^r");
+    fdui->findprev = obj = fl_add_button(FL_NORMAL_BUTTON, 110, 80, 90, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  {
+    char const * const dummy = N_("Replace|#R#r");
+    fdui->replace = obj = fl_add_button(FL_NORMAL_BUTTON, 110, 120, 90, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  {
+    char const * const dummy = N_("Close|^[");
+    fdui->button_cancel = obj = fl_add_button(FL_NORMAL_BUTTON, 350, 120, 80, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
+    fl_set_object_callback(obj, C_FormBaseCancelCB, 0);
+  {
+    char const * const dummy = N_("Case sensitive|#s#S");
+    fdui->casesensitive = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 300, 20, 150, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_gravity(obj, FL_NorthEast, FL_NorthEast);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  {
+    char const * const dummy = N_("Match word|#M#m");
+    fdui->matchword = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 300, 50, 150, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_gravity(obj, FL_NorthEast, FL_NorthEast);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  {
+    char const * const dummy = N_("Replace All|#A#a");
+    fdui->replaceall = obj = fl_add_button(FL_NORMAL_BUTTON, 200, 120, 90, 30, idex(_(dummy)));
+    fl_set_button_shortcut(obj, scex(_(dummy)), 1);
+  }
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
+    fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+  fl_end_form();
+
+  fdui->form->fdui = fdui;
+
+  return fdui;
+}
+/*---------------------------------------*/
+
diff --git a/src/frontends/xforms/form_search.h b/src/frontends/xforms/form_search.h
new file mode 100644 (file)
index 0000000..4147005
--- /dev/null
@@ -0,0 +1,28 @@
+// File modified by fdfix.sh for use by lyx (with xforms >= 0.88) and gettext
+/** Header file generated with fdesign **/
+
+#ifndef FD_form_search_h_
+#define FD_form_search_h_
+
+/** Callbacks, globals and object handlers **/
+extern  "C" void C_FormBaseInputCB(FL_OBJECT *, long);
+extern  "C" void C_FormBaseCancelCB(FL_OBJECT *, long);
+
+
+/**** Forms and Objects ****/
+struct FD_form_search {
+       ~FD_form_search();
+
+       FL_FORM *form;
+       FL_OBJECT *input_search;
+       FL_OBJECT *input_replace;
+       FL_OBJECT *findnext;
+       FL_OBJECT *findprev;
+       FL_OBJECT *replace;
+       FL_OBJECT *button_cancel;
+       FL_OBJECT *casesensitive;
+       FL_OBJECT *matchword;
+       FL_OBJECT *replaceall;
+};
+
+#endif /* FD_form_search_h_ */
diff --git a/src/frontends/xforms/forms/form_search.fd b/src/frontends/xforms/forms/form_search.fd
new file mode 100644 (file)
index 0000000..bd9196c
--- /dev/null
@@ -0,0 +1,214 @@
+Magic: 13000
+
+Internal Form Definition File
+    (do not change)
+
+Number of forms: 1
+Unit of measure: FL_COORD_PIXEL
+
+=============== FORM ===============
+Name: form_search
+Width: 440
+Height: 160
+Number of Objects: 11
+
+--------------------
+class: FL_BOX
+type: UP_BOX
+box: 0 0 440 160
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label: 
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: 
+callback: 
+argument: 
+
+--------------------
+class: FL_FRAME
+type: ENGRAVED_FRAME
+box: 300 10 130 80
+boxtype: FL_NO_BOX
+colors: FL_BLACK FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label: 
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_NorthEast FL_NorthEast
+name: 
+callback: 
+argument: 
+
+--------------------
+class: FL_INPUT
+type: NORMAL_INPUT
+box: 110 10 180 30
+boxtype: FL_DOWN_BOX
+colors: FL_COL1 FL_MCOL
+alignment: FL_ALIGN_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Find|#n
+shortcut: 
+resize: FL_RESIZE_X
+gravity: FL_NorthWest FL_NorthEast
+name: input_search
+callback: C_FormBaseInputCB
+argument: 0
+
+--------------------
+class: FL_INPUT
+type: NORMAL_INPUT
+box: 110 40 180 30
+boxtype: FL_DOWN_BOX
+colors: FL_COL1 FL_MCOL
+alignment: FL_ALIGN_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Replace with|#W
+shortcut: 
+resize: FL_RESIZE_X
+gravity: FL_NorthWest FL_NorthEast
+name: input_replace
+callback: C_FormBaseInputCB
+argument: 0
+
+--------------------
+class: FL_BUTTON
+type: NORMAL_BUTTON
+box: 200 80 90 30
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label:  >|#F^s
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name: findnext
+callback: C_FormBaseInputCB
+argument: 0
+
+--------------------
+class: FL_BUTTON
+type: NORMAL_BUTTON
+box: 110 80 90 30
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label:  <|#B^r
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name: findprev
+callback: C_FormBaseInputCB
+argument: 0
+
+--------------------
+class: FL_BUTTON
+type: NORMAL_BUTTON
+box: 110 120 90 30
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Replace|#R#r
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name: replace
+callback: C_FormBaseInputCB
+argument: 0
+
+--------------------
+class: FL_BUTTON
+type: NORMAL_BUTTON
+box: 350 120 80 30
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Close|^[
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name: button_cancel
+callback: C_FormBaseCancelCB
+argument: 0
+
+--------------------
+class: FL_CHECKBUTTON
+type: PUSH_BUTTON
+box: 300 20 150 30
+boxtype: FL_NO_BOX
+colors: FL_COL1 FL_YELLOW
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label: Case sensitive|#s#S
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_NorthEast FL_NorthEast
+name: casesensitive
+callback: C_FormBaseInputCB
+argument: 0
+
+--------------------
+class: FL_CHECKBUTTON
+type: PUSH_BUTTON
+box: 300 50 150 30
+boxtype: FL_NO_BOX
+colors: FL_COL1 FL_YELLOW
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label: Match word|#M#m
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_NorthEast FL_NorthEast
+name: matchword
+callback: C_FormBaseInputCB
+argument: 0
+
+--------------------
+class: FL_BUTTON
+type: NORMAL_BUTTON
+box: 200 120 90 30
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Replace All|#A#a
+shortcut: 
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name: replaceall
+callback: C_FormBaseInputCB
+argument: 0
+
+==============================
+--------------------
index 9f324fb4d999191e492ed502b65ff09cbbdfd3e2..2d0782e3a7ee49dff919440574d610af2de02dc1 100644 (file)
@@ -33,6 +33,7 @@ SRCS := form_bibitem.fd \
        form_preferences.fd \
        form_print.fd \
        form_ref.fd \
+       form_search.fd \
        form_splash.fd \
        form_tabular.fd \
        form_tabular_create.fd \
diff --git a/src/lyxfind.C b/src/lyxfind.C
new file mode 100644 (file)
index 0000000..ae521a6
--- /dev/null
@@ -0,0 +1,195 @@
+#include <config.h>
+
+#ifdef __GNUG__
+#pragma implementation
+#endif
+
+#include "lyxtext.h"
+#include "lyxfind.h"
+#include "LyXView.h"
+#include "minibuffer.h"
+#include "lyx_gui_misc.h"
+#include "support/textutils.h"
+#include "support/lstrings.h"
+#include "BufferView.h"
+#include "buffer.h"
+
+int LyXReplace(BufferView * bv,
+               string const & searchstr,
+               string const & replacestr,
+               bool const & casesens,
+               bool const & matchwrd,
+               bool const & forward,
+               bool const & replaceall=false)
+{
+   int replace_count = 0;
+   if (!bv->available() || bv->buffer()->isReadonly()) 
+     return replace_count;
+   
+   // CutSelection cannot cut a single space, so we have to stop
+   // in order to avoid endless loop :-(
+   if (searchstr.length() == 0
+       || (searchstr.length() == 1 && searchstr[0] == ' ')) {
+      WriteAlert(_("Sorry!"), _("You cannot replace a single space, "
+                               "nor an empty character."));
+      return replace_count;
+   }
+   // now we can start searching for the first 
+   // start at top if replaceall
+   bool fw = forward;
+   if (replaceall) {
+      bv->text->ClearSelection(bv);
+      bv->text->CursorTop(bv);
+      // override search direction because we search top to bottom
+      fw = true;
+   }
+
+   // if nothing selected or selection does not equal search string
+   // search and select next occurance and return if no replaceall
+   if (searchstr!=bv->text->selectionAsString(bv->buffer())) {
+      LyXFind(bv, searchstr, casesens, matchwrd, fw);
+      if (!replaceall)
+       return replace_count;
+   }
+   
+   bool found;
+   do {
+      bv->hideCursor();
+      bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
+      bv->toggleSelection(false);
+      bv->text->ReplaceSelectionWithString(bv, replacestr);
+      bv->text->SetSelectionOverString(bv, replacestr);
+      bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+      ++replace_count;
+      found = LyXFind(bv, searchstr, casesens, matchwrd, fw);
+   } while (replaceall && found);
+   
+   if (bv->focus())
+     bv->showCursor();
+
+   return replace_count;
+}
+
+bool LyXFind(BufferView * bv,
+            string const & searchstr,
+            bool const & casesens,
+            bool const & matchwrd,
+            bool const & forward)
+{
+   bool found = false;
+   
+   if (!bv->available() || searchstr.empty())
+     return found;
+
+   bv->hideCursor();
+   bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
+   
+   LyXText * ltCur = bv->text;
+   if (ltCur->selection)
+     ltCur->cursor = forward ? ltCur->sel_end_cursor
+     : ltCur->sel_start_cursor;
+
+   if (forward 
+       ? SearchForward(bv, searchstr, casesens, matchwrd)
+       : SearchBackward(bv, searchstr, casesens, matchwrd)) {
+      bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
+      bv->toggleSelection();
+      bv->text->ClearSelection(bv);
+      bv->text->SetSelectionOverString(bv, searchstr);
+      bv->toggleSelection(false);
+      found = true;
+   };
+   
+   if (bv->focus())
+     bv->showCursor();
+   
+   return found;
+}
+
+
+// returns true if the specified string is at the specified position
+bool IsStringInText(LyXParagraph * par, LyXParagraph::size_type pos,
+                   string const & str, bool const & cs = true,
+                   bool const & mw = false)
+{
+       if (!par)
+               return false;
+   
+       string::size_type size = str.length();
+       LyXParagraph::size_type i = 0;
+       while (((pos + i) < par->Last())
+              && (string::size_type(i) < size)
+              && (cs ? (str[i] == par->GetChar(pos + i))
+                  : (toupper(str[i]) == toupper(par->GetChar(pos + i)))))
+       {
+               ++i;
+       }
+       if (size == string::size_type(i)) {
+         // if necessary, check whether string matches word
+         if (!mw || 
+             (mw && ((pos <= 0 || !IsLetterCharOrDigit(par->GetChar(pos - 1)))
+                     && (pos + size >= par->Last()
+                         || !IsLetterCharOrDigit(par->GetChar(pos + size))))
+              )
+             )
+           return true;
+       }
+       return false;
+}
+
+// forward search:
+// if the string can be found: return true and set the cursor to
+// the new position, cs = casesensitive, mw = matchword
+bool SearchForward(BufferView * bv, string const & str,
+                  bool const & cs = true, bool const & mw = false)
+{
+       LyXParagraph * par = bv->text->cursor.par();
+       LyXParagraph::size_type pos = bv->text->cursor.pos();
+   
+       while (par && !IsStringInText(par, pos, str, cs, mw)) {
+               if (pos < par->Last() - 1)
+                       ++pos;
+               else {
+                       pos = 0;
+                       par = par->Next();
+               }
+       }
+       if (par) {
+               bv->text->SetCursor(bv, par, pos);
+               return true;
+       }
+       else
+               return false;
+}
+
+
+// backward search:
+// if the string can be found: return true and set the cursor to
+// the new position, cs = casesensitive, mw = matchword
+bool SearchBackward(BufferView * bv, string const & str,
+                   bool const & cs = true, bool const & mw = false)
+{
+       LyXParagraph * par = bv->text->cursor.par();
+       LyXParagraph::size_type pos = bv->text->cursor.pos();
+
+       do {
+               if (pos > 0)
+                       --pos;
+               else {
+                       // We skip empty paragraphs (Asger)
+                       do {
+                               par = par->Previous();
+                               if (par)
+                                       pos = par->Last() - 1;
+                       } while (par && pos < 0);
+               }
+       } while (par && !IsStringInText(par, pos, str, cs, mw));
+  
+       if (par) {
+               bv->text->SetCursor(bv, par, pos);
+               return true;
+       } else
+               return false;
+}
+
diff --git a/src/lyxfind.h b/src/lyxfind.h
new file mode 100644 (file)
index 0000000..37509ef
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef LYXFIND_H
+#define LYXFIND_H
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+#include "LString.h"
+#include "lyxparagraph.h"
+
+class BufferView;
+
+int LyXReplace(BufferView * bv, string const &, string const &,
+              bool const &, bool const &, bool const &, bool const & = false);
+
+bool LyXFind(BufferView * bv, string const &, bool const &, bool const &,
+            bool const &);
+
+/// returns true if the specified string is at the specified  position
+bool IsStringInText(LyXParagraph * par, LyXParagraph::size_type pos,
+                   string const & str, bool const & = true,
+                   bool const & = false);
+
+/// if the string is found: return true and set the cursor to the new position
+bool SearchForward(BufferView *, string const & str, bool const & = true, 
+                  bool const & = false);
+///
+bool SearchBackward(BufferView *, string const & str, bool const & = true, 
+                   bool const & = false);
+
+
+#endif
diff --git a/src/lyxfr0.C b/src/lyxfr0.C
deleted file mode 100644 (file)
index 21bd2a2..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/* This file is part of
- * ====================================================== 
- * 
- *           LyX, The Document Processor
- *      
- *         Copyright 1995 Matthias Ettrich,
- *          Copyright 1995-2000 The LyX Team.
- *
- * ====================================================== */
-
-#include <config.h>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "lyxfr0.h"
-#include "lyxfr1.h"
-#include "lyx_gui_misc.h"
-#include "frontends/Dialogs.h" // redrawGUI
-
-#ifdef SIGC_CXX_NAMESPACES
-using SigC::slot;
-#endif
-
-// callbacks for form form_search
-void SearchCancelCB(FL_OBJECT * ob, long)
-{
-       fl_hide_form(ob->form);
-}
-
-
-void SearchForwardCB(FL_OBJECT * ob, long)
-{
-       LyXFindReplace * lfr = static_cast<LyXFindReplace*>(ob->form->u_vdata);
-       lfr->SearchCB(true);
-}
-
-
-void SearchBackwardCB(FL_OBJECT * ob, long)
-{
-       LyXFindReplace * lfr = static_cast<LyXFindReplace*>(ob->form->u_vdata);
-       lfr->SearchCB(false);
-}
-
-
-void SearchReplaceAllCB(FL_OBJECT * ob, long)
-{
-       LyXFindReplace * lfr = static_cast<LyXFindReplace*>(ob->form->u_vdata);
-       lfr->SearchReplaceAllCB();
-}
-
-
-void SearchReplaceCB(FL_OBJECT * ob, long)
-{
-       LyXFindReplace * lfr = static_cast<LyXFindReplace*>(ob->form->u_vdata);
-       lfr->SearchReplaceCB();
-}
-
-
-
-SearchForm::SearchForm()
-       : search_form(0)
-{
-       r_ = Dialogs::redrawGUI.connect(slot(this, &SearchForm::redraw));
-}
-
-
-SearchForm::~SearchForm()
-{
-       // The search_form should be closed and freed when SearchForm
-       // is destructed.
-       r_.disconnect();
-}
-
-
-void SearchForm::redraw()
-{
-       if (search_form && search_form->form_search->visible)
-               fl_redraw_form(search_form->form_search);
-}
-
-
-void SearchForm::SearchCancelCB()
-{
-       fl_hide_form(search_form->form_search);
-}
-
-
-void SearchForm::StartSearch(LyXFindReplace * lfr)
-{
-       static int ow = -1, oh;
-
-       if (!search_form) {
-               search_form = create_form_form_search();
-               fl_set_form_atclose(search_form->form_search,
-                                   CancelCloseBoxCB, 0);
-       }
-       // Set the u_vdata
-       search_form->form_search->u_vdata = lfr;
-               
-       
-       if (search_form->form_search->visible) {
-               fl_raise_form(search_form->form_search);
-       } else {
-               fl_show_form(search_form->form_search,
-                            FL_PLACE_MOUSE | FL_FREE_SIZE, FL_TRANSIENT,
-                            _("Find & Replace"));      // RVDK_PATCH_5
-               if (ow < 0) {
-                       ow = search_form->form_search->w;
-                       oh = search_form->form_search->h;
-               }
-               fl_set_form_minsize(search_form->form_search, ow, oh);
-       }
-}
-
-
-// Returns the value of the replace string in the form
-string const SearchForm::ReplaceString() const
-{
-       return fl_get_input(search_form->input_replace);
-}
-
-
-void SearchForm::replaceEnabled(bool fEnable)
-{
-       fReplaceEnabled = fEnable;
-       if (fEnable) {
-               fl_activate_object(search_form->replace_button);
-               fl_activate_object(search_form->replaceall_button);
-               fl_activate_object(search_form->input_replace);
-               fl_set_object_lcol(search_form->replace_button, FL_BLACK);
-               fl_set_object_lcol(search_form->replaceall_button, FL_BLACK);
-               fl_set_object_lcol(search_form->input_replace, FL_BLACK);
-       } else {
-               fl_deactivate_object(search_form->replace_button);
-               fl_deactivate_object(search_form->replaceall_button);
-               fl_deactivate_object(search_form->input_replace);
-               fl_set_object_lcol(search_form->replace_button, FL_INACTIVE);
-               fl_set_object_lcol(search_form->replaceall_button, FL_INACTIVE);
-               fl_set_object_lcol(search_form->input_replace, FL_INACTIVE);
-       }
-}
-
-
-void SearchForm::SetSearchString(string const & ls)
-{
-       fl_set_input(search_form->input_search, ls.c_str());    
-}
diff --git a/src/lyxfr0.h b/src/lyxfr0.h
deleted file mode 100644 (file)
index e30e4f2..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-// -*- C++ -*-
-#ifndef LYXFR0_H
-#define LYXFR0_H
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include "LString.h"
-#include FORMS_H_LOCATION
-#include "form1.h"
-#include <sigc++/signal_system.h>
-
-class LyXFindReplace;
-
-#ifdef SIGC_CXX_NAMESPACES
-using SigC::Object;
-using SigC::Connection;
-#endif
-
-/**
-   The comments below are most likely not valied anymore since
-   the rewrite of LyXFindReplace0 and LyXFindReplace1. (Lgb)
-   
-  LyXFindReplace0
-  This is a virtual base class. It does not handle text specific
-  items. It only manages the Find & Replace form and the variables.
-  
-  To be added:
-
-  - Confirm replace lightbutton (checkbox)
-
-  - A history list for search and replace strings.
-  These 2 stringlists should match, so that you can replay previous replaces.
-  If you select another search string, then the first choice should be the 
-  replace string you have typed before.
-  
-  - regex searches (I'm working on that -- dnaber, 1999-02-24)
-
-*/
-class SearchForm : public Object {
-public:
-       ///
-       SearchForm();
-       ///
-       ~SearchForm();  
-       
-       ///
-       bool CaseSensitive() const {
-               return fl_get_button(search_form->btnCaseSensitive);
-       }
-
-       ///
-       bool MatchWord() const {
-               return fl_get_button(search_form->btnMatchWord);
-       }
-
-       ///
-       string const SearchString() const {
-               return fl_get_input(search_form->input_search);
-       }
-
-       /// Initialize internal variables and dialog
-       void StartSearch(LyXFindReplace *);
-
-       ///
-       void replaceEnabled(bool fEnabled);
-       ///
-       bool replaceEnabled() const { return fReplaceEnabled; }
-
-       // Callbacks from form
-       ///
-       void SearchCancelCB();
-
-       // Return values
-       ///
-       void SetSearchString(string const & ls);
-       ///
-       string const ReplaceString() const;
-
-       ///
-       bool ValidSearchData() const { return !(SearchString().empty()); }
-private:
-       /** Redraw the form (on receipt of a Signal indicating, for example,
-           that the xform colors have been re-mapped).
-       */
-       void redraw();
-       ///
-       FD_form_search * search_form;
-       /// replace buttons enabled?
-       bool fReplaceEnabled;
-       /// Redraw connection.
-       Connection r_;
-};
-
-#endif
diff --git a/src/lyxfr1.C b/src/lyxfr1.C
deleted file mode 100644 (file)
index f6d575f..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-/* This file is part of
- * ====================================================== 
- * 
- *           LyX, The Document Processor
- *      
- *           Copyright 1995 Matthias Ettrich,
- *           Copyright 1995-2000 The LyX Team.
- *
- * ====================================================== */
-
-#include <config.h>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "lyxfr1.h"
-
-#include "lyxtext.h"
-#include "LyXView.h"
-#include "minibuffer.h"
-#include "lyx_gui_misc.h"
-#include "support/textutils.h"
-#include "support/lstrings.h"
-#include "BufferView.h"
-#include "buffer.h"
-
-// Returns the current selection. If nothing is selected or if the selection
-// spans 2 paragraphs, an empty string is returned.
-static
-string GetCurrentSelectionAsString(LyXText * lt) 
-{
-       string sz;
-       
-       LyXParagraph * par = lt->cursor.par();
-       if (lt->selection && lt->sel_cursor.par() == par) {
-               // (selected) and (begin/end in same paragraph)
-               LyXParagraph::size_type pos = 
-                       lt->sel_start_cursor.pos();
-               LyXParagraph::size_type endpos = 
-                       lt->sel_end_cursor.pos();
-               bool fPrevIsSpace = false;
-               char ch;
-               while (pos < par->Last() && pos < endpos) {
-                       ch = par->GetChar(pos);
-                       
-                       //HB??: Maybe (ch <= ' ') 
-                       if ((ch == ' ') || (ch <= LyXParagraph::META_INSET)) {
-                               // consecutive spaces --> 1 space char
-                               if (fPrevIsSpace) {
-                                       ++pos;          // Next text pos
-                                       continue;       // same search pos
-                               }
-                               sz += ' ';
-                               fPrevIsSpace = true;
-                       } else {
-                               sz += ch;
-                               fPrevIsSpace = false;
-                       }
-                       ++pos;
-               }
-       }
-       return sz;
-}
-
-
-// If nothing selected, select the word at the cursor.
-// Returns the current selection
-static inline
-string GetSelectionOrWordAtCursor(BufferView * bv) 
-{
-       bv->text->SelectWordWhenUnderCursor(bv);
-       return GetCurrentSelectionAsString(bv->text);
-}
-
-
-// This is a copy of SetSelectionOverString from text.C
-// It does the same, but uses only the length as a parameter
-static inline
-void SetSelectionOverLenChars(BufferView * bv, int len)
-{
-       bv->text->sel_cursor = bv->text->cursor;
-       for (int i = 0; i < len; ++i)
-               bv->text->CursorRight(bv);
-       bv->text->SetSelection(bv);
-}
-
-
-//------------------------------
-
-
-LyXFindReplace::LyXFindReplace()
-       : bv(0)
-{}
-
-
-LyXFindReplace::~LyXFindReplace()
-{}
-
-
-void LyXFindReplace::StartSearch(BufferView * b)
-{
-       bv = b;
-       SF.StartSearch(this);
-       SF.replaceEnabled(!bv->buffer()->isReadonly());
-       searchForward = true;
-       if (SF.SearchString().empty()) 
-               SF.SetSearchString(GetSelectionOrWordAtCursor(bv));
-}      
-
-
-// TODO?: the user can insert multiple spaces with this
-// routine (1999-01-11, dnaber)
-void LyXFindReplace::SearchReplaceCB()
-{
-       if (!bv->available()) return;
-       if (bv->buffer()->isReadonly()) return;
-       
-       // CutSelection cannot cut a single space, so we have to stop
-       // in order to avoid endless loop :-(
-       if (SF.SearchString().length() == 0
-           || (SF.SearchString().length() == 1
-               && SF.SearchString()[0] == ' ')) {
-               WriteAlert(_("Sorry!"), _("You cannot replace a single space, "
-                                         "nor an empty character."));
-               return;
-       }
-       
-       string const replacestring = SF.ReplaceString();
-
-       bv->hideCursor();
-       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
-
-       LyXText * ltCur = bv->text;     
-       if (ltCur->selection) {
-               // clear the selection (if there is any) 
-               bv->toggleSelection(false);
-               bv->text->
-                       ReplaceSelectionWithString(bv, replacestring);
-               bv->text->
-                       SetSelectionOverString(bv, replacestring);
-               bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-       }
-       
-       // jump to next match:
-       SearchCB(searchForward);
-}
-
-
-// replaces all occurences of a string (1999-01-15, dnaber@mini.gt.owl.de)
-void LyXFindReplace::SearchReplaceAllCB()
-{
-       if (!bv->available()) return;
-       if (bv->buffer()->isReadonly()) return;
-
-       // CutSelection cannot cut a single space, so we have to stop
-       // in order to avoid endless loop :-(
-       if (SF.SearchString().length() == 0
-           || (SF.SearchString().length() == 1
-               && SF.SearchString()[0] == ' ')) {
-               WriteAlert(_("Sorry!"), _("You cannot replace a single space, "
-                                         "nor an empty character."));
-               return;
-       }
-
-       string const replacestring = SF.ReplaceString();
-
-       bv->hideCursor();
-
-       // start at top
-       bv->text->ClearSelection(bv);
-       bv->text->CursorTop(bv);
-
-       int replace_count = 0;
-       LyXText * ltCur;
-       do {
-               ltCur = bv->text;       
-               if (ltCur->selection) {
-                       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
-                       bv->toggleSelection(false);
-                       bv->text->
-                               ReplaceSelectionWithString(bv, replacestring);
-                       bv->text->
-                               SetSelectionOverString(bv, replacestring);
-                       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); 
-                       ++replace_count;
-               }
-       } while (SearchCB(true));
-       if (replace_count == 0) {
-               bv->owner()->getMiniBuffer()->Set(
-                       _("String not found!"));
-       } else {
-               if (replace_count == 1) {
-                       bv->owner()->getMiniBuffer()->Set(
-                               _("1 string has been replaced."));
-               } else {
-                       string str = tostr(replace_count);
-                       str += _(" strings have been replaced.");
-                       bv->owner()->getMiniBuffer()->Set(str);
-               }
-       }
-}
-
-
-bool LyXFindReplace::SearchCB(bool fForward)
-{
-       // store search direction
-       searchForward = fForward;
-       
-       if (!bv->available())
-               return false;
-   
-       bv->hideCursor();
-       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
-       LyXText * ltCur = bv->text;
-       if (ltCur->selection) 
-               ltCur->cursor = fForward ? ltCur->sel_end_cursor :
-               ltCur->sel_start_cursor;
-
-       iLenSelected = SF.SearchString().length();
-       bool result;
-   
-       if (!SF.ValidSearchData() ||
-           (fForward ? SearchForward(bv):SearchBackward(bv))) {
-               bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
-
-               // clear the selection (if there is any) 
-               bv->toggleSelection();
-               bv->text->ClearSelection(bv);
-
-               // set the new selection 
-               SetSelectionOverLenChars(bv, iLenSelected);
-               bv->toggleSelection(false);
-               bv->owner()->getMiniBuffer()->Set(_("Found."));
-               result = true;
-       } else {
-               bv->owner()->getMiniBuffer()->Set(_("String not found!"));
-               result = false;
-       }
-
-       if (bv->focus())
-               bv->showCursor();
-
-       return result;
-}
-
-
-// if the string can be found: return true and set the cursor to
-// the new position 
-// (was: LyXText::SearchForward(char const* string) in text2.C )
-bool LyXFindReplace::SearchForward(BufferView * bv)
-{
-       LyXParagraph * par = bv->text->cursor.par();
-       LyXParagraph::size_type pos = bv->text->cursor.pos();
-
-       while (par && !IsSearchStringInText(par, pos)) {
-               if (pos < par->Last() - 1)
-                       ++pos;
-               else {
-                       pos = 0;
-                       par = par->Next();
-               }
-       }
-       if (par) {
-               bv->text->SetCursor(bv, par, pos);
-               return true;
-       } else
-               return false;
-}
-
-
-// if the string can be found: return true and set the cursor to
-// the new position 
-// (was: LyXText::SearchBackward(char const* string) in text2.C )
-bool LyXFindReplace::SearchBackward(BufferView * bv)
-{
-       LyXParagraph * par = bv->text->cursor.par();
-       int pos = bv->text->cursor.pos();
-
-       do {
-               if (pos > 0)
-                       --pos;
-               else {
-                       // We skip empty paragraphs (Asger)
-                       do {
-                               par = par->Previous();
-                               if (par)
-                                       pos = par->Last() - 1;
-                       } while (par && pos < 0);
-               }
-       } while (par && !IsSearchStringInText(par, pos));
-  
-       if (par) {
-               bv->text->SetCursor(bv, par, pos);
-               return true;
-       } else
-               return false;
-}
-
-
-/* Compares 2 char values. 
-return value is
-    > 0 if chSearch > ch2
-    = 0 if chSearch == ch2
-    < 0 if chSearch < ch2
-*/
-int LyXFindReplace::CompareChars(char chSearch, char chText) const
-{
-       if (SF.CaseSensitive())
-               return (chSearch - chText);
-       return (toupper(chSearch) - toupper(chText));
-}
-
-
-// returns true if the search string is at the specified position 
-// (Copied from the original "LyXText::IsStringInText" in text2.C )
-bool LyXFindReplace::IsSearchStringInText(LyXParagraph * par,
-                                         LyXParagraph::size_type pos) const
-{
-       if (!par) return false;
-
-       char chSrch = 0;
-       char chText;
-       bool fPrevIsSpace = false;
-       int iText = 0;
-       string::size_type iSrch = 0;
-       while (pos + iText < par->Last() && 
-              iSrch < SF.SearchString().length()) {
-               chSrch = SF.SearchString()[iSrch];
-               chText = par->GetChar(pos+iText);
-               if (chText == ' ') {
-                       if (fPrevIsSpace) {
-                               ++iText;  // next Text pos
-                               continue; // same search pos
-                       }
-                       fPrevIsSpace = true;
-               } else
-                       fPrevIsSpace = false;
-               if (CompareChars(chSrch, chText) != 0)
-                       break;
-               
-               ++iSrch;
-               ++iText;
-       }
-
-       if (iSrch < SF.SearchString().length())
-               return false;
-
-       if (!SF.MatchWord() 
-           || ((pos <= 0 || !IsLetterCharOrDigit(par->GetChar(pos - 1)))
-               && (pos + iText >= par->Last() 
-                   || !IsLetterCharOrDigit(par->GetChar(pos + iText))))) {
-               iLenSelected = iText;
-               return true;
-       }
-
-       return false;
-}
diff --git a/src/lyxfr1.h b/src/lyxfr1.h
deleted file mode 100644 (file)
index 872854a..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// -*- C++ -*-
-#ifndef LYXFR1_H
-#define LYXFR1_H
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include "lyxparagraph.h"
-#include "lyxfr0.h"
-
-class LyXText;
-
-/** Find and replace in LyXText texts.
-   
-   This class implements Find & Replace in LyXText texts. It is based on
-   LyXFindReplace0, which implements the form related stuff. (see lyxfr0.h)
-*/
-class LyXFindReplace {
-public:
-       ///
-       LyXFindReplace();
-       ///
-       ~LyXFindReplace();
-
-       /// Initialize internal variables and search form
-       void StartSearch(BufferView *);
-
-       ///
-       bool SearchCB(bool fForward);
-       ///
-       void SearchReplaceCB();
-       ///
-       void SearchReplaceAllCB();
-private:
-       /// Set by IsSearchStringInText:
-       mutable int iLenSelected;
-
-       /// Direction we are searching:
-       bool searchForward;
-    
-       ///
-       bool SearchForward(BufferView *);
-       ///
-       bool SearchBackward(BufferView *); 
-
-       /** Compares 2 char values. 
-       return value is
-           \begin{itemize}
-           \item > 0 if ch1 > ch2
-           \item = 0 if ch1 == ch2
-           \item < 0 if ch1 < ch2
-           \end{itemize}
-       */
-       int CompareChars(char chSearch, char chText) const;
-       /// returns true if the specified string is at the specified position 
-       bool IsSearchStringInText(LyXParagraph * par,
-                                 LyXParagraph::size_type pos) const;
-       ///
-       SearchForm SF;
-       ///
-       BufferView * bv;
-};
-#endif
index b44f6c808c7018ab3ab15d9956222d65959bfbca..2b1f9e03b649a1e6c1f88b9134ad81184df7a270 100644 (file)
@@ -75,7 +75,6 @@
 #include "trans_mgr.h"
 #include "layout.h"
 #include "WorkArea.h"
-#include "lyxfr1.h"
 #include "bufferview_funcs.h"
 #include "frontends/Dialogs.h"
 #include "frontends/Toolbar.h"
@@ -86,6 +85,7 @@
 #include "importer.h"
 #include "FontLoader.h"
 #include "TextCache.h"
+#include "lyxfind.h"
 
 using std::pair;
 using std::endl;
@@ -708,8 +708,8 @@ string const LyXFunc::Dispatch(int ac,
 
                if (!searched_string.empty() &&
                    ((action == LFUN_WORDFINDBACKWARD) ? 
-                    TEXT()->SearchBackward(owner->view(), searched_string) :
-                    TEXT()->SearchForward(owner->view(), searched_string))) {
+                    SearchBackward(owner->view(), searched_string) :
+                    SearchForward(owner->view(), searched_string))) {
 
                        // ??? What is that ???
                        owner->view()->update(TEXT(), BufferView::SELECT|BufferView::FITCUR);
@@ -903,11 +903,8 @@ string const LyXFunc::Dispatch(int ac,
                
        case LFUN_MENUSEARCH:
        {
-               // Ok this is one _very_ bad solution, but I think that some
-               // of this will be rewritten as part of GUI indep anyway.
-               // Lgb
-               static LyXFindReplace FR_;
-               FR_.StartSearch(owner->view());
+               owner->getDialogs()->showSearch();
+               break;
        }
        break;
                
index ed5dd4c8046e3610185dfc5eb518db835fadd580..a2eeb4eb7f419cc8a37dea990d12217ad7829799 100644 (file)
@@ -402,12 +402,6 @@ public:
 
        /* these things are for search and replace */
 
-       /** returns true if the specified string is at the specified
-         position
-         */
-       bool IsStringInText(LyXParagraph * par,
-                           LyXParagraph::size_type pos,
-                           string const & str) const;
        /** sets the selection over the number of characters of string,
          no check!!
          */
@@ -418,12 +412,6 @@ public:
          */
        void ReplaceSelectionWithString(BufferView *, string const & str);
 
-       /** if the string can be found: return true and set the cursor to
-         the new position */
-       bool SearchForward(BufferView *, string const & str) const;
-       ///
-       bool SearchBackward(BufferView *, string const & str) const;
-
        /// needed to insert the selection
        void InsertStringA(BufferView *, string const & str);
        /// needed to insert the selection
index 458ebe761617cbe5710b22bdd67b3aea96cec522..0614935ef17061a5be603a080067313a8930b10f 100644 (file)
@@ -2383,26 +2383,6 @@ LyXParagraph * LyXText::FirstParagraph() const
 }
 
 
-// returns true if the specified string is at the specified position
-bool LyXText::IsStringInText(LyXParagraph * par,
-                            LyXParagraph::size_type pos,
-                            string const & str) const
-{
-       if (!par)
-               return false;
-
-       LyXParagraph::size_type i = 0;
-       while (pos + i < par->Last()
-              && string::size_type(i) < str.length()
-              && str[i] == par->GetChar(pos + i)) {
-               ++i;
-       }
-       if (str.length() == string::size_type(i))
-               return true;
-       return false;
-}
-
-
 // sets the selection over the number of characters of string, no check!!
 void LyXText::SetSelectionOverString(BufferView * bview, string const & str)
 {
@@ -2444,55 +2424,6 @@ void LyXText::ReplaceSelectionWithString(BufferView * bview,
 }
 
 
-// if the string can be found: return true and set the cursor to
-// the new position
-bool LyXText::SearchForward(BufferView * bview, string const & str) const
-{
-       LyXParagraph * par = cursor.par();
-       LyXParagraph::size_type pos = cursor.pos();
-       while (par && !IsStringInText(par, pos, str)) {
-               if (pos < par->Last() - 1)
-                       ++pos;
-               else {
-                       pos = 0;
-                       par = par->Next();
-               }
-       }
-       if (par) {
-               SetCursor(bview, par, pos);
-               return true;
-       }
-       else
-               return false;
-}
-
-
-bool LyXText::SearchBackward(BufferView * bview, string const & str) const
-{
-       LyXParagraph * par = cursor.par();
-       int pos = cursor.pos();
-
-       do {
-               if (pos > 0)
-                       --pos;
-               else {
-                       // We skip empty paragraphs (Asger)
-                       do {
-                               par = par->Previous();
-                               if (par)
-                                       pos = par->Last() - 1;
-                       } while (par && pos < 0);
-               }
-       } while (par && !IsStringInText(par, pos, str));
-  
-       if (par) {
-               SetCursor(bview, par, pos);
-               return true;
-       } else
-               return false;
-}
-
-
 // needed to insert the selection
 void LyXText::InsertStringA(BufferView * bview, string const & str)
 {