3 #include FORMS_H_LOCATION
9 #include "ButtonController.h"
10 #include "support/LAssert.h"
11 #include "gettext.h" // _()
17 ButtonController::ButtonController(ButtonPolicy * bp,
18 char const * cancel, char const * close)
19 : bp_(bp), okay_(0), apply_(0), cancel_(0), undo_all_(0),
20 read_only_(), trigger_change_(),
21 cancel_label(cancel), close_label(close)
27 void ButtonController::refresh()
30 if (bp_->buttonStatus(ButtonPolicy::OKAY)) {
31 fl_activate_object(okay_);
32 fl_set_object_lcol(okay_, FL_BLACK);
34 fl_deactivate_object(okay_);
35 fl_set_object_lcol(okay_, FL_INACTIVE);
39 if (bp_->buttonStatus(ButtonPolicy::APPLY)) {
40 fl_activate_object(apply_);
41 fl_set_object_lcol(apply_, FL_BLACK);
43 fl_deactivate_object(apply_);
44 fl_set_object_lcol(apply_, FL_INACTIVE);
48 if (bp_->buttonStatus(ButtonPolicy::UNDO_ALL)) {
49 fl_activate_object(undo_all_);
50 fl_set_object_lcol(undo_all_, FL_BLACK);
52 fl_deactivate_object(undo_all_);
53 fl_set_object_lcol(undo_all_,
58 if (bp_->buttonStatus(ButtonPolicy::CANCEL)) {
59 fl_set_object_label(cancel_,
62 fl_set_object_label(cancel_,
66 if (!read_only_.empty()) {
67 if (bp_->isReadOnly()) {
68 std::list<FL_OBJECT *>::iterator
69 end = read_only_.end();
70 for (std::list<FL_OBJECT *>::iterator
71 iter = read_only_.begin();
74 fl_deactivate_object(*iter);
75 fl_set_object_lcol(*iter,
79 std::list<FL_OBJECT *>::iterator
80 end = read_only_.end();
81 for (std::list<FL_OBJECT *>::iterator
82 iter = read_only_.begin();
85 fl_activate_object(*iter);
86 fl_set_object_lcol(*iter,
94 void ButtonController::input(ButtonPolicy::SMInput in)
96 //lyxerr << "ButtonController::input: bp_[" << bp_ << "]" << endl;
102 void ButtonController::ok()
104 input(ButtonPolicy::SMI_OKAY);
108 void ButtonController::apply()
110 input(ButtonPolicy::SMI_APPLY);
114 void ButtonController::cancel()
116 input(ButtonPolicy::SMI_CANCEL);
120 void ButtonController::undoAll()
122 input(ButtonPolicy::SMI_UNDO_ALL);
126 void ButtonController::hide()
128 input(ButtonPolicy::SMI_HIDE);
132 bool ButtonController::readOnly(bool ro)
135 input(ButtonPolicy::SMI_READ_ONLY);
137 input(ButtonPolicy::SMI_READ_WRITE);
143 void ButtonController::readWrite()
149 bool ButtonController::valid(bool v, FL_OBJECT * obj)
151 if (obj && !trigger_change_.empty()) {
152 vector<FL_OBJECT *>::const_iterator cit =
153 find(trigger_change_.begin(), trigger_change_.end(),
156 // Only trigger a change if the obj is in the list
157 if (cit != trigger_change_.end()) {
159 input(ButtonPolicy::SMI_VALID);
161 input(ButtonPolicy::SMI_INVALID);
166 input(ButtonPolicy::SMI_VALID);
168 input(ButtonPolicy::SMI_INVALID);
176 void ButtonController::invalid()