2 * \file FormSpellchecker.C
3 * Copyright 2001 The LyX Team.
4 * See the file COPYING.
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);
39 bc().setCancel(dialog_->done);
40 bc().addReadOnly(dialog_->replace);
41 bc().addReadOnly(dialog_->accept);
42 bc().addReadOnly(dialog_->insert);
43 bc().addReadOnly(dialog_->ignore);
44 bc().addReadOnly(dialog_->start);
45 bc().addReadOnly(dialog_->stop);
46 bc().addReadOnly(dialog_->browser);
49 void FormSpellchecker::update()
52 fl_set_input(dialog_->input, w.c_str());
53 fl_set_object_label(dialog_->text, w.c_str());
54 fl_clear_browser(dialog_->browser);
55 fl_set_slider_value(dialog_->slider, 0);
58 ButtonPolicy::SMInput FormSpellchecker::input(FL_OBJECT * obj, long val)
60 if (obj == dialog_->replace) {
61 string const tmp = getStringFromInput(dialog_->input);
62 controller().replace(tmp);
64 } else if (obj == dialog_->start) {
68 } else if (obj == dialog_->stop) {
72 } else if (obj == dialog_->ignore) {
75 } else if (obj == dialog_->accept) {
76 controller().ignoreAll();
78 } else if (obj == dialog_->insert) {
79 controller().insert();
81 } else if (obj == dialog_->options) {
82 controller().options();
84 } else if (obj == dialog_->browser) {
85 int const line = fl_get_browser(dialog_->browser);
87 getStringFromBrowser(dialog_->browser, line);
89 return ButtonPolicy::SMI_NOOP;
93 // place the chosen string in the input as feedback
94 fl_set_input(dialog_->input, tmp.c_str());
98 controller().replace(tmp);
99 // reset the browser so that the following
100 // single-click callback doesn't do anything
101 fl_deselect_browser_line(dialog_->browser, line);
105 return ButtonPolicy::SMI_VALID;
108 void FormSpellchecker::partialUpdate(int id)
113 fl_set_slider_value(dialog_->slider,
114 controller().getProgress());
119 string w = controller().getWord();
120 fl_set_input(dialog_->input, w.c_str());
121 fl_set_object_label(dialog_->text, w.c_str());
122 fl_clear_browser(dialog_->browser);
123 while (!(w = controller().getSuggestion()).empty()) {
124 fl_add_browser_line(dialog_->browser, w.c_str());
130 fl_show_messages(controller().getMessage().c_str());
137 void FormSpellchecker::showMessage(const char * msg)
139 fl_show_message(msg, "", "");
142 void FormSpellchecker::stop(bool stop)
144 setEnabled(dialog_->start, stop);
145 setEnabled(dialog_->replace, !stop);
146 setEnabled(dialog_->ignore, !stop);
147 setEnabled(dialog_->accept, !stop);
148 setEnabled(dialog_->insert, !stop);
149 setEnabled(dialog_->stop, !stop);
150 setEnabled(dialog_->browser, !stop);
151 setEnabled(dialog_->input, !stop);