+2001-07-17 Edwin Leuven <leuven@fee.uva.nl>
+
+ * sp_spell.C: repair language selection for pspell
+
2001-07-12 Lars Gullik Bjønnes <larsbj@birdstep.com>
* lyxfunc.h: change more methods to begin with lower char.
+2001-07-17 Angus Leeming <a.leeming@ic.ac.uk>
+
+ * ControlSpellchecker.[Ch]: remove d-tor.
+
+2001-07-17 Edwin Leuven <leuven@fee.uva.nl>
+
+ * ControlSpellchecker.[Ch]: remove member quit() and some cleaning
+
2001-07-16 Juergen Vigna <jug@sad.it>
* ControlSpellchecker.C (show): use the lyxrc.use_pspell flag (if
using SigC::slot;
ControlSpellchecker::ControlSpellchecker(LyXView & lv, Dialogs & d)
- : ControlDialog<ControlConnectBD>(lv, d)
+ : ControlDialog<ControlConnectBD>(lv, d),
+ rtl_(false), newval_(0.0), oldval_(0), newvalue_(0), count_(0),
+ stop_(false), result_(SpellBase::ISP_UNKNOWN), speller_(0)
{
d_.showSpellchecker.connect(SigC::slot(this, &ControlSpellchecker::show));
-
- rtl_ = false;
- word_ = "";
- newval_ = 0.0;
- oldval_ = 0;
- newvalue_ = 0;
- count_ = 0;
- message_ = "";
- stop_ = false;
- result_ = SpellBase::ISP_UNKNOWN;
- speller_ = 0;
-
-}
-
-
-ControlSpellchecker::~ControlSpellchecker()
-{
}
-void ControlSpellchecker::show()
+void ControlSpellchecker::setParams()
{
- if (isBufferDependent() && !lv_.view()->available())
- return;
-
if (!speller_) {
// create spell object
string tmp;
if (speller_->error() != 0) {
message_ = speller_->error();
+ // show error message
view().partialUpdate(2);
- hide();
+ clearParams();
return;
}
}
-
- bc().readOnly(isReadonly());
- view().show();
-}
-
-
-void ControlSpellchecker::hide()
-{
- delete speller_;
- speller_ = 0;
-
- disconnect();
- view().hide();
}
while (result_!=SpellBase::ISP_MISSED && !stop_) {
word_ = lv_.view()->nextWord(newval_);
+
if (word_.empty()) {
- quit();
+ clearParams();
break;
}
++count_;
-
+
// Update slider if and only if value has changed
newvalue_ = int(100.0*newval_);
if (newvalue_!= oldval_) {
view().partialUpdate(0);
}
- if (!speller_->alive()) quit();
+ if (!speller_->alive()) clearParams();
result_ = speller_->check(word_);
}
void ControlSpellchecker::stop()
{
stop_ = true;
+ lv_.view()->endOfSpellCheck();
}
-void ControlSpellchecker::quit()
+void ControlSpellchecker::clearParams()
{
+ if (!speller_) return;
+
if (speller_->alive()) {
speller_->close();
message_ = tostr(count_);
if (count_ != 1) {
message_ += _(" words checked.");
+
} else {
message_ += _(" word checked.");
}
message_ = "\n" + message_;
message_ = _("Spellchecking completed! ") + message_;
+
} else {
speller_->cleanUp();
message_ = _("The spell checker has died for some reason.\n"
- "Maybe it has been killed.");
+ "Maybe it has been killed.");
}
-
+
+ delete speller_;
+
lv_.view()->endOfSpellCheck();
- // hide dialog, disconnect and delete speller
- hide();
-
// show closing message
view().partialUpdate(2);
message_ = "";
stop_ = false;
result_ = SpellBase::ISP_UNKNOWN;
+ speller_ = 0;
}
{
lv_.getDialogs()->showSpellcheckerPreferences();
}
-
-
///
ControlSpellchecker(LyXView &, Dialogs &);
- ///
- ~ControlSpellchecker();
-
/// replace word with replacement
void replace(string const &);
/// ignore all occurances of word
void ignoreAll();
- /// quit spellchecker
- void quit();
-
/// stop checking
void stop();
private:
/// set the params before show or update
- void show();
-
+ void setParams();
/// clean-up on hide.
- void hide();
+ void clearParams();
/// not needed.
virtual void apply() {}
};
#endif // CONTROLSPELLCHECKER_H
-
-
#endif
#include "xformsBC.h"
+#include "xforms_helpers.h"
#include "ControlSpellchecker.h"
#include "FormSpellchecker.h"
#include "form_spellchecker.h"
bc().addReadOnly(dialog_->ignore);
bc().addReadOnly(dialog_->start);
bc().addReadOnly(dialog_->stop);
+ bc().addReadOnly(dialog_->browser);
}
void FormSpellchecker::update()
fl_set_object_label(dialog_->text, w.c_str());
fl_clear_browser(dialog_->browser);
fl_set_slider_value(dialog_->slider, 0);
- clickline_ = -1 ;
}
+void FormSpellchecker::hide()
+{
+ clickline_ = -1;
+
+ if (form() && form()->visible)
+ fl_hide_form(form());
+}
ButtonPolicy::SMInput FormSpellchecker::input(FL_OBJECT * obj, long)
{
controller().replace(tmp);
} else if (obj == dialog_->start) {
controller().check();
- fl_deactivate_object(dialog_->start);
- fl_set_object_lcol(dialog_->start, FL_INACTIVE);
+ stop(false);
+ } else if (obj == dialog_->stop) {
+ controller().stop();
+ stop(true);
} else if (obj == dialog_->ignore) {
controller().check();
} else if (obj == dialog_->accept) {
controller().ignoreAll();
} else if (obj == dialog_->insert) {
controller().insert();
- } else if (obj == dialog_->done) {
- controller().quit();
} else if (obj == dialog_->options) {
controller().options();
} else if (obj == dialog_->browser) {
void FormSpellchecker::partialUpdate(int id)
{
- // set suggestions
- if (id==0) {
- // set progress bar (always)
+ switch (id) {
+ case 0:
+ // set progress bar
fl_set_slider_value(dialog_->slider,
controller().getProgress());
- } else if (id==1) {
+ break;
+ case 1:
+ {
+ // set suggestions
string w = controller().getWord();
fl_set_input(dialog_->input, w.c_str());
fl_set_object_label(dialog_->text, w.c_str());
fl_clear_browser(dialog_->browser);
- while (!(w = controller().getSuggestion()).empty() ) {
+ while ( !(w = controller().getSuggestion()).empty() ) {
fl_add_browser_line(dialog_->browser, w.c_str());
}
- } else if (id==2) {
+ }
+ break;
+ case 2:
+ // show exit message
fl_show_messages(controller().getMessage().c_str());
+ hide();
}
+
}
fl_show_message(msg, "", "");
}
-// note there is a button accept in session
-// it is not clear whether this is ingoreall or replaceall
-
-
+void FormSpellchecker::stop(bool stop)
+{
+ setEnabled(dialog_->start, stop);
+ setEnabled(dialog_->replace, !stop);
+ setEnabled(dialog_->ignore, !stop);
+ setEnabled(dialog_->accept, !stop);
+ setEnabled(dialog_->insert, !stop);
+ setEnabled(dialog_->stop, !stop);
+ setEnabled(dialog_->browser, !stop);
+ setEnabled(dialog_->input, !stop);
+}
private:
/// not needed.
- virtual void apply() {}
+ void apply() {}
/// Build the dialog
- virtual void build();
- /// not needed.
- virtual void update();
-
- /// update progress bar and suggestions
+ void build();
+ ///
+ void update();
+ ///
+ void hide();
+
+ /// enable/disable widgets when start/stop
+ void stop(bool);
+
+ /// update progress bar, set suggestions, exit message
void partialUpdate(int);
/// show an error message
void showMessage(const char * msg);
- /// line clicked in browser, necessart for double clicking
+ /// line clicked in browser, necessary for double clicking
int clickline_;
/// Filter the inputs
fdui->input = obj = fl_add_input(FL_NORMAL_INPUT, 80, 40, 220, 30, _("Replace"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseInputCB, 0);
- fdui->browser = obj = fl_add_browser(FL_SELECT_BROWSER, 80, 70, 220, 150, _("Near\nMisses"));
+ fdui->browser = obj = fl_add_browser(FL_SELECT_BROWSER, 80, 70, 220, 150, _("Suggestions"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_lalign(obj, FL_ALIGN_LEFT);
+ fl_set_object_callback(obj, C_FormBaseInputCB, 0);
{
char const * const dummy = N_("Spellchecker Options...|#O");
fdui->options = obj = fl_add_button(FL_NORMAL_BUTTON, 310, 210, 220, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
- fl_set_object_callback(obj, C_FormBaseInputCB, 0);
+ fl_set_object_callback(obj, C_FormBaseCancelCB, 0);
// xgettext:no-c-format
obj = fl_add_box(FL_NO_BOX, 10, 250, 50, 20, _("0 %"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
/** Callbacks, globals and object handlers **/
extern "C" void C_FormBaseInputCB(FL_OBJECT *, long);
+extern "C" void C_FormBaseCancelCB(FL_OBJECT *, long);
/**** Forms and Objects ****/
style: FL_NORMAL_STYLE
size: FL_NORMAL_SIZE
lcol: FL_BLACK
-label: Near\nMisses
+label: Suggestions
shortcut:
resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity
name: browser
-callback:
-argument:
+callback: C_FormBaseInputCB
+argument: 0
--------------------
class: FL_BUTTON
resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity
name: done
-callback: C_FormBaseInputCB
+callback: C_FormBaseCancelCB
argument: 0
--------------------
PSpell::PSpell()
+ : els(0), sc(0), spell_error_object(0), flag(ISP_UNKNOWN)
{
- els = 0;
- sc = 0;
- spell_error_object = 0;
- flag = ISP_UNKNOWN;
}
PSpell::PSpell(BufferParams const & params, string const & lang)
+ : els(0), sc(0), spell_error_object(0), flag(ISP_UNKNOWN)
{
- els = 0;
- sc = 0;
- spell_error_object = 0;
- flag = ISP_UNKNOWN;
initialize(params, lang);
}
void PSpell::initialize(BufferParams const &, string const & lang)
{
PspellConfig * config = new_pspell_config();
- string code;
- split(lang, code, '_');
- config->replace("language-tag", code.c_str());
+ config->replace("language-tag", lang.c_str());
spell_error_object = new_pspell_manager(config);
if (pspell_error_number(spell_error_object) != 0) {
error_ = pspell_error_message(spell_error_object);