3 * Copyright (C) 2007, Harbour, All rights reserved.
9 #include <F_Text_Display.H>
11 #include <F_Menu_Item.H>
16 class F_Menu : public F_Widget {
18 F_Group <F_Menu_Item *> items;
19 const F_Menu_Item *value_;
20 // int type; // F_HORIZONTAL/F_VERTICAL
21 F_Button_State_t state_;
25 bool handle(F_Event_t &ev);
29 F_Menu(coord_t x, coord_t y, dim_t w, dim_t h,
30 const char *label = 0) : F_Widget(x, y, w + 1, h + 1, label) {
32 state_ = F_BUTTON_NORMAL;
35 ~F_Menu() { clear(); }
36 int size() { return items.size(); }
39 for (int i = 0; i < size(); i++)
42 int add(const char *l, F_Callback *cb = 0, void *d = 0) {
43 F_Menu_Item *mi = new F_Menu_Item(l, cb, d);
44 items.push_back(mi, items.size());
47 return items.size() - 1;
50 void mode(int i, int flags) { items[i]->flags = flags; }
51 const F_Menu_Item *value() const { return value_; }
52 int value(int i) { return items[i]->value(); }
53 void set(int i) { return items[i]->set(); }
54 const char *text() const { return value_ ? value_->text() : 0; }
55 const char *text(int i) { return items[i]->text(); }
56 void callback(int i, F_Callback *cb, void *d = 0) {
57 items[i]->callback(cb, d);
59 friend class F_Menu_Button;