]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormSearch.C
Yet more dialog tweaking from Rob.
[lyx.git] / src / frontends / xforms / FormSearch.C
index 5f87c1c7d56e7f86afcd2333ab7ac2ffec2088b0..cd578cb3b201a22f80f909e0b659505e0b77ba34 100644 (file)
@@ -1,9 +1,11 @@
 /**
  * \file FormSearch.C
- * Copyright 2001 The LyX Team.
- * See the file COPYING.
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
  * \author Edwin Leuven
+ *
+ * Full author contact details are available in file CREDITS
  */
 
 #include <config.h>
 #pragma implementation
 #endif
 
+#include "xformsBC.h"
+#include "ControlSearch.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
+#include "forms/form_search.h"
+#include FORMS_H_LOCATION
 
+typedef FormCB<ControlSearch, FormDB<FD_search> > base_class;
 
-FormSearch::FormSearch(LyXView * lv, Dialogs * d)
-       : FormBaseBD(lv, d, _("LyX: Find and Replace"))
-{
-    // 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()
+       : base_class(_("Find and Replace"))
+{}
 
-FL_FORM * FormSearch::form() const
-{
-    if (dialog_.get()) 
-           return dialog_->form;
-    return 0;
-}
 
 void FormSearch::build()
 {
-   dialog_.reset(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_.get())
-     return;
+       dialog_.reset(build_search(this));
 
-   bc_.readOnly(lv_->buffer()->isReadonly());
+       // Manage the ok, apply and cancel/close buttons
+       bc().setCancel(dialog_->button_close);
+       bc().addReadOnly(dialog_->input_replace);
+       bc().addReadOnly(dialog_->button_replace);
+       bc().addReadOnly(dialog_->button_replaceall);
 }
 
-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)
+void FormSearch::update()
 {
-   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!"));
+       fl_set_input_selected(dialog_->input_search, true);
+       fl_set_focus_object(dialog_->form, dialog_->input_search);
 }
 
 
-void FormSearch::Replace(bool const all)
+ButtonPolicy::SMInput FormSearch::input(FL_OBJECT * obj, long)
 {
-   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());
-      }
-   }
+       if (obj == dialog_->button_findnext ||
+           obj == dialog_->button_findprev) {
+               bool const forward = (obj == dialog_->button_findnext);
+
+               controller().find(fl_get_input(dialog_->input_search),
+                                 fl_get_button(dialog_->check_casesensitive),
+                                 fl_get_button(dialog_->check_matchword),
+                                 forward);
+
+       } else if (obj == dialog_->button_replace ||
+                  obj == dialog_->button_replaceall) {
+               bool const all = (obj == dialog_->button_replaceall);
+
+               controller().replace(fl_get_input(dialog_->input_search),
+                                    fl_get_input(dialog_->input_replace),
+                                    fl_get_button(dialog_->check_casesensitive),
+                                    fl_get_button(dialog_->check_matchword),
+                                    all);
+       }
+
+       return ButtonPolicy::SMI_VALID;
 }
-
-