#endif
-#include "gettext.h"
#include "Dialogs.h"
#include "FormIndex.h"
#include "LyXView.h"
#include "lyxfunc.h"
FormIndex::FormIndex(LyXView * lv, Dialogs * d)
- : FormCommand(lv, d, _("Index")), minh(0), minw(0), dialog_(0)
+ : FormCommand(lv, d, _("Index"), new NoRepeatedApplyPolicy),
+ dialog_(0)
{
// let the dialog be shown
// These are permanent connections so we won't bother
}
+FL_FORM * FormIndex::form() const
+{
+ if (dialog_) return dialog_->form;
+ return 0;
+}
+
+
+void FormIndex::connect()
+{
+ fl_set_form_maxsize(form(), 2 * minw_, minh_);
+ FormCommand::connect();
+}
+
+
void FormIndex::build()
{
dialog_ = build_index();
- // XFORMS bug workaround
- // Define the min/max dimensions. Actually applied in update()
- minw = form()->w; minh = form()->h;
-}
+ // Workaround dumb xforms sizing bug
+ minw_ = form()->w;
+ minh_ = form()->h;
+ fl_set_input_return(dialog_->input_key, FL_RETURN_CHANGED);
-FL_FORM * const FormIndex::form() const
-{
- if( dialog_ ) // no need to test for dialog_->form
- return dialog_->form;
- else
- return 0;
+ // Manage the ok, apply, restore and cancel/close buttons
+ bc_.setOK(dialog_->button_ok);
+ bc_.setApply(dialog_->button_apply);
+ bc_.setCancel(dialog_->button_cancel);
+ bc_.setUndoAll(dialog_->button_restore);
+ bc_.refresh();
+
+ bc_.addReadOnly(dialog_->input_key);
}
void FormIndex::update()
{
- fl_set_form_minsize(form(), minw, minh);
- fl_set_form_maxsize(form(), 2*minw, minh);
-
- fl_set_input(dialog_->key, params.getContents().c_str());
-
- if( lv_->buffer()->isReadonly() ) {
- fl_deactivate_object( dialog_->key );
- fl_deactivate_object( dialog_->ok );
- fl_set_object_lcol( dialog_->ok, FL_INACTIVE );
- } else {
- fl_activate_object( dialog_->key );
- fl_activate_object( dialog_->ok );
- fl_set_object_lcol( dialog_->ok, FL_BLACK );
- }
+ fl_set_input(dialog_->input_key, params.getContents().c_str());
+ // Surely, this should reset the buttons to their original state?
+ // It doesn't. Instead "Restore" becomes a "Close"
+ //bc_.refresh();
+ bc_.readOnly(lv_->buffer()->isReadonly());
}
void FormIndex::apply()
{
- if(lv_->buffer()->isReadonly()) return;
+ if (lv_->buffer()->isReadonly()) return;
- params.setContents(fl_get_input(dialog_->key));
+ params.setContents(fl_get_input(dialog_->input_key));
if (inset_ != 0) {
// Only update if contents have changed