]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/FormSpellchecker.C
Add fl_set_input_return to input_paperoption.
[lyx.git] / src / frontends / xforms / FormSpellchecker.C
1 /**
2  * \file FormSpellchecker.C
3  * Copyright 2001 The LyX Team.
4  * See the file COPYING.
5  *
6  * \author Edwin Leuven
7  */
8
9 #include <config.h>
10
11 #ifdef __GNUG__
12 #pragma implementation
13 #endif
14
15 #include "xformsBC.h"
16 #include "xforms_helpers.h"
17 #include "ControlSpellchecker.h"
18 #include "FormSpellchecker.h"
19 #include "form_spellchecker.h"
20
21 typedef FormCB<ControlSpellchecker, FormDB<FD_form_spellchecker> > base_class;
22
23 FormSpellchecker::FormSpellchecker(ControlSpellchecker & c)
24         : base_class(c, _("LyX: Spellchecker")), clickline_(-1)
25 {}
26
27
28 void FormSpellchecker::build()
29 {
30         dialog_.reset(build_spellchecker());
31         
32         // Manage the buttons
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);
41 }
42
43 void FormSpellchecker::update()
44 {
45         string w = "";
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);
50 }
51
52 void FormSpellchecker::hide()
53 {
54         clickline_ = -1;
55         
56         if (form() && form()->visible)
57                 fl_hide_form(form());
58 }
59
60 ButtonPolicy::SMInput FormSpellchecker::input(FL_OBJECT * obj, long)
61 {
62         if (obj == dialog_->replace) {
63                 string tmp = fl_get_input(dialog_->input);
64                 controller().replace(tmp);
65         } else if (obj == dialog_->start) {
66                 controller().check();
67                 stop(false);
68         } else if (obj == dialog_->stop) {
69                 controller().stop();
70                 stop(true);
71         } else if (obj == dialog_->ignore) {
72                 controller().check();
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);
84                 }
85                 clickline_ = sel;
86                 string tmp = fl_get_browser_line(dialog_->browser, clickline_);
87                 fl_set_input(dialog_->input, tmp.c_str());
88         }
89
90         return ButtonPolicy::SMI_VALID;
91 }
92
93 void FormSpellchecker::partialUpdate(int id)
94 {
95         switch (id) {
96         case 0:
97                 // set progress bar
98                 fl_set_slider_value(dialog_->slider,
99                                     controller().getProgress());
100                 break;
101         case 1:
102         {
103                 // set suggestions
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());
110                 }
111         }
112                 break;
113         case 2:
114                 // show exit message
115                 fl_show_messages(controller().getMessage().c_str());
116                 hide();
117         }
118         
119 }
120
121                 
122 void FormSpellchecker::showMessage(const char * msg)
123 {
124         fl_show_message(msg, "", "");
125 }
126
127 void FormSpellchecker::stop(bool stop)
128 {
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);
137 }