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