Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/pager Modified Files: e_mod_config.c e_mod_main.c e_mod_main.h Log Message: patches from people (see mail list) and stuff. =================================================================== RCS file: /cvs/e/e17/apps/e/src/modules/pager/e_mod_config.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- e_mod_config.c 3 Sep 2006 07:40:45 -0000 1.22 +++ e_mod_config.c 19 Nov 2006 08:58:05 -0000 1.23 @@ -1,11 +1,37 @@ #include "e.h" #include "e_mod_main.h" +typedef enum _Pager_Grab_Button Pager_Grab_Button; +enum _Pager_Grab_Button +{ + GRAB_BUTTON_DRAG, + GRAB_BUTTON_NOPLACE +}; + struct _E_Config_Dialog_Data { int show_popup; double popup_speed; int drag_resist; + unsigned char btn_drag; + unsigned char btn_noplace; + int flip_desk; + + struct + { + Ecore_X_Window bind_win; + E_Dialog *dia; + Evas_List *handlers; + + unsigned char *button1; + unsigned char *button2; + } grab; + + struct + { + Evas_Object *o_btn1; + Evas_Object *o_btn2; + } gui; }; /* Protos */ @@ -15,6 +41,11 @@ static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static void _advanced_update_button_label(E_Config_Dialog_Data *cfdata); +static void _grab_wnd_show(void *data1, void *data2); +static void _grab_wnd_hide(E_Config_Dialog_Data *cfdata); +static int _grab_mouse_down_cb(void *data, int type, void *event); +static int _grab_key_down_cb(void *data, int type, void *event); void _config_pager_module(Config_Item *ci) @@ -47,6 +78,9 @@ cfdata->show_popup = pager_config->popup; cfdata->popup_speed = pager_config->popup_speed; cfdata->drag_resist = pager_config->drag_resist; + cfdata->btn_drag = pager_config->btn_drag; + cfdata->btn_noplace = pager_config->btn_noplace; + cfdata->flip_desk = pager_config->flip_desk; } static void * @@ -111,6 +145,25 @@ e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 1, 0.5); + of = e_widget_frametable_add(evas, _("Buttons Settings"), 0); + ob = e_widget_label_add(evas, _("Drag and select button")); + e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 1, 1); + ob = e_widget_label_add(evas, _("Drag no place button")); + e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 1, 1, 1); + ob = e_widget_button_add(evas, _("Click to set"), NULL, _grab_wnd_show, (void *)GRAB_BUTTON_DRAG, cfdata); + e_widget_frametable_object_append(of, ob, 2, 1, 1, 1, 1, 1, 0, 0); + cfdata->gui.o_btn1 = ob; + ob = e_widget_button_add(evas, _("Click to set"), NULL, _grab_wnd_show, (void *)GRAB_BUTTON_NOPLACE, cfdata); + e_widget_frametable_object_append(of, ob, 2, 2, 1, 1, 1, 1, 0, 0); + cfdata->gui.o_btn2 = ob; + _advanced_update_button_label(cfdata); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + of = e_widget_framelist_add(evas, _("Wheel callback"), 0); + ob = e_widget_check_add(evas, _("Flip desktop on mouse wheel"), &(cfdata->flip_desk)); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(o, of, 1, 1, 0.5); + return o; } @@ -120,7 +173,135 @@ pager_config->popup = cfdata->show_popup; pager_config->popup_speed = cfdata->popup_speed; pager_config->drag_resist = cfdata->drag_resist; + pager_config->btn_drag = cfdata->btn_drag; + pager_config->btn_noplace = cfdata->btn_noplace; + pager_config->flip_desk = cfdata->flip_desk; _pager_cb_config_updated(); e_config_save_queue(); + return 1; +} + +static void +_advanced_update_button_label(E_Config_Dialog_Data *cfdata) +{ + char label[256] = ""; + + if (cfdata->btn_drag) + snprintf(label, sizeof(label), _("Button %i"), cfdata->btn_drag); + else + snprintf(label, sizeof(label), _("Click to set")); + e_widget_button_label_set(cfdata->gui.o_btn1, label); + + if (cfdata->btn_noplace) + snprintf(label, sizeof(label), _("Button %i"), cfdata->btn_noplace); + else + snprintf(label, sizeof(label), _("Click to set")); + e_widget_button_label_set(cfdata->gui.o_btn2, label); +} + +static void +_grab_wnd_show(void *data1, void *data2) +{ + E_Manager *man; + E_Config_Dialog_Data *cfdata; + + man = e_manager_current_get(); + cfdata = data2; + + if ((Pager_Grab_Button)data1 == GRAB_BUTTON_DRAG) + { + cfdata->grab.button1 = &(cfdata->btn_drag); + cfdata->grab.button2 = &(cfdata->btn_noplace); + } + else + { + cfdata->grab.button1 = &(cfdata->btn_noplace); + cfdata->grab.button2 = &(cfdata->btn_drag); + } + + cfdata->grab.dia = e_dialog_new(e_container_current_get(man), "Pager", "_pager_button_grab_dialog"); + if (!cfdata->grab.dia) return; + e_dialog_title_set(cfdata->grab.dia, _("Pager Button Grab")); + e_dialog_icon_set(cfdata->grab.dia, "enlightenment/mouse_clean", 48); + e_dialog_text_set(cfdata->grab.dia, _("Please press a mouse button<br>" + "Press <hilight>Escape</hilight> to abort.<br>" + "Or <hilight>Del</hilight> to reset the button.")); + e_win_centered_set(cfdata->grab.dia->win, 1); + e_win_borderless_set(cfdata->grab.dia->win, 1); + + cfdata->grab.bind_win = ecore_x_window_input_new(man->root, 0, 0, 1, 1); + ecore_x_window_show(cfdata->grab.bind_win); + e_grabinput_get(cfdata->grab.bind_win, 0, cfdata->grab.bind_win); + + cfdata->grab.handlers = evas_list_append(cfdata->grab.handlers, + ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, + _grab_key_down_cb, cfdata)); + cfdata->grab.handlers = evas_list_append(cfdata->grab.handlers, + ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, + _grab_mouse_down_cb, cfdata)); + + e_dialog_show(cfdata->grab.dia); +} + +static void +_grab_wnd_hide(E_Config_Dialog_Data *cfdata) +{ + while (cfdata->grab.handlers) + { + ecore_event_handler_del(cfdata->grab.handlers->data); + cfdata->grab.handlers = evas_list_remove_list(cfdata->grab.handlers, cfdata->grab.handlers); + } + cfdata->grab.handlers = NULL; + e_grabinput_release(cfdata->grab.bind_win, cfdata->grab.bind_win); + ecore_x_window_del(cfdata->grab.bind_win); + cfdata->grab.bind_win = 0; + + e_object_del(E_OBJECT(cfdata->grab.dia)); + cfdata->grab.dia = NULL; + _advanced_update_button_label(cfdata); +} + +static int +_grab_mouse_down_cb(void *data, int type, void *event) +{ + E_Config_Dialog_Data *cfdata; + Ecore_X_Event_Mouse_Button_Down *ev; + + ev = event; + cfdata = data; + + if (ev->button != 3) + { + if (ev->button == *(cfdata->grab.button2)) + { + *(cfdata->grab.button2) = *(cfdata->grab.button1); + *(cfdata->grab.button1) = ev->button; + } + else + { + *(cfdata->grab.button1) = ev->button; + } + } + + _grab_wnd_hide(cfdata); + return 1; +} + +static int +_grab_key_down_cb(void *data, int type, void *event) +{ + E_Config_Dialog_Data *cfdata; + Ecore_X_Event_Key_Down *ev = event; + + cfdata = data; + + if (ev->win != cfdata->grab.bind_win) return 1; + + if (!strcmp(ev->keyname, "Escape")) _grab_wnd_hide(cfdata); + if (!strcmp(ev->keyname, "Delete")) + { + *(cfdata->grab.button1) = 0; + _grab_wnd_hide(cfdata); + } return 1; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/modules/pager/e_mod_main.c,v retrieving revision 1.195 retrieving revision 1.196 diff -u -3 -r1.195 -r1.196 --- e_mod_main.c 18 Nov 2006 05:40:29 -0000 1.195 +++ e_mod_main.c 19 Nov 2006 08:58:05 -0000 1.196 @@ -99,6 +99,7 @@ static void _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _menu_cb_post(void *data, E_Menu *m); static void _pager_inst_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_inst_cb_menu_virtual_desktops_dialog(void *data, E_Menu *m, E_Menu_Item *mi); static void _pager_instance_drop_zone_recalc(Instance *inst); static int _pager_cb_event_border_resize(void *data, int type, void *event); static int _pager_cb_event_border_move(void *data, int type, void *event); @@ -629,6 +630,11 @@ e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration"); e_menu_item_callback_set(mi, _pager_inst_cb_menu_configure, NULL); + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Virtual Desktops Configuration")); + e_util_menu_item_edje_icon_set(mi, "enlightenment/desktops"); + e_menu_item_callback_set(mi, _pager_inst_cb_menu_virtual_desktops_dialog, inst); + e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0); e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, @@ -661,6 +667,13 @@ _config_pager_module(NULL); } +static void _pager_inst_cb_menu_virtual_desktops_dialog(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Instance *inst; + inst = data; + e_int_config_desks(inst->gcc->gadcon->zone->container); +} + static void _pager_instance_drop_zone_recalc(Instance *inst) { @@ -1319,8 +1332,8 @@ pw = data; if (!pw) return; if (pw->border->lock_user_location) return; - /* FIXME: make this configurable */ - if ((ev->button == 1) || (ev->button == 2)) + if ((ev->button == pager_config->btn_drag) || + (ev->button == pager_config->btn_noplace)) { Evas_Coord ox, oy; @@ -1333,7 +1346,8 @@ pw->drag.start = 1; pw->drag.no_place = 0; pw->drag.button = ev->button; - if (ev->button == 2) pw->drag.no_place = 1; + if (ev->button == pager_config->btn_noplace) + pw->drag.no_place = 1; } } @@ -1346,8 +1360,8 @@ ev = event_info; pw = data; if (!pw) return; - /* FIXME: make this configurable as above */ - if ((ev->button == 1) || (ev->button == 2)) + if ((ev->button == pager_config->btn_drag) || + (ev->button ==pager_config->btn_noplace)) { if (!pw->drag.from_pager) { @@ -1712,7 +1726,7 @@ ev = event_info; pd = data; - e_zone_desk_linear_flip_by(pd->desk->zone, ev->z); + if (pager_config->flip_desk) e_zone_desk_linear_flip_by(pd->desk->zone, ev->z); } static int @@ -1747,6 +1761,9 @@ E_CONFIG_VAL(D, T, drag_resist, UINT); E_CONFIG_VAL(D, T, scale, UCHAR); E_CONFIG_VAL(D, T, resize, UCHAR); + E_CONFIG_VAL(D, T, btn_drag, UCHAR); + E_CONFIG_VAL(D, T, btn_noplace, UCHAR); + E_CONFIG_VAL(D, T, flip_desk, UINT); pager_config = e_config_domain_load("module.pager", conf_edd); @@ -1758,12 +1775,18 @@ pager_config->drag_resist = 3; pager_config->scale = 1; pager_config->resize = PAGER_RESIZE_BOTH; + pager_config->btn_drag = 1; + pager_config->btn_noplace = 2; + pager_config->flip_desk = 0; } E_CONFIG_LIMIT(pager_config->popup_speed, 0.1, 10.0); E_CONFIG_LIMIT(pager_config->popup, 0, 1); E_CONFIG_LIMIT(pager_config->drag_resist, 0, 50); - E_CONFIG_LIMIT(pager_config->scale, 0, 1); E_CONFIG_LIMIT(pager_config->resize, PAGER_RESIZE_HORZ, PAGER_RESIZE_BOTH); + E_CONFIG_LIMIT(pager_config->flip_desk, 0, 1); + E_CONFIG_LIMIT(pager_config->scale, 0, 1); + E_CONFIG_LIMIT(pager_config->btn_drag, 1, 32); + E_CONFIG_LIMIT(pager_config->btn_noplace, 1, 32); pager_config->handlers = evas_list_append (pager_config->handlers, ecore_event_handler_add =================================================================== RCS file: /cvs/e/e17/apps/e/src/modules/pager/e_mod_main.h,v retrieving revision 1.48 retrieving revision 1.49 diff -u -3 -r1.48 -r1.49 --- e_mod_main.h 6 Jun 2006 15:23:44 -0000 1.48 +++ e_mod_main.h 19 Nov 2006 08:58:05 -0000 1.49 @@ -33,6 +33,10 @@ Evas_List *instances; E_Menu *menu; Evas_List *handlers; + + unsigned char btn_drag; + unsigned char btn_noplace; + unsigned int flip_desk; }; struct _Config_Item ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs