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)
29 void FormSpellchecker::build()
31 dialog_.reset(build_spellchecker(this));
33 fl_set_slider_bounds(dialog_->slider, 0.0, 100.0);
34 fl_set_slider_step(dialog_->slider, 1.0);
36 fl_set_browser_dblclick_callback(dialog_->browser,
37 C_FormBaseInputCB, 2);
39 fl_set_input_return(dialog_->input, FL_RETURN_CHANGED);
40 setPrehandler(dialog_->input);
43 bc().setCancel(dialog_->button_close);
44 bc().addReadOnly(dialog_->button_replace);
45 bc().addReadOnly(dialog_->button_accept);
46 bc().addReadOnly(dialog_->button_insert);
47 bc().addReadOnly(dialog_->button_ignore);
48 bc().addReadOnly(dialog_->button_start);
49 bc().addReadOnly(dialog_->button_stop);
50 bc().addReadOnly(dialog_->browser);
53 void FormSpellchecker::update()
56 fl_set_input(dialog_->input, w.c_str());
57 fl_set_object_label(dialog_->text, w.c_str());
58 fl_clear_browser(dialog_->browser);
59 fl_set_slider_value(dialog_->slider, 0);
62 ButtonPolicy::SMInput FormSpellchecker::input(FL_OBJECT * obj, long val)
64 if (obj == dialog_->button_replace) {
65 string const tmp = getString(dialog_->input);
66 controller().replace(tmp);
68 } else if (obj == dialog_->button_start) {
72 } else if (obj == dialog_->button_stop) {
76 } else if (obj == dialog_->button_ignore) {
79 } else if (obj == dialog_->button_accept) {
80 controller().ignoreAll();
82 } else if (obj == dialog_->button_insert) {
83 controller().insert();
85 } else if (obj == dialog_->button_options) {
86 controller().options();
88 } else if (obj == dialog_->browser) {
89 int const line = fl_get_browser(dialog_->browser);
91 getString(dialog_->browser, line);
93 return ButtonPolicy::SMI_NOOP;
97 // place the chosen string in the input as feedback
98 fl_set_input(dialog_->input, tmp.c_str());
102 controller().replace(tmp);
103 // reset the browser so that the following
104 // single-click callback doesn't do anything
105 fl_deselect_browser_line(dialog_->browser, line);
109 return ButtonPolicy::SMI_VALID;
112 void FormSpellchecker::partialUpdate(int id)
117 fl_set_slider_value(dialog_->slider,
118 controller().getProgress());
123 string w = controller().getWord();
124 fl_set_input(dialog_->input, w.c_str());
125 fl_set_object_label(dialog_->text, w.c_str());
126 fl_clear_browser(dialog_->browser);
127 while (!(w = controller().getSuggestion()).empty()) {
128 fl_add_browser_line(dialog_->browser, w.c_str());
134 fl_show_messages(controller().getMessage().c_str());
141 void FormSpellchecker::showMessage(const char * msg)
143 fl_show_message(msg, "", "");
146 void FormSpellchecker::stop(bool stop)
148 setEnabled(dialog_->button_start, stop);
149 setEnabled(dialog_->button_replace, !stop);
150 setEnabled(dialog_->button_ignore, !stop);
151 setEnabled(dialog_->button_accept, !stop);
152 setEnabled(dialog_->button_insert, !stop);
153 setEnabled(dialog_->button_stop, !stop);
154 setEnabled(dialog_->browser, !stop);
155 setEnabled(dialog_->input, !stop);