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 "form_spellchecker.h"
21 typedef FormCB<ControlSpellchecker, FormDB<FD_form_spellchecker> > base_class;
23 FormSpellchecker::FormSpellchecker(ControlSpellchecker & c)
24 : base_class(c, _("LyX: Spellchecker"), false)
28 void FormSpellchecker::build()
30 dialog_.reset(build_spellchecker());
32 fl_set_slider_bounds(dialog_->slider, 0.0, 100.0);
33 fl_set_slider_step(dialog_->slider, 1.0);
35 fl_set_browser_dblclick_callback(dialog_->browser,
36 C_FormBaseInputCB, 2);
38 fl_set_input_return(dialog_->input, FL_RETURN_CHANGED);
39 setPrehandler(dialog_->input);
42 bc().setCancel(dialog_->button_close);
43 bc().addReadOnly(dialog_->button_replace);
44 bc().addReadOnly(dialog_->button_accept);
45 bc().addReadOnly(dialog_->button_insert);
46 bc().addReadOnly(dialog_->button_ignore);
47 bc().addReadOnly(dialog_->button_start);
48 bc().addReadOnly(dialog_->button_stop);
49 bc().addReadOnly(dialog_->browser);
52 void FormSpellchecker::update()
55 fl_set_input(dialog_->input, w.c_str());
56 fl_set_object_label(dialog_->text, w.c_str());
57 fl_clear_browser(dialog_->browser);
58 fl_set_slider_value(dialog_->slider, 0);
61 ButtonPolicy::SMInput FormSpellchecker::input(FL_OBJECT * obj, long val)
63 if (obj == dialog_->button_replace) {
64 string const tmp = getStringFromInput(dialog_->input);
65 controller().replace(tmp);
67 } else if (obj == dialog_->button_start) {
71 } else if (obj == dialog_->button_stop) {
75 } else if (obj == dialog_->button_ignore) {
78 } else if (obj == dialog_->button_accept) {
79 controller().ignoreAll();
81 } else if (obj == dialog_->button_insert) {
82 controller().insert();
84 } else if (obj == dialog_->button_options) {
85 controller().options();
87 } else if (obj == dialog_->browser) {
88 int const line = fl_get_browser(dialog_->browser);
90 getStringFromBrowser(dialog_->browser, line);
92 return ButtonPolicy::SMI_NOOP;
96 // place the chosen string in the input as feedback
97 fl_set_input(dialog_->input, tmp.c_str());
101 controller().replace(tmp);
102 // reset the browser so that the following
103 // single-click callback doesn't do anything
104 fl_deselect_browser_line(dialog_->browser, line);
108 return ButtonPolicy::SMI_VALID;
111 void FormSpellchecker::partialUpdate(int id)
116 fl_set_slider_value(dialog_->slider,
117 controller().getProgress());
122 string w = controller().getWord();
123 fl_set_input(dialog_->input, w.c_str());
124 fl_set_object_label(dialog_->text, w.c_str());
125 fl_clear_browser(dialog_->browser);
126 while (!(w = controller().getSuggestion()).empty()) {
127 fl_add_browser_line(dialog_->browser, w.c_str());
133 fl_show_messages(controller().getMessage().c_str());
140 void FormSpellchecker::showMessage(const char * msg)
142 fl_show_message(msg, "", "");
145 void FormSpellchecker::stop(bool stop)
147 setEnabled(dialog_->button_start, stop);
148 setEnabled(dialog_->button_replace, !stop);
149 setEnabled(dialog_->button_ignore, !stop);
150 setEnabled(dialog_->button_accept, !stop);
151 setEnabled(dialog_->button_insert, !stop);
152 setEnabled(dialog_->button_stop, !stop);
153 setEnabled(dialog_->browser, !stop);
154 setEnabled(dialog_->input, !stop);