From: <enl...@li...> - 2005-09-05 23:15:04
|
Enlightenment CVS committal Author : rephorm Project : e17 Module : apps/e Dir : e17/apps/e/src/modules/pager Modified Files: e_mod_main.c e_mod_main.h Log Message: Add desktop name to the pager (turn it on in the pager's config menu). The theme could probably use a bit of touch up, but it works for now :) Add an event when desktop names change. Note: currently 'adding' a name with enlightenment_remote sends out change events for ALL of the desktops (even the ones that didn't change). This should be fixed... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v retrieving revision 1.108 retrieving revision 1.109 diff -u -3 -r1.108 -r1.109 --- e_mod_main.c 5 Sep 2005 22:14:06 -0000 1.108 +++ e_mod_main.c 5 Sep 2005 23:14:58 -0000 1.109 @@ -14,7 +14,7 @@ static void _pager_free(Pager *pager); static void _pager_config_menu_new(Pager *pager); -static Pager_Face *_pager_face_new(E_Zone *zone); +static Pager_Face *_pager_face_new(Pager *pager, E_Zone *zone); static void _pager_face_free(Pager_Face *face); static void _pager_face_menu_new(Pager_Face *face); static void _pager_face_enable(Pager_Face *face); @@ -49,6 +49,7 @@ static int _pager_face_cb_event_border_icon_change(void *data, int type, void *event); static int _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event); static int _pager_face_cb_event_desk_show(void *data, int type, void *event); +static int _pager_face_cb_event_desk_name_change(void *data, int type, void *event); static int _pager_face_cb_event_container_resize(void *data, int type, void *event); static void _pager_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi); static void _pager_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi); @@ -67,6 +68,13 @@ static void _pager_face_cb_leave(void *data, const char *type, void *drop); static void _pager_face_cb_drop(void *data, const char *type, void *drop); +static void _pager_face_cb_deskname_none(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_face_cb_deskname_top(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_face_cb_deskname_bottom(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_face_cb_deskname_left(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_face_cb_deskname_right(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_face_deskname_position_change(Pager_Face *face); + static int _pager_count; static E_Config_DD *_conf_edd; @@ -176,6 +184,7 @@ #define T Config #define D _conf_edd E_CONFIG_LIST(D, T, faces, _conf_face_edd); + E_CONFIG_VAL(D, T, deskname_pos, UINT); pager->conf = e_config_domain_load("module.pager", _conf_edd); if (!pager->conf) @@ -206,7 +215,7 @@ { zone = l3->data; - face = _pager_face_new(zone); + face = _pager_face_new(pager, zone); if (face) { pager->faces = evas_list_append(pager->faces, face); @@ -269,11 +278,66 @@ static void _pager_config_menu_new(Pager *pager) { - pager->config_menu = e_menu_new(); + E_Menu *mn; + E_Menu_Item *mi; + + mn = e_menu_new(); + pager->config_menu = mn; + + mn = e_menu_new(); + pager->config_menu_deskname = mn; + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("None")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + if (pager->conf->deskname_pos == PAGER_DESKNAME_NONE) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_face_cb_deskname_none, pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Top")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + if (pager->conf->deskname_pos == PAGER_DESKNAME_TOP) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_face_cb_deskname_top, pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Bottom")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + if (pager->conf->deskname_pos == PAGER_DESKNAME_BOTTOM) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_face_cb_deskname_bottom, pager); + + /* FIXME: implement this in the theme, then re-enable */ + /* + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Left")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + if (pager->conf->deskname_pos == PAGER_DESKNAME_LEFT) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_face_cb_deskname_left, pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Right")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + if (pager->conf->deskname_pos == PAGER_DESKNAME_RIGHT) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_face_cb_deskname_right, pager); + */ + + /* Submenus */ + mi = e_menu_item_new(pager->config_menu); + e_menu_item_label_set(mi, _("Desktop Name")); + e_menu_item_submenu_set(mi, pager->config_menu_deskname); } static Pager_Face * -_pager_face_new(E_Zone *zone) +_pager_face_new(Pager *pager, E_Zone *zone) { Pager_Face *face; Evas_Object *o; @@ -282,6 +346,8 @@ face = E_NEW(Pager_Face, 1); if (!face) return NULL; + face->pager = pager; + /* store what evas we live in */ face->evas = zone->container->bg_evas; @@ -328,6 +394,9 @@ face->ev_handler_desk_show = ecore_event_handler_add(E_EVENT_DESK_SHOW, _pager_face_cb_event_desk_show, face); + face->ev_handler_desk_name_change = + ecore_event_handler_add(E_EVENT_DESK_NAME_CHANGE, + _pager_face_cb_event_desk_name_change, face); face->ev_handler_container_resize = ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE, _pager_face_cb_event_container_resize, face); @@ -379,6 +448,8 @@ e_gadman_client_change_func_set(face->gmc, _pager_face_cb_gmc_change, face); e_gadman_client_load(face->gmc); + _pager_face_deskname_position_change(face); + return face; } @@ -407,6 +478,7 @@ ecore_event_handler_del(face->ev_handler_border_icon_change); ecore_event_handler_del(face->ev_handler_zone_desk_count_set); ecore_event_handler_del(face->ev_handler_desk_show); + ecore_event_handler_del(face->ev_handler_desk_name_change); ecore_event_handler_del(face->ev_handler_container_resize); e_object_del(E_OBJECT(face->menu)); @@ -436,6 +508,11 @@ mi = e_menu_item_new(mn); e_menu_item_label_set(mi, _("Edit Mode")); e_menu_item_callback_set(mi, _pager_face_cb_menu_edit, face); + + /* Submenus */ + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Desktop Name")); + e_menu_item_submenu_set(mi, face->pager->config_menu_deskname); } static void @@ -723,6 +800,7 @@ } } } + edje_object_part_text_set(pd->face->pager_object, "desktop_name", pd->desk->name); } static void @@ -1231,6 +1309,32 @@ } static int +_pager_face_cb_event_desk_name_change(void *data, int type, void *event) +{ + Pager_Face *face; + E_Event_Desk_Show *ev; + Evas_List *l; + + face = data; + ev = event; + if (face->zone != ev->desk->zone) return 1; + + for (l = face->desks; l; l = l->next) + { + Pager_Desk *pd; + pd = l->data; + + if ( (pd->desk == ev->desk) && pd->current) + { + edje_object_part_text_set(pd->face->pager_object, "desktop_name", ev->desk->name); + break; + } + + } + return 1; +} + +static int _pager_face_cb_event_container_resize(void *data, int type, void *event) { Pager_Face *face; @@ -1489,3 +1593,117 @@ edje_object_signal_emit(pd->desk_object, "drag", "out"); } } + +static void +_pager_face_cb_deskname_none(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + Evas_List *l; + + pager = data; + pager->conf->deskname_pos = PAGER_DESKNAME_NONE; + for (l = pager->faces; l; l = l->next) + { + Pager_Face *face; + + face = l->data; + _pager_face_deskname_position_change(face); + } + e_config_save_queue(); +} + +static void +_pager_face_cb_deskname_top(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + Evas_List *l; + + pager = data; + pager->conf->deskname_pos = PAGER_DESKNAME_TOP; + for (l = pager->faces; l; l = l->next) + { + Pager_Face *face; + + face = l->data; + _pager_face_deskname_position_change(face); + } + e_config_save_queue(); +} + +static void +_pager_face_cb_deskname_bottom(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + Evas_List *l; + + pager = data; + pager->conf->deskname_pos = PAGER_DESKNAME_BOTTOM; + for (l = pager->faces; l; l = l->next) + { + Pager_Face *face; + + face = l->data; + _pager_face_deskname_position_change(face); + } + e_config_save_queue(); +} + +static void +_pager_face_cb_deskname_left(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + Evas_List *l; + + pager = data; + pager->conf->deskname_pos = PAGER_DESKNAME_LEFT; + for (l = pager->faces; l; l = l->next) + { + Pager_Face *face; + + face = l->data; + _pager_face_deskname_position_change(face); + } + e_config_save_queue(); +} + +static void +_pager_face_cb_deskname_right(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + Evas_List *l; + + pager = data; + pager->conf->deskname_pos = PAGER_DESKNAME_RIGHT; + for (l = pager->faces; l; l = l->next) + { + Pager_Face *face; + + face = l->data; + _pager_face_deskname_position_change(face); + } + e_config_save_queue(); +} + +static void +_pager_face_deskname_position_change(Pager_Face *face) +{ + switch (face->pager->conf->deskname_pos) + { + case PAGER_DESKNAME_NONE: + edje_object_signal_emit(face->pager_object, "desktop_name,none", ""); + break; + case PAGER_DESKNAME_TOP: + edje_object_signal_emit(face->pager_object, "desktop_name,top", ""); + break; + case PAGER_DESKNAME_BOTTOM: + edje_object_signal_emit(face->pager_object, "desktop_name,bottom", ""); + break; + case PAGER_DESKNAME_LEFT: + edje_object_signal_emit(face->pager_object, "desktop_name,left", ""); + break; + case PAGER_DESKNAME_RIGHT: + edje_object_signal_emit(face->pager_object, "desktop_name,right", ""); + break; + } +} + =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.h,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- e_mod_main.h 15 May 2005 22:16:00 -0000 1.24 +++ e_mod_main.h 5 Sep 2005 23:14:58 -0000 1.25 @@ -16,9 +16,17 @@ #define PAGER_RESIZE_VERT 2 #define PAGER_RESIZE_BOTH 3 +#define PAGER_DESKNAME_NONE 0 +#define PAGER_DESKNAME_TOP 1 +#define PAGER_DESKNAME_BOTTOM 2 +#define PAGER_DESKNAME_LEFT 3 +#define PAGER_DESKNAME_RIGHT 4 + struct _Config { Evas_List *faces; + /* Position of desktop name */ + unsigned int deskname_pos; }; struct _Config_Face @@ -35,6 +43,7 @@ { Evas_List *faces; E_Menu *config_menu; + E_Menu *config_menu_deskname; Evas_List *menus; Config *conf; @@ -42,6 +51,7 @@ struct _Pager_Face { + Pager *pager; E_Gadman_Client *gmc; E_Menu *menu; Evas *evas; @@ -76,6 +86,7 @@ Ecore_Event_Handler *ev_handler_border_icon_change; Ecore_Event_Handler *ev_handler_zone_desk_count_set; Ecore_Event_Handler *ev_handler_desk_show; + Ecore_Event_Handler *ev_handler_desk_name_change; Ecore_Event_Handler *ev_handler_container_resize; E_Drop_Handler *drop_handler; |