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")), clickline_(-1)
28 void FormSpellchecker::build()
30 dialog_.reset(build_spellchecker());
33 bc().setCancel(dialog_->done);
34 bc().addReadOnly(dialog_->replace);
35 bc().addReadOnly(dialog_->accept);
36 bc().addReadOnly(dialog_->insert);
37 bc().addReadOnly(dialog_->ignore);
38 bc().addReadOnly(dialog_->start);
39 bc().addReadOnly(dialog_->stop);
40 bc().addReadOnly(dialog_->browser);
43 void FormSpellchecker::update()
46 fl_set_input(dialog_->input, w.c_str());
47 fl_set_object_label(dialog_->text, w.c_str());
48 fl_clear_browser(dialog_->browser);
49 fl_set_slider_value(dialog_->slider, 0);
52 void FormSpellchecker::hide()
56 if (form() && form()->visible)
60 ButtonPolicy::SMInput FormSpellchecker::input(FL_OBJECT * obj, long)
62 if (obj == dialog_->replace) {
63 string tmp = fl_get_input(dialog_->input);
64 controller().replace(tmp);
65 } else if (obj == dialog_->start) {
68 } else if (obj == dialog_->stop) {
71 } else if (obj == dialog_->ignore) {
73 } else if (obj == dialog_->accept) {
74 controller().ignoreAll();
75 } else if (obj == dialog_->insert) {
76 controller().insert();
77 } else if (obj == dialog_->options) {
78 controller().options();
79 } else if (obj == dialog_->browser) {
80 int sel = fl_get_browser(dialog_->browser);
81 if (clickline_==sel) {
82 string tmp = fl_get_input(dialog_->input);
83 controller().replace(tmp);
86 string tmp = fl_get_browser_line(dialog_->browser, clickline_);
87 fl_set_input(dialog_->input, tmp.c_str());
90 return ButtonPolicy::SMI_VALID;
93 void FormSpellchecker::partialUpdate(int id)
98 fl_set_slider_value(dialog_->slider,
99 controller().getProgress());
104 string w = controller().getWord();
105 fl_set_input(dialog_->input, w.c_str());
106 fl_set_object_label(dialog_->text, w.c_str());
107 fl_clear_browser(dialog_->browser);
108 while ( !(w = controller().getSuggestion()).empty() ) {
109 fl_add_browser_line(dialog_->browser, w.c_str());
115 fl_show_messages(controller().getMessage().c_str());
122 void FormSpellchecker::showMessage(const char * msg)
124 fl_show_message(msg, "", "");
127 void FormSpellchecker::stop(bool stop)
129 setEnabled(dialog_->start, stop);
130 setEnabled(dialog_->replace, !stop);
131 setEnabled(dialog_->ignore, !stop);
132 setEnabled(dialog_->accept, !stop);
133 setEnabled(dialog_->insert, !stop);
134 setEnabled(dialog_->stop, !stop);
135 setEnabled(dialog_->browser, !stop);
136 setEnabled(dialog_->input, !stop);