Initial commit
[forms.git] / F / F_Menu_Item.H
blob9aacd4a12a099f0a5f722fed1fd7ead7c217624b
2 #ifndef _F_MENU_ITEM_H_
3 #define _F_MENU_ITEM_H_
5 namespace F {
7 // fltk - ËÁË ÍÎÏÇÏ × ÜÔÏÍ ÓÌÏ×Å ...
9 enum { // values for flags:
10   F_MENU_INACTIVE =     1,
11   F_MENU_TOGGLE=        2,
12   F_MENU_VALUE =        4,
13   F_MENU_RADIO =        8,
14   F_MENU_INVISIBLE =    0x10,
15   F_SUBMENU_POINTER =   0x20,
16   F_SUBMENU =           0x40,
17   F_MENU_DIVIDER =      0x80,
18   F_MENU_HORIZONTAL =   0x100
21 class F_Menu_Item {
23   std::string label_;
24   F_Callback *callback_;
25   void *user_data_;
26   int flags;
28  public:
30   F_Menu_Item() { user_data_ = 0; flags = 0; callback_ = 0; }
31   F_Menu_Item(const char *l, F_Callback *cb, void *d) {
32     user_data_ = d;
33     flags = 0;
34     callback_ = cb;
35     text(l);
36  }
37   const char *text() const { return label_.c_str(); }
38   void text(const char *a) { if (a) label_ = a; }
39   void *user_data() const { return user_data_; }
40   void user_data(void *v) { user_data_ = v; }
41   int submenu() const { return flags & (F_SUBMENU | F_SUBMENU_POINTER); }
42   int checkbox() const { return flags & F_MENU_TOGGLE; }
43   int radio() const { return flags & F_MENU_RADIO; }
44   int value() const { return flags & F_MENU_VALUE; }
45   void set() { flags |= F_MENU_VALUE; }
46   void clear() { flags &= ~F_MENU_VALUE; }
47   void callback(F_Callback *cb, void *d = 0) {
48     callback_ = cb;
49     user_data_ = d;
50  }
51   // left for submenu
52   void add(const char *l, F_Callback *cb = 0, void *data = 0) {
53     label_ = l;
54     callback_ = cb;
55     user_data_ = data;
56  }
57    friend class F_Menu;
58  };
61 #endif