+void FormSpellchecker::updateState(State state)
+{
+ switch (state) {
+ case START:
+ fl_set_slider_value(dialog_->slider_progress, 0.0);
+ fl_set_object_label(dialog_->slider_progress, "0 %");
+ break;
+
+ case RUNNING:
+ {
+ controller().check();
+
+ int const progress = controller().getProgress();
+ if (progress == 0)
+ break;
+
+ double const wordcount = controller().getCount();
+ double const total = 100.0 * wordcount / progress;
+ string const label = tostr(progress) + " %";
+
+ fl_set_slider_bounds(dialog_->slider_progress, 0.0, total);
+ fl_set_slider_value(dialog_->slider_progress, wordcount);
+ fl_set_object_label(dialog_->slider_progress, label.c_str());
+ break;
+ }
+
+ case STOP:
+ {
+ controller().stop();
+
+ double const wordcount = controller().getCount();
+
+ // set slider 'finished' status
+ fl_set_slider_bounds(dialog_->slider_progress, 0.0, wordcount);
+ fl_set_slider_value(dialog_->slider_progress, wordcount);
+ fl_set_object_label(dialog_->slider_progress, "100 %");
+ break;
+ }
+ }
+
+ bool const state_change = state_ != state;
+ state_ = state;
+
+ if (!state_change)
+ return;
+
+ bool const set_running = (state == RUNNING);
+ string const label = set_running ? _("Stop") : _("Start");
+
+ fl_set_object_label(dialog_->button_start, label.c_str());
+ fl_set_button_shortcut(dialog_->button_start, "#S", 1);
+ fl_redraw_object(dialog_->button_start);
+
+ string const tip = set_running ?
+ _("Stop the spellingchecker.") :
+ _("Start the spellingchecker.");
+ tooltips().init(dialog_->button_start, tip);
+
+ setEnabled(dialog_->button_replace, set_running);
+ setEnabled(dialog_->button_ignore, set_running);
+ setEnabled(dialog_->button_accept, set_running);
+ setEnabled(dialog_->button_add, set_running);
+ setEnabled(dialog_->browser_suggestions, set_running);
+ setEnabled(dialog_->input_replacement, set_running);
+}
+
+