5 #include FORMS_H_LOCATION
11 #include "ButtonController.h"
12 #include "support/LAssert.h"
13 #include "gettext.h" // _()
19 ButtonController::ButtonController(ButtonPolicy * bp,
20 char const * cancel, char const * close)
21 : bp_(bp), okay_(0), apply_(0), cancel_(0), undo_all_(0),
22 read_only_(), trigger_change_(),
23 cancel_label(cancel), close_label(close)
29 void ButtonController::refresh()
32 if (bp_->buttonStatus(ButtonPolicy::OKAY)) {
33 fl_activate_object(okay_);
34 fl_set_object_lcol(okay_, FL_BLACK);
36 fl_deactivate_object(okay_);
37 fl_set_object_lcol(okay_, FL_INACTIVE);
41 if (bp_->buttonStatus(ButtonPolicy::APPLY)) {
42 fl_activate_object(apply_);
43 fl_set_object_lcol(apply_, FL_BLACK);
45 fl_deactivate_object(apply_);
46 fl_set_object_lcol(apply_, FL_INACTIVE);
50 if (bp_->buttonStatus(ButtonPolicy::UNDO_ALL)) {
51 fl_activate_object(undo_all_);
52 fl_set_object_lcol(undo_all_, FL_BLACK);
54 fl_deactivate_object(undo_all_);
55 fl_set_object_lcol(undo_all_,
60 if (bp_->buttonStatus(ButtonPolicy::CANCEL)) {
61 fl_set_object_label(cancel_,
64 fl_set_object_label(cancel_,
68 if (!read_only_.empty()) {
69 if (bp_->isReadOnly()) {
70 std::list<FL_OBJECT *>::iterator
71 end = read_only_.end();
72 for (std::list<FL_OBJECT *>::iterator
73 iter = read_only_.begin();
76 fl_deactivate_object(*iter);
77 fl_set_object_lcol(*iter,
81 std::list<FL_OBJECT *>::iterator
82 end = read_only_.end();
83 for (std::list<FL_OBJECT *>::iterator
84 iter = read_only_.begin();
87 fl_activate_object(*iter);
88 fl_set_object_lcol(*iter,
96 void ButtonController::input(ButtonPolicy::SMInput in)
98 //lyxerr << "ButtonController::input: bp_[" << bp_ << "]" << endl;
104 void ButtonController::ok()
106 input(ButtonPolicy::SMI_OKAY);
110 void ButtonController::apply()
112 input(ButtonPolicy::SMI_APPLY);
116 void ButtonController::cancel()
118 input(ButtonPolicy::SMI_CANCEL);
122 void ButtonController::undoAll()
124 input(ButtonPolicy::SMI_UNDO_ALL);
128 void ButtonController::hide()
130 input(ButtonPolicy::SMI_HIDE);
134 bool ButtonController::readOnly(bool ro)
137 input(ButtonPolicy::SMI_READ_ONLY);
139 input(ButtonPolicy::SMI_READ_WRITE);
145 void ButtonController::readWrite()
151 bool ButtonController::valid(bool v, FL_OBJECT * obj)
153 if (obj && !trigger_change_.empty()) {
154 vector<FL_OBJECT *>::const_iterator cit =
155 find(trigger_change_.begin(), trigger_change_.end(),
158 // Only trigger a change if the obj is in the list
159 if (cit != trigger_change_.end()) {
161 input(ButtonPolicy::SMI_VALID);
163 input(ButtonPolicy::SMI_INVALID);
168 input(ButtonPolicy::SMI_VALID);
170 input(ButtonPolicy::SMI_INVALID);
178 void ButtonController::invalid()