3 #define E_MENU_POP_DIRECTION_NONE 0
4 #define E_MENU_POP_DIRECTION_LEFT 1
5 #define E_MENU_POP_DIRECTION_RIGHT 2
6 #define E_MENU_POP_DIRECTION_UP 3
7 #define E_MENU_POP_DIRECTION_DOWN 4
8 #define E_MENU_POP_DIRECTION_AUTO 5
9 #define E_MENU_POP_DIRECTION_LAST 6
11 typedef struct _E_Menu E_Menu;
12 typedef struct _E_Menu_Item E_Menu_Item;
13 typedef struct _E_Menu_Category_Callback E_Menu_Category_Callback;
20 #define E_MENU_TYPE 0xE0b01009
22 #define E_MENU_ITEM_TYPE 0xE0b0100a
24 typedef void (*E_Menu_Cb) (void *data, E_Menu *m, E_Menu_Item *mi);
29 E_Object e_obj_inherit;
42 const char *icon_file;
48 /* the zone it belongs to */
51 /* if a menu item spawned this menu, what item is it? */
52 E_Menu_Item *parent_item;
54 /* only useful if realized != 0 (ie menu is ACTUALLY realized) */
55 Ecore_Evas *ecore_evas;
57 Ecore_X_Window evas_win;
58 Evas_Object *bg_object;
59 Evas_Object *container_object;
60 Evas_Coord container_x, container_y, container_w, container_h;
61 E_Container_Shape *shape;
63 Ecore_X_Rectangle *shape_rects;
67 void (*func) (void *data, E_Menu *m);
68 } pre_activate_cb, post_deactivate_cb;
70 unsigned char realized : 1; /* 1 if it is realized */
71 unsigned char active : 1; /* 1 if it is in active list */
72 unsigned char changed : 1;
73 unsigned char fast_mouse : 1;
74 unsigned char pending_new_submenu : 1;
75 unsigned char have_submenu : 1;
76 unsigned char in_active_list : 1;
77 unsigned char shaped : 1;
78 unsigned char need_shape_export : 1;
83 E_Object e_obj_inherit;
90 Evas_Object *separator_object;
92 Evas_Object *bg_object;
94 Evas_Object *container_object;
96 Evas_Object *toggle_object;
97 Evas_Object *icon_bg_object;
98 Evas_Object *icon_object;
99 Evas_Object *label_object;
100 Evas_Object *submenu_object;
102 Evas_Object *event_object;
104 Eina_List *list_position;
106 int label_w, label_h;
108 int separator_w, separator_h;
109 int submenu_w, submenu_h;
110 int toggle_w, toggle_h;
117 } cb; /* Callback for menu item activation */
122 } realize_cb; /* Callback for menu item icon realization */
137 } drag_cb; /* Callback for menu item dragging */
143 unsigned char separator : 1;
144 unsigned char radio : 1;
145 unsigned char check : 1;
146 unsigned char toggle : 1;
147 unsigned char changed : 1;
148 unsigned char active : 1;
149 unsigned char disable : 1;
152 struct _E_Menu_Category_Callback
154 const char *category;
156 void (*create) (E_Menu *m, void *category_data, void *data);
157 void (*free) (void *data);
161 EINTERN int e_menu_init(void);
162 EINTERN int e_menu_shutdown(void);
164 EAPI E_Menu *e_menu_new(void);
165 EAPI void e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir);
166 EAPI void e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir, Ecore_X_Time activate_time);
167 EAPI void e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir);
168 EAPI void e_menu_deactivate(E_Menu *m);
169 EAPI int e_menu_freeze(E_Menu *m);
170 EAPI int e_menu_thaw(E_Menu *m);
171 EAPI void e_menu_title_set(E_Menu *m, const char *title);
172 EAPI void e_menu_icon_file_set(E_Menu *m, const char *icon);
174 /* menu categories functions */
175 EAPI void e_menu_category_set(E_Menu *m, const char *category);
176 EAPI void e_menu_category_data_set(char *category, void *data);
177 EAPI E_Menu_Category_Callback *e_menu_category_callback_add(char *category, void (*create) (E_Menu *m, void *category_data, void *data), void (free) (void *data), void *data);
178 EAPI void e_menu_category_callback_del(E_Menu_Category_Callback *cb);
181 EAPI void e_menu_pre_activate_callback_set(E_Menu *m, void (*func) (void *data, E_Menu *m), void *data);
182 EAPI void e_menu_post_deactivate_callback_set(E_Menu *m, void (*func) (void *data, E_Menu *m), void *data);
184 EAPI E_Menu *e_menu_root_get(E_Menu *m);
186 EAPI E_Menu_Item *e_menu_item_new(E_Menu *m);
187 EAPI E_Menu_Item *e_menu_item_new_relative(E_Menu *m, E_Menu_Item *rel);
188 EAPI E_Menu_Item *e_menu_item_nth(E_Menu *m, int n);
189 EAPI int e_menu_item_num_get(const E_Menu_Item *mi);
190 EAPI void e_menu_item_icon_file_set(E_Menu_Item *mi, const char *icon);
191 EAPI void e_menu_item_icon_edje_set(E_Menu_Item *mi, const char *icon, const char *key);
192 EAPI void e_menu_item_label_set(E_Menu_Item *mi, const char *label);
193 EAPI void e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub);
194 EAPI void e_menu_item_separator_set(E_Menu_Item *mi, int sep);
195 EAPI void e_menu_item_check_set(E_Menu_Item *mi, int chk);
196 EAPI void e_menu_item_radio_set(E_Menu_Item *mi, int rad);
197 EAPI void e_menu_item_radio_group_set(E_Menu_Item *mi, int radg);
198 EAPI void e_menu_item_toggle_set(E_Menu_Item *mi, int tog);
199 EAPI int e_menu_item_toggle_get(E_Menu_Item *mi);
200 EAPI void e_menu_item_callback_set(E_Menu_Item *mi, E_Menu_Cb func, const void *data);
201 EAPI void e_menu_item_realize_callback_set(E_Menu_Item *mi, E_Menu_Cb func, void *data);
202 EAPI void e_menu_item_submenu_pre_callback_set(E_Menu_Item *mi, E_Menu_Cb func, const void *data);
203 EAPI void e_menu_item_submenu_post_callback_set(E_Menu_Item *mi, E_Menu_Cb func, const void *data);
204 EAPI void e_menu_item_drag_callback_set(E_Menu_Item *mi, E_Menu_Cb func, void *data);
205 EAPI E_Menu_Item *e_menu_item_active_get(void);
206 EAPI void e_menu_active_item_activate(void);
207 EAPI void e_menu_item_active_set(E_Menu_Item *mi, int active);
208 EAPI void e_menu_item_disabled_set(E_Menu_Item *mi, int disable);
210 EAPI void e_menu_idler_before(void);
212 EAPI Ecore_X_Window e_menu_grab_window_get(void);
214 EAPI E_Menu *e_menu_find_by_window(Ecore_X_Window win);