38 #ifndef Fl_Input_Choice_H
39 #define Fl_Input_Choice_H
42 #include <FL/Fl_Group.H>
43 #include <FL/Fl_Input.H>
44 #include <FL/Fl_Menu_Button.H>
65 int xc = x()+w()/2, yc=y()+h()/2;
70 InputMenuButton(
int x,
int y,
int w,
int h,
const char*l=0) :
75 InputMenuButton *menu_;
77 static void menu_cb(
Fl_Widget*,
void *data) {
81 if (item && item->
flags & (FL_SUBMENU|FL_SUBMENU_POINTER))
return;
82 if (!strcmp(o->inp_->
value(), o->menu_->text()))
84 o->Fl_Widget::clear_changed();
90 o->inp_->
value(o->menu_->text());
92 o->Fl_Widget::set_changed();
101 o->Fl_Widget::clear_changed();
106 static void inp_cb(
Fl_Widget*,
void *data) {
110 o->Fl_Widget::set_changed();
114 o->Fl_Widget::clear_changed();
122 o->Fl_Widget::clear_changed();
133 inline int menu_w() {
return(20); }
145 inp_ =
new Fl_Input(inp_x(), inp_y(),
147 inp_->callback(inp_cb, (
void*)
this);
150 menu_ =
new InputMenuButton(menu_x(), menu_y(),
152 menu_->callback(menu_cb, (
void*)
this);
158 void add(
const char *s) { menu_->add(s); }
161 inp_->clear_changed();
178 void resize(
int X,
int Y,
int W,
int H) {
180 inp_->resize(inp_x(), inp_y(), inp_w(), inp_h());
181 menu_->resize(menu_x(), menu_y(), menu_w(), menu_h());
196 const char*
value()
const {
return (inp_->value()); }
204 void value(
const char *val) { inp_->value(val); }
208 inp_->value(menu_->text(val));
218 #endif // !Fl_Input_Choice_H