2 * \file FormSpellchecker.C
3 * Copyright 2001 The LyX Team.
4 * See the file COPYING.
6 * \author Edwin Leuven, leuven@fee.uva.nl
12 #pragma implementation
16 #include "xforms_helpers.h"
17 #include "ControlSpellchecker.h"
18 #include "FormSpellchecker.h"
19 #include "forms/form_spellchecker.h"
20 #include FORMS_H_LOCATION
22 typedef FormCB<ControlSpellchecker, FormDB<FD_spellchecker> > base_class;
24 FormSpellchecker::FormSpellchecker(ControlSpellchecker & c, Dialogs & d)
25 : base_class(c, d, _("LyX: Spellchecker"), false)
30 void FormSpellchecker::build()
32 dialog_.reset(build_spellchecker(this));
34 fl_set_slider_bounds(dialog_->slider, 0.0, 100.0);
35 fl_set_slider_step(dialog_->slider, 1.0);
37 fl_set_browser_dblclick_callback(dialog_->browser,
38 C_FormBaseInputCB, 2);
40 fl_set_input_return(dialog_->input, FL_RETURN_CHANGED);
41 setPrehandler(dialog_->input);
44 bc().setCancel(dialog_->button_close);
45 bc().addReadOnly(dialog_->button_replace);
46 bc().addReadOnly(dialog_->button_accept);
47 bc().addReadOnly(dialog_->button_insert);
48 bc().addReadOnly(dialog_->button_ignore);
49 bc().addReadOnly(dialog_->button_start);
50 bc().addReadOnly(dialog_->button_stop);
51 bc().addReadOnly(dialog_->browser);
54 void FormSpellchecker::update()
57 fl_set_input(dialog_->input, w.c_str());
58 fl_set_object_label(dialog_->text, w.c_str());
59 fl_clear_browser(dialog_->browser);
60 fl_set_slider_value(dialog_->slider, 0);
63 ButtonPolicy::SMInput FormSpellchecker::input(FL_OBJECT * obj, long val)
65 if (obj == dialog_->button_replace) {
66 string const tmp = getString(dialog_->input);
67 controller().replace(tmp);
69 } else if (obj == dialog_->button_start) {
73 } else if (obj == dialog_->button_stop) {
77 } else if (obj == dialog_->button_ignore) {
80 } else if (obj == dialog_->button_accept) {
81 controller().ignoreAll();
83 } else if (obj == dialog_->button_insert) {
84 controller().insert();
86 } else if (obj == dialog_->browser) {
87 int const line = fl_get_browser(dialog_->browser);
89 getString(dialog_->browser, line);
91 return ButtonPolicy::SMI_NOOP;
95 // place the chosen string in the input as feedback
96 fl_set_input(dialog_->input, tmp.c_str());
100 controller().replace(tmp);
101 // reset the browser so that the following
102 // single-click callback doesn't do anything
103 fl_deselect_browser_line(dialog_->browser, line);
107 return ButtonPolicy::SMI_VALID;
110 void FormSpellchecker::partialUpdate(int id)
115 fl_set_slider_value(dialog_->slider,
116 controller().getProgress());
121 string w = controller().getWord();
122 fl_set_input(dialog_->input, w.c_str());
123 fl_set_object_label(dialog_->text, w.c_str());
124 fl_clear_browser(dialog_->browser);
125 while (!(w = controller().getSuggestion()).empty()) {
126 fl_add_browser_line(dialog_->browser, w.c_str());
132 fl_show_messages(controller().getMessage().c_str());
138 void FormSpellchecker::showMessage(const char * msg)
140 fl_show_message(msg, "", "");
143 void FormSpellchecker::stop(bool stop)
145 setEnabled(dialog_->button_start, stop);
146 setEnabled(dialog_->button_replace, !stop);
147 setEnabled(dialog_->button_ignore, !stop);
148 setEnabled(dialog_->button_accept, !stop);
149 setEnabled(dialog_->button_insert, !stop);
150 setEnabled(dialog_->button_stop, !stop);
151 setEnabled(dialog_->browser, !stop);
152 setEnabled(dialog_->input, !stop);