2005-02-07 05:51:09 -08:00
|
|
|
/*
|
|
|
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
|
|
|
*/
|
2005-01-12 08:03:09 -08:00
|
|
|
#ifdef E_TYPEDEFS
|
|
|
|
|
|
|
|
#define E_MENU_POP_DIRECTION_NONE 0
|
|
|
|
#define E_MENU_POP_DIRECTION_LEFT 1
|
|
|
|
#define E_MENU_POP_DIRECTION_RIGHT 2
|
|
|
|
#define E_MENU_POP_DIRECTION_UP 3
|
|
|
|
#define E_MENU_POP_DIRECTION_DOWN 4
|
|
|
|
#define E_MENU_POP_DIRECTION_AUTO 5
|
|
|
|
#define E_MENU_POP_DIRECTION_LAST 6
|
2004-11-24 19:37:45 -08:00
|
|
|
|
|
|
|
typedef struct _E_Menu E_Menu;
|
|
|
|
typedef struct _E_Menu_Item E_Menu_Item;
|
2006-01-08 08:38:01 -08:00
|
|
|
typedef struct _E_Menu_Category_Callback E_Menu_Category_Callback;
|
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
|
2005-01-12 08:03:09 -08:00
|
|
|
#else
|
|
|
|
#ifndef E_MENU_H
|
|
|
|
#define E_MENU_H
|
|
|
|
|
2005-01-21 22:58:34 -08:00
|
|
|
#define E_MENU_TYPE 0xE0b01009
|
|
|
|
|
|
|
|
#define E_MENU_ITEM_TYPE 0xE0b0100a
|
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
struct _E_Menu
|
|
|
|
{
|
|
|
|
E_Object e_obj_inherit;
|
|
|
|
|
2006-03-02 04:03:48 -08:00
|
|
|
const char *category;
|
2006-01-06 15:45:13 -08:00
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
struct {
|
|
|
|
char visible : 1;
|
|
|
|
int x, y, w, h;
|
|
|
|
} cur, prev;
|
|
|
|
|
|
|
|
int frozen;
|
|
|
|
|
|
|
|
struct {
|
2006-03-02 04:03:48 -08:00
|
|
|
const char *title;
|
|
|
|
const char *icon_file;
|
2004-11-24 19:37:45 -08:00
|
|
|
Evas_Object *icon;
|
|
|
|
} header;
|
|
|
|
|
|
|
|
Evas_List *items;
|
|
|
|
|
2005-01-03 01:34:24 -08:00
|
|
|
/* the zone it belongs to */
|
2005-01-11 05:43:01 -08:00
|
|
|
E_Zone *zone;
|
2004-11-24 19:37:45 -08:00
|
|
|
|
|
|
|
/* if a menu item spawned this menu, what item is it? */
|
|
|
|
E_Menu_Item *parent_item;
|
|
|
|
|
|
|
|
/* only useful if realized != 0 (ie menu is ACTUALLY realized) */
|
|
|
|
Ecore_Evas *ecore_evas;
|
|
|
|
Evas *evas;
|
|
|
|
Ecore_X_Window evas_win;
|
|
|
|
Evas_Object *bg_object;
|
|
|
|
Evas_Object *container_object;
|
|
|
|
Evas_Coord container_x, container_y, container_w, container_h;
|
|
|
|
E_Container_Shape *shape;
|
2005-06-27 03:08:53 -07:00
|
|
|
int shape_rects_num;
|
|
|
|
Ecore_X_Rectangle *shape_rects;
|
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
struct {
|
|
|
|
void *data;
|
|
|
|
void (*func) (void *data, E_Menu *m);
|
|
|
|
} pre_activate_cb, post_deactivate_cb;
|
|
|
|
|
|
|
|
unsigned char realized : 1; /* 1 if it is realized */
|
|
|
|
unsigned char active : 1; /* 1 if it is in active list */
|
|
|
|
unsigned char changed : 1;
|
|
|
|
unsigned char fast_mouse : 1;
|
|
|
|
unsigned char pending_new_submenu : 1;
|
|
|
|
unsigned char have_submenu : 1;
|
|
|
|
unsigned char in_active_list : 1;
|
2005-04-13 08:52:34 -07:00
|
|
|
unsigned char shaped : 1;
|
|
|
|
unsigned char need_shape_export : 1;
|
2004-11-24 19:37:45 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _E_Menu_Item
|
|
|
|
{
|
|
|
|
E_Object e_obj_inherit;
|
|
|
|
E_Menu *menu;
|
2006-03-02 04:03:48 -08:00
|
|
|
const char *icon;
|
|
|
|
const char *icon_key;
|
|
|
|
const char *label;
|
2004-11-24 19:37:45 -08:00
|
|
|
E_Menu *submenu;
|
|
|
|
|
|
|
|
Evas_Object *separator_object;
|
|
|
|
|
|
|
|
Evas_Object *bg_object;
|
|
|
|
|
|
|
|
Evas_Object *container_object;
|
|
|
|
|
|
|
|
Evas_Object *toggle_object;
|
|
|
|
Evas_Object *icon_bg_object;
|
|
|
|
Evas_Object *icon_object;
|
|
|
|
Evas_Object *label_object;
|
|
|
|
Evas_Object *submenu_object;
|
2006-07-02 09:19:51 -07:00
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
Evas_Object *event_object;
|
2006-09-03 04:32:13 -07:00
|
|
|
|
|
|
|
E_App *app; /* For when this item is used for an app. Experimental, if this makes it into cvs, kill onefang. */
|
2006-10-08 01:25:08 -07:00
|
|
|
|
|
|
|
Evas_List *list_position;
|
2004-11-24 19:37:45 -08:00
|
|
|
|
|
|
|
int label_w, label_h;
|
|
|
|
int icon_w, icon_h;
|
|
|
|
int separator_w, separator_h;
|
|
|
|
int submenu_w, submenu_h;
|
|
|
|
int toggle_w, toggle_h;
|
|
|
|
int radio_group;
|
|
|
|
int x, y, w, h;
|
|
|
|
|
|
|
|
struct {
|
|
|
|
void *data;
|
|
|
|
void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
|
2006-08-21 13:03:09 -07:00
|
|
|
} cb; /* Callback for menu item activation */
|
|
|
|
|
|
|
|
struct {
|
|
|
|
void *data;
|
|
|
|
void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
} realize_cb; /* Callback for menu item icon realization */
|
2005-04-21 00:19:49 -07:00
|
|
|
|
|
|
|
struct {
|
|
|
|
void *data;
|
|
|
|
void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
} submenu_pre_cb;
|
|
|
|
|
|
|
|
struct {
|
|
|
|
void *data;
|
|
|
|
void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
} submenu_post_cb;
|
|
|
|
|
2006-08-22 01:38:24 -07:00
|
|
|
struct {
|
|
|
|
void *data;
|
|
|
|
void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
} drag_cb; /* Callback for menu item dragging */
|
|
|
|
|
|
|
|
struct {
|
|
|
|
int x, y;
|
|
|
|
} drag;
|
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
unsigned char separator : 1;
|
|
|
|
unsigned char radio : 1;
|
|
|
|
unsigned char check : 1;
|
|
|
|
unsigned char toggle : 1;
|
|
|
|
unsigned char changed : 1;
|
|
|
|
unsigned char active : 1;
|
|
|
|
};
|
|
|
|
|
2006-01-08 08:38:01 -08:00
|
|
|
struct _E_Menu_Category_Callback
|
|
|
|
{
|
|
|
|
const char *category;
|
|
|
|
void *data;
|
|
|
|
void (*create) (E_Menu *m, void *category_data, void *data);
|
|
|
|
void (*free) (void *data);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI int e_menu_init(void);
|
|
|
|
EAPI int e_menu_shutdown(void);
|
2004-11-24 19:37:45 -08:00
|
|
|
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI E_Menu *e_menu_new(void);
|
2005-01-11 05:43:01 -08:00
|
|
|
EAPI void e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir);
|
2005-07-25 02:55:47 -07:00
|
|
|
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);
|
2005-01-11 05:43:01 -08:00
|
|
|
EAPI void e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir);
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI void e_menu_deactivate(E_Menu *m);
|
|
|
|
EAPI int e_menu_freeze(E_Menu *m);
|
|
|
|
EAPI int e_menu_thaw(E_Menu *m);
|
|
|
|
EAPI void e_menu_title_set(E_Menu *m, char *title);
|
|
|
|
EAPI void e_menu_icon_file_set(E_Menu *m, char *icon);
|
2006-01-06 15:45:13 -08:00
|
|
|
|
|
|
|
/* menu categories functions */
|
|
|
|
EAPI void e_menu_category_set(E_Menu *m, char *category);
|
|
|
|
EAPI void e_menu_category_data_set(char *category, void *data);
|
2006-01-08 08:38:01 -08:00
|
|
|
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);
|
|
|
|
EAPI void e_menu_category_callback_del(E_Menu_Category_Callback *cb);
|
2006-01-06 15:45:13 -08:00
|
|
|
|
|
|
|
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI void e_menu_pre_activate_callback_set(E_Menu *m, void (*func) (void *data, E_Menu *m), void *data);
|
|
|
|
EAPI void e_menu_post_deactivate_callback_set(E_Menu *m, void (*func) (void *data, E_Menu *m), void *data);
|
2004-11-24 19:37:45 -08:00
|
|
|
|
2004-12-22 02:41:03 -08:00
|
|
|
EAPI E_Menu *e_menu_root_get(E_Menu *m);
|
|
|
|
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI E_Menu_Item *e_menu_item_new(E_Menu *m);
|
|
|
|
EAPI E_Menu_Item *e_menu_item_nth(E_Menu *m, int n);
|
|
|
|
EAPI int e_menu_item_num_get(E_Menu_Item *mi);
|
2005-05-19 20:09:44 -07:00
|
|
|
EAPI void e_menu_item_icon_file_set(E_Menu_Item *mi, const char *icon);
|
|
|
|
EAPI void e_menu_item_icon_edje_set(E_Menu_Item *mi, const char *icon, const char *key);
|
|
|
|
EAPI void e_menu_item_label_set(E_Menu_Item *mi, const char *label);
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI void e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub);
|
|
|
|
EAPI void e_menu_item_separator_set(E_Menu_Item *mi, int sep);
|
|
|
|
EAPI void e_menu_item_check_set(E_Menu_Item *mi, int chk);
|
|
|
|
EAPI void e_menu_item_radio_set(E_Menu_Item *mi, int rad);
|
|
|
|
EAPI void e_menu_item_radio_group_set(E_Menu_Item *mi, int radg);
|
|
|
|
EAPI void e_menu_item_toggle_set(E_Menu_Item *mi, int tog);
|
|
|
|
EAPI int e_menu_item_toggle_get(E_Menu_Item *mi);
|
|
|
|
EAPI void e_menu_item_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
|
2006-08-21 13:03:09 -07:00
|
|
|
EAPI void e_menu_item_realize_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
|
2005-04-21 00:19:49 -07:00
|
|
|
EAPI void e_menu_item_submenu_pre_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
|
|
|
|
EAPI void e_menu_item_submenu_post_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
|
2006-08-22 01:38:24 -07:00
|
|
|
EAPI void e_menu_item_drag_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI void e_menu_item_active_set(E_Menu_Item *mi, int active);
|
2004-11-24 19:37:45 -08:00
|
|
|
|
2004-11-24 21:31:21 -08:00
|
|
|
EAPI void e_menu_idler_before(void);
|
2005-01-01 18:39:44 -08:00
|
|
|
|
|
|
|
EAPI Ecore_X_Window e_menu_grab_window_get(void);
|
2005-01-12 08:03:09 -08:00
|
|
|
|
|
|
|
#endif
|
2004-11-24 19:37:45 -08:00
|
|
|
#endif
|