From 705029347ca43b19a7ba6a10d2f390454159c378 Mon Sep 17 00:00:00 2001 From: sndev Date: Wed, 23 Aug 2006 12:49:11 +0000 Subject: [PATCH] New Mouse Bindings dialog. Plz try, test, and let me know, if something is wrong. SVN revision: 25071 --- data/themes/default_icons.edc | 101 ++ data/themes/images/Makefile.am | 5 + .../images/e17_icon_mouse_bindings_left.png | Bin 0 -> 2829 bytes .../images/e17_icon_mouse_bindings_middle.png | Bin 0 -> 2750 bytes .../images/e17_icon_mouse_bindings_right.png | Bin 0 -> 2839 bytes .../e17_icon_mouse_bindings_scroll_down.png | Bin 0 -> 3100 bytes .../e17_icon_mouse_bindings_scroll_up.png | Bin 0 -> 3129 bytes src/bin/Makefile.am | 2 + src/bin/e_configure.c | 1 + src/bin/e_includes.h | 1 + src/bin/e_int_config_mousebindings.c | 1044 +++++++++++++++++ src/bin/e_int_config_mousebindings.h | 9 + 12 files changed, 1163 insertions(+) create mode 100644 data/themes/images/e17_icon_mouse_bindings_left.png create mode 100644 data/themes/images/e17_icon_mouse_bindings_middle.png create mode 100644 data/themes/images/e17_icon_mouse_bindings_right.png create mode 100644 data/themes/images/e17_icon_mouse_bindings_scroll_down.png create mode 100644 data/themes/images/e17_icon_mouse_bindings_scroll_up.png create mode 100644 src/bin/e_int_config_mousebindings.c create mode 100644 src/bin/e_int_config_mousebindings.h diff --git a/data/themes/default_icons.edc b/data/themes/default_icons.edc index 922b61b3b..a31a42a53 100644 --- a/data/themes/default_icons.edc +++ b/data/themes/default_icons.edc @@ -40,6 +40,12 @@ images { image: "e17_icon_right_arrow.png" COMP; image: "e17_icon_up_arrow.png" COMP; image: "e17_icon_down_arrow.png" COMP; + + image: "e17_icon_mouse_bindings_left.png" COMP; + image: "e17_icon_mouse_bindings_middle.png" COMP; + image: "e17_icon_mouse_bindings_right.png" COMP; + image: "e17_icon_mouse_bindings_scroll_up.png" COMP; + image: "e17_icon_mouse_bindings_scroll_down.png" COMP; image: "e17_shelf_bottom_left.png" COMP; image: "e17_shelf_bottom.png" COMP; @@ -617,6 +623,101 @@ group { } } } +group { + name: "e/icons/enlightenment/mouse_binding_left"; + max: 64 64; + parts { + part { + name: "icon"; + mouse_events: 0; + description { + state: "default" 0.0; + aspect: 1.0 1.0; + aspect_preference: BOTH; + max: 64 64; + image { + normal: "e17_icon_mouse_bindings_left.png"; + } + } + } + } +} +group { + name: "e/icons/enlightenment/mouse_binding_middle"; + max: 64 64; + parts { + part { + name: "icon"; + mouse_events: 0; + description { + state: "default" 0.0; + aspect: 1.0 1.0; + aspect_preference: BOTH; + max: 64 64; + image { + normal: "e17_icon_mouse_bindings_middle.png"; + } + } + } + } +} +group { + name: "e/icons/enlightenment/mouse_binding_right"; + max: 64 64; + parts { + part { + name: "icon"; + mouse_events: 0; + description { + state: "default" 0.0; + aspect: 1.0 1.0; + aspect_preference: BOTH; + max: 64 64; + image { + normal: "e17_icon_mouse_bindings_right.png"; + } + } + } + } +} +group { + name: "e/icons/enlightenment/mouse_binding_scroll_up"; + max: 64 64; + parts { + part { + name: "icon"; + mouse_events: 0; + description { + state: "default" 0.0; + aspect: 1.0 1.0; + aspect_preference: BOTH; + max: 64 64; + image { + normal: "e17_icon_mouse_bindings_scroll_up.png"; + } + } + } + } +} +group { + name: "e/icons/enlightenment/mouse_binding_scroll_down"; + max: 64 64; + parts { + part { + name: "icon"; + mouse_events: 0; + description { + state: "default" 0.0; + aspect: 1.0 1.0; + aspect_preference: BOTH; + max: 64 64; + image { + normal: "e17_icon_mouse_bindings_scroll_down.png"; + } + } + } + } +} group { name: "e/icons/enlightenment/keys"; max: 64 64; diff --git a/data/themes/images/Makefile.am b/data/themes/images/Makefile.am index 2e5bd531e..15fdba58c 100644 --- a/data/themes/images/Makefile.am +++ b/data/themes/images/Makefile.am @@ -314,6 +314,11 @@ e17_icon_windows.png \ e17_icon_window_focus.png \ e17_icon_lost_windows.png \ e17_icon_screen_resolution.png \ +e17_icon_mouse_bindings_left.png \ +e17_icon_mouse_bindings_middle.png \ +e17_icon_mouse_bindings_right.png \ +e17_icon_mouse_bindings_scroll_up.png \ +e17_icon_mouse_bindings_scroll_down.png \ e17_pointer.png \ e17_pointer_mono.png \ e17_dialog_watermark.png \ diff --git a/data/themes/images/e17_icon_mouse_bindings_left.png b/data/themes/images/e17_icon_mouse_bindings_left.png new file mode 100644 index 0000000000000000000000000000000000000000..85e74c1c50a5941e213567f15603274e4d2e9818 GIT binary patch literal 2829 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 literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_icon_mouse_bindings_scroll_down.png b/data/themes/images/e17_icon_mouse_bindings_scroll_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2b79d8002d69e9bced2a33cfc46f821a71ccff17 GIT binary patch literal 3100 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 TIYX@S00000NkvXXu0mjfCcreate_cfdata = _create_data; + v->free_cfdata = _free_data; + v->basic.apply_cfdata = _basic_apply_data; + v->basic.create_widgets = _basic_create_widgets; + v->override_auto_apply = 0; + + cfd = e_config_dialog_new(con, + _("Mouse Binding Settings"), + "E", "_config_mousebindings_dialog", + "enlightenment/mouse_binding_left", 0, v, NULL); + return cfd; +} + +static void +_fill_data(E_Config_Dialog_Data *cfdata) +{ + Evas_List *l; + E_Config_Binding_Mouse *eb, *eb2; + E_Config_Binding_Wheel *bw, *bw2; + + + cfdata->mouse_binding = 0; + cfdata->context = E_BINDING_CONTEXT_ANY; + cfdata->binding_ilist_value = strdup(""); + cfdata->shift_mod = 0; + cfdata->ctrl_mod = 0; + cfdata->alt_mod = 0; + cfdata->win_mod = 0; + cfdata->params = strdup(""); + cfdata->current_mouse_binding = NULL; + cfdata->current_wheel_binding = NULL; + + for (l = e_config->mouse_bindings; l; l = l->next) + { + eb = l->data; + + if (!eb->action) continue; + + eb2 = E_NEW(E_Config_Binding_Mouse, 1); + eb2->context = eb->context; + eb2->button = eb->button; + eb2->modifiers = eb->modifiers; + eb2->any_mod = eb->any_mod; + eb2->action = eb->action == NULL ? NULL : evas_stringshare_add(eb->action); + eb2->params = eb->params == NULL ? NULL : evas_stringshare_add(eb->params); + + if (eb2->button == 1) + cfdata->mouse_bindings[0] = evas_list_append(cfdata->mouse_bindings[0], eb2); + else if (eb2->button == 2) + cfdata->mouse_bindings[1] = evas_list_append(cfdata->mouse_bindings[1], eb2); + else if (eb2->button == 3) + cfdata->mouse_bindings[2] = evas_list_append(cfdata->mouse_bindings[2], eb2); + } + + for (l = e_config->wheel_bindings; l; l = l->next) + { + bw = l->data; + + if (!bw) continue; + + if (bw->direction == 1) continue; + + bw2 = E_NEW(E_Config_Binding_Wheel, 1); + bw2->context = bw->context; + bw2->direction = bw->direction; + bw2->z = bw->z; + bw2->modifiers = bw->modifiers; + bw2->any_mod = bw->any_mod; + bw2->action = bw->action == NULL ? NULL : evas_stringshare_add(bw->action); + bw2->params = bw->params == NULL ? NULL : evas_stringshare_add(bw->params); + + if (bw->z < 0) + cfdata->mouse_bindings[3] = evas_list_append(cfdata->mouse_bindings[3], bw2); + else + cfdata->mouse_bindings[4] = evas_list_append(cfdata->mouse_bindings[4], bw2); + } +} + +static void * +_create_data(E_Config_Dialog *cfd) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = E_NEW(E_Config_Dialog_Data, 1); + + _fill_data(cfdata); + cfdata->cfd = cfd; + return cfdata; +} + +static void +_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + int i; + E_Config_Binding_Mouse *bm; + E_Config_Binding_Wheel *bw; + + for (i = 0; i < 5; i++) + { + while (cfdata->mouse_bindings[i]) + { + switch (i) + { + case 0: + case 1: + case 2: + bm = cfdata->mouse_bindings[i]->data; + if (bm->action) evas_stringshare_del(bm->action); + if (bm->params) evas_stringshare_del(bm->params); + E_FREE(bm); + break; + case 3: + case 4: + bw = cfdata->mouse_bindings[i]->data; + if (bw->action) evas_stringshare_del(bw->action); + if (bw->params) evas_stringshare_del(bw->params); + E_FREE(bw); + break; + } + cfdata->mouse_bindings[i] = + evas_list_remove_list(cfdata->mouse_bindings[i], cfdata->mouse_bindings[i]); + } + } + if (cfdata->binding_ilist_value) free(cfdata->binding_ilist_value); + if (cfdata->action_ilist_value) free(cfdata->action_ilist_value); + if (cfdata->params) free(cfdata->params); + + free(cfdata); +} + +static int +_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + int i; + Evas_List *l; + E_Config_Binding_Mouse *bm, *bm2; + E_Config_Binding_Wheel *bw, *bw2; + + if (!cfdata) return 0; + + _apply_binding_changes(cfdata); + + e_border_button_bindings_ungrab_all(); + while (e_config->mouse_bindings) + { + bm = e_config->mouse_bindings->data; + e_bindings_mouse_del(bm->context, bm->button, bm->modifiers, bm->any_mod, bm->action, + bm->params); + if (bm->action) evas_stringshare_del(bm->action); + if (bm->params) evas_stringshare_del(bm->params); + E_FREE(bm); + + e_config->mouse_bindings = evas_list_remove_list(e_config->mouse_bindings, e_config->mouse_bindings); + } + + while (e_config->wheel_bindings) + { + bw = e_config->wheel_bindings->data; + e_bindings_wheel_del(bw->context, bw->direction, bw->z, bw->modifiers, bw->any_mod, + bw->action, bw->params); + if (bw->action) evas_stringshare_del(bw->action); + if (bw->params) evas_stringshare_del(bw->params); + E_FREE(bw); + e_config->wheel_bindings = evas_list_remove_list(e_config->wheel_bindings, e_config->wheel_bindings); + } + + for (i = 0; i < 5; i++) + { + switch (i) + { + case 0: + case 1: + case 2: + for (l = cfdata->mouse_bindings[i]; l; l = l->next) + { + bm = l->data; + + bm2 = E_NEW(E_Config_Binding_Mouse, 1); + bm2->context = bm->context; + bm2->button = bm->button; + bm2->modifiers = bm->modifiers; + bm2->any_mod = bm->any_mod; + bm2->action = bm->action == NULL ? NULL : evas_stringshare_add(bm->action); + bm2->params = bm->params == NULL ? NULL : evas_stringshare_add(bm->params); + + e_config->mouse_bindings = evas_list_append(e_config->mouse_bindings, bm2); + e_bindings_mouse_add(bm2->context, bm2->button, bm2->modifiers, bm2->any_mod, + bm2->action, bm2->params); + } + break; + case 3: + case 4: + for (l = cfdata->mouse_bindings[i]; l; l = l->next) + { + bw = l->data; + + bw2 = E_NEW(E_Config_Binding_Wheel, 1); + bw2->context = bw->context; + bw2->direction = 0; + bw2->z = bw->z; + bw2->modifiers = bw->modifiers; + bw2->any_mod = 0;//bw->any_mod; + bw2->action = bw->action == NULL ? NULL : evas_stringshare_add(bw->action); + bw2->params = bw->params == NULL ? NULL : evas_stringshare_add(bw->params); + + e_config->wheel_bindings = evas_list_append(e_config->wheel_bindings, bw2); + e_bindings_wheel_add(bw2->context, bw2->direction, bw2->z, bw2->modifiers, + bw2->any_mod, bw2->action, bw2->params); + + bw2 = E_NEW(E_Config_Binding_Wheel, 1); + bw2->context = bw->context; + bw2->direction = 1; + bw2->z = bw->z; + bw2->modifiers = bw->modifiers; + bw2->any_mod = 0;//bw->any_mod; + bw2->action = bw->action == NULL ? NULL : evas_stringshare_add(bw->action); + bw2->params = bw->params == NULL ? NULL : evas_stringshare_add(bw->params); + + e_config->wheel_bindings = evas_list_append(e_config->wheel_bindings, bw2); + e_bindings_wheel_add(bw2->context, bw2->direction, bw2->z, bw2->modifiers, + bw2->any_mod, bw2->action, bw2->params); + } + break; + } + } + e_border_button_bindings_grab_all(); + + e_config_save_queue(); + return 1; +} + +static Evas_Object * +_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +{ + Evas_Object *o, *ol, *ol2, *ol3, *of, *of2, *ot; + E_Radio_Group *rg; + + + cfdata->evas = evas; + + ol = e_widget_list_add(evas, 0, 0); + + ol2 = e_widget_list_add(evas, 0, 1); + of = e_widget_framelist_add(evas, _("Mouse Binding"), 0); + + rg = e_widget_radio_group_new(&(cfdata->mouse_binding)); + ol3 = e_widget_list_add(evas, 0, 1); + o = e_widget_radio_icon_add(evas, _("Left Button"), "enlightenment/mouse_binding_left", + 48, 48, 0, rg); + e_widget_on_change_hook_set(o, _binding_change_cb, cfdata); + e_widget_list_object_append(ol3, o, 1, 1, 0.5); + + o = e_widget_radio_icon_add(evas, _("Middle Button"), "enlightenment/mouse_binding_middle", + 48, 48, 1, rg); + e_widget_on_change_hook_set(o, _binding_change_cb, cfdata); + e_widget_list_object_append(ol3, o, 1, 1, 0.5); + + o = e_widget_radio_icon_add(evas, _("Right Button"), "enlightenment/mouse_binding_right", + 48, 48, 2, rg); + e_widget_on_change_hook_set(o, _binding_change_cb, cfdata); + e_widget_list_object_append(ol3, o, 1, 1, 0.5); + + e_widget_framelist_object_append(of, ol3); + + ol3 = e_widget_list_add(evas, 0, 1); + o = e_widget_radio_icon_add(evas, _("Mouse Wheel Up"), "enlightenment/mouse_binding_scroll_up", + 48, 48, 3, rg); + e_widget_on_change_hook_set(o, _binding_change_cb, cfdata); + e_widget_list_object_append(ol3, o, 1, 1, 0.5); + + o = e_widget_radio_icon_add(evas, _("Mouse Wheel Down"), + "enlightenment/mouse_binding_scroll_down", 48, 48, 4, rg); + e_widget_on_change_hook_set(o, _binding_change_cb, cfdata); + e_widget_list_object_append(ol3, o, 1, 1, 0.5); + e_widget_framelist_object_append(of, ol3); + + e_widget_list_object_append(ol2, of, 1, 1, 0.5); + of = e_widget_framelist_add(evas, _("Binding Action List"), 0); + o = e_widget_ilist_add(evas, 32, 32, &(cfdata->binding_ilist_value)); + cfdata->gui.o_binding_action_list = o; + e_widget_min_size_set(o, 250, 100); + e_widget_ilist_go(o); + e_widget_framelist_object_append(of, o); + + ol3 = e_widget_list_add(evas, 0, 1); + o = e_widget_button_add(evas, _("Add"), NULL, _add_binding_cb, cfdata, NULL); + cfdata->gui.o_add = o; + e_widget_list_object_append(ol3, o, 1, 1, 0.5); + + o = e_widget_button_add(evas, _("Delete"), NULL, _delete_binding_cb, cfdata, NULL); + cfdata->gui.o_del = o; + e_widget_list_object_append(ol3, o, 1, 1, 0.5); + e_widget_disabled_set(o, 1); + e_widget_framelist_object_append(of, ol3); + + e_widget_list_object_append(ol2, of, 1, 1, 0.5); + e_widget_list_object_append(ol, ol2, 1, 1, 0.5); + + of = e_widget_framelist_add(evas, _("Action Settings"), 1); + ol2 = e_widget_list_add(evas, 0, 0); + of2 = e_widget_framelist_add(evas, _("Modifier Key"), 1); + o = e_widget_check_add(evas, _("Shift"), &(cfdata->shift_mod)); + cfdata->gui.mod_key.o_shift = o; + e_widget_framelist_object_append(of2, o); + e_widget_disabled_set(o, 1); + + o = e_widget_check_add(evas, _("Ctrl"), &(cfdata->ctrl_mod)); + cfdata->gui.mod_key.o_ctrl = o; + e_widget_framelist_object_append(of2, o); + e_widget_disabled_set(o, 1); + + o = e_widget_check_add(evas, _("Alt"), &(cfdata->alt_mod)); + cfdata->gui.mod_key.o_alt = o; + e_widget_framelist_object_append(of2, o); + e_widget_disabled_set(o, 1); + + o = e_widget_check_add(evas, _("Win"), &(cfdata->win_mod)); + cfdata->gui.mod_key.o_win = o; + e_widget_framelist_object_append(of2, o); + e_widget_disabled_set(o, 1); + + e_widget_list_object_append(ol2, of2, 1, 1, 0.5); + of2 = e_widget_framelist_add(evas, _("Context"), 0); + ot = e_widget_table_add(evas, 0); + + rg = e_widget_radio_group_new((int*)(&(cfdata->context))); + o = e_widget_radio_add(evas, _("Any"), E_BINDING_CONTEXT_ANY, rg); + cfdata->gui.context.o_any = o; + e_widget_table_object_append(ot, o, 0, 0, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("Border"), E_BINDING_CONTEXT_BORDER, rg); + cfdata->gui.context.o_border = o; + e_widget_table_object_append(ot, o, 0, 1, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("Menu"), E_BINDING_CONTEXT_MENU, rg); + cfdata->gui.context.o_menu = o; + e_widget_table_object_append(ot, o, 0, 2, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("Win List"), E_BINDING_CONTEXT_WINLIST, rg); + cfdata->gui.context.o_winlist = o; + e_widget_table_object_append(ot, o, 1, 0, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("Popup"), E_BINDING_CONTEXT_POPUP, rg); + cfdata->gui.context.o_popup = o; + e_widget_table_object_append(ot, o, 1, 1, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("Zone"), E_BINDING_CONTEXT_ZONE, rg); + cfdata->gui.context.o_zone = o; + e_widget_table_object_append(ot, o, 1, 2, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("Container"), E_BINDING_CONTEXT_CONTAINER, rg); + cfdata->gui.context.o_container = o; + e_widget_table_object_append(ot, o, 2, 0, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("Manager"), E_BINDING_CONTEXT_MANAGER, rg); + cfdata->gui.context.o_manager = o; + e_widget_table_object_append(ot, o, 2, 1, 1, 1, 1, 1, 1, 1); + e_widget_disabled_set(o, 1); + + o = e_widget_radio_add(evas, _("None"), E_BINDING_CONTEXT_NONE, rg); + cfdata->gui.context.o_none = o; + e_widget_table_object_append(ot, o, 2, 2, 1, 1, 1, 1, 1, 1); e_widget_disabled_set(o, 1); + + e_widget_framelist_object_append(of2, ot); + e_widget_list_object_append(ol2, of2, 1, 1, 0.5); + + e_widget_framelist_object_append(of, ol2); + + ol2 = e_widget_list_add(evas, 0, 0); + of2 = e_widget_framelist_add(evas, _("Action"), 0); + + o = e_widget_ilist_add(evas, 32, 32, &(cfdata->action_ilist_value)); + cfdata->gui.o_action_list = o; + e_widget_min_size_set(o, 250, 100); + e_widget_ilist_go(o); + e_widget_disabled_set(o, 1); + e_widget_framelist_object_append(of2, o); + + e_widget_list_object_append(ol2, of2, 1, 1, 0.5); + + of2 = e_widget_framelist_add(evas, _("Params"), 0); + + o = e_widget_entry_add(evas, &(cfdata->params)); + cfdata->gui.o_params = o; + e_widget_framelist_object_append(of2, o); + e_widget_disabled_set(o, 1); + + e_widget_list_object_append(ol2, of2, 1, 1, 0.5); + e_widget_framelist_object_append(of, ol2); + + e_widget_list_object_append(ol, of, 1, 1, 0.5); + + _update_binding_action_list(cfdata); + _update_delete_button(cfdata); + + e_dialog_resizable_set(cfd->dia, 1); + return ol; +} + +static void +_update_binding_action_list(E_Config_Dialog_Data *cfdata) +{ + char buf[256] = ""; + const char *action; + char indx[256]; + Evas_List *l; + E_Config_Binding_Mouse *eb; + E_Config_Binding_Wheel *bw; + int i, j; + + e_widget_ilist_clear(cfdata->gui.o_binding_action_list); + + if (cfdata->mouse_binding < 3) + { + for (l = cfdata->mouse_bindings[cfdata->mouse_binding], i = 0; l; l = l->next, i++) + { + eb = l->data; + + for (j = 0; j < E_ACTION_NUMBER; j++) + { + if (!strcmp(action_to_name[j][0], eb->action)) + break; + } + + if (j < E_ACTION_NUMBER) + action = action_to_name[j][1]; + else + action = _("Unknown"); + + snprintf(buf, sizeof(buf), "%s %d: %s", _("Action"), i, action); + snprintf(indx, sizeof(indx), "%d", i); + e_widget_ilist_append(cfdata->gui.o_binding_action_list, NULL, buf, + _binding_action_ilist_change_cb, cfdata, indx); + } + } + else + { + for (l = cfdata->mouse_bindings[cfdata->mouse_binding], i = 0; l; l = l->next, i++) + { + bw = l->data; + + for (j = 0; j < E_ACTION_NUMBER; j++) + { + if (!strcmp(action_to_name[j][0], bw->action)) + break; + } + + if (j < E_ACTION_NUMBER) + action = action_to_name[j][1]; + else + action = _("Unknown"); + + snprintf(buf, sizeof(buf), "%s %d: %s", _("Action"), i, action); + snprintf(indx, sizeof(indx), "%d", i); + e_widget_ilist_append(cfdata->gui.o_binding_action_list, NULL, buf, + _binding_action_ilist_change_cb, cfdata, indx); + } + } + e_widget_ilist_go(cfdata->gui.o_binding_action_list); + + if (!cfdata->mouse_bindings[cfdata->mouse_binding]) + { + _update_context_radios(cfdata); + _update_mod_key_check_boxes(cfdata); + _update_action_list(cfdata); + _update_action_params(cfdata); + } + else + e_widget_ilist_selected_set(cfdata->gui.o_binding_action_list, 0); +} + +static void +_update_context_radios(E_Config_Dialog_Data *cfdata) +{ + E_Config_Binding_Mouse *eb; + E_Config_Binding_Wheel *bw; + + e_widget_disabled_set(cfdata->gui.context.o_any, 1); + e_widget_radio_toggle_set(cfdata->gui.context.o_any, 1); + e_widget_disabled_set(cfdata->gui.context.o_border, 1); + e_widget_disabled_set(cfdata->gui.context.o_menu, 1); + e_widget_disabled_set(cfdata->gui.context.o_winlist, 1); + e_widget_disabled_set(cfdata->gui.context.o_popup, 1); + e_widget_disabled_set(cfdata->gui.context.o_zone, 1); + e_widget_disabled_set(cfdata->gui.context.o_container, 1); + e_widget_disabled_set(cfdata->gui.context.o_manager, 1); + e_widget_disabled_set(cfdata->gui.context.o_none, 1); + + if ((!cfdata->current_mouse_binding) && (!cfdata->current_wheel_binding)) + return; + + e_widget_disabled_set(cfdata->gui.context.o_any, 0); + e_widget_disabled_set(cfdata->gui.context.o_border, 0); + e_widget_disabled_set(cfdata->gui.context.o_menu, 0); + e_widget_disabled_set(cfdata->gui.context.o_winlist, 0); + e_widget_disabled_set(cfdata->gui.context.o_popup, 0); + e_widget_disabled_set(cfdata->gui.context.o_zone, 0); + e_widget_disabled_set(cfdata->gui.context.o_container, 0); + e_widget_disabled_set(cfdata->gui.context.o_manager, 0); + e_widget_disabled_set(cfdata->gui.context.o_none, 0); + + if (cfdata->mouse_binding < 3) + { + eb = cfdata->current_mouse_binding; + + if (eb->context == E_BINDING_CONTEXT_ANY) + e_widget_radio_toggle_set(cfdata->gui.context.o_any, 1); + else if (eb->context == E_BINDING_CONTEXT_BORDER) + e_widget_radio_toggle_set(cfdata->gui.context.o_border, 1); + else if (eb->context == E_BINDING_CONTEXT_MENU) + e_widget_radio_toggle_set(cfdata->gui.context.o_menu, 1); + else if (eb->context == E_BINDING_CONTEXT_WINLIST) + e_widget_radio_toggle_set(cfdata->gui.context.o_winlist, 1); + else if (eb->context == E_BINDING_CONTEXT_POPUP) + e_widget_radio_toggle_set(cfdata->gui.context.o_popup, 1); + else if (eb->context == E_BINDING_CONTEXT_ZONE) + e_widget_radio_toggle_set(cfdata->gui.context.o_zone, 1); + else if (eb->context == E_BINDING_CONTEXT_CONTAINER) + e_widget_radio_toggle_set(cfdata->gui.context.o_container, 1); + else if (eb->context == E_BINDING_CONTEXT_MANAGER) + e_widget_radio_toggle_set(cfdata->gui.context.o_manager, 1); + else if (eb->context == E_BINDING_CONTEXT_NONE) + e_widget_radio_toggle_set(cfdata->gui.context.o_none, 1); + else + e_widget_radio_toggle_set(cfdata->gui.context.o_none, 1); + } + else + { + bw = cfdata->current_wheel_binding; + + if (bw->context == E_BINDING_CONTEXT_ANY) + e_widget_radio_toggle_set(cfdata->gui.context.o_any, 1); + else if (bw->context == E_BINDING_CONTEXT_BORDER) + e_widget_radio_toggle_set(cfdata->gui.context.o_border, 1); + else if (bw->context == E_BINDING_CONTEXT_MENU) + e_widget_radio_toggle_set(cfdata->gui.context.o_menu, 1); + else if (bw->context == E_BINDING_CONTEXT_WINLIST) + e_widget_radio_toggle_set(cfdata->gui.context.o_winlist, 1); + else if (bw->context == E_BINDING_CONTEXT_POPUP) + e_widget_radio_toggle_set(cfdata->gui.context.o_popup, 1); + else if (bw->context == E_BINDING_CONTEXT_ZONE) + e_widget_radio_toggle_set(cfdata->gui.context.o_zone, 1); + else if (bw->context == E_BINDING_CONTEXT_CONTAINER) + e_widget_radio_toggle_set(cfdata->gui.context.o_container, 1); + else if (bw->context == E_BINDING_CONTEXT_MANAGER) + e_widget_radio_toggle_set(cfdata->gui.context.o_manager, 1); + else if (bw->context == E_BINDING_CONTEXT_NONE) + e_widget_radio_toggle_set(cfdata->gui.context.o_none, 1); + else + e_widget_radio_toggle_set(cfdata->gui.context.o_none, 1); + } +} +static void +_update_mod_key_check_boxes(E_Config_Dialog_Data *cfdata) +{ + E_Config_Binding_Mouse *eb; + E_Config_Binding_Wheel *bw; + + e_widget_disabled_set(cfdata->gui.mod_key.o_shift, 1); + e_widget_disabled_set(cfdata->gui.mod_key.o_ctrl, 1); + e_widget_disabled_set(cfdata->gui.mod_key.o_alt, 1); + e_widget_disabled_set(cfdata->gui.mod_key.o_win, 1); + e_widget_check_checked_set(cfdata->gui.mod_key.o_shift, 0); + e_widget_check_checked_set(cfdata->gui.mod_key.o_ctrl, 0); + e_widget_check_checked_set(cfdata->gui.mod_key.o_alt, 0); + e_widget_check_checked_set(cfdata->gui.mod_key.o_win, 0); + + if ((!cfdata->current_mouse_binding) && (!cfdata->current_wheel_binding)) + return; + + e_widget_disabled_set(cfdata->gui.mod_key.o_shift, 0); + e_widget_disabled_set(cfdata->gui.mod_key.o_ctrl, 0); + e_widget_disabled_set(cfdata->gui.mod_key.o_alt, 0); + e_widget_disabled_set(cfdata->gui.mod_key.o_win, 0); + + if (cfdata->mouse_binding < 3) + { + eb = cfdata->current_mouse_binding; + + if (eb->modifiers & E_BINDING_MODIFIER_SHIFT) + e_widget_check_checked_set(cfdata->gui.mod_key.o_shift, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_shift, 0); + + if (eb->modifiers & E_BINDING_MODIFIER_CTRL) + e_widget_check_checked_set(cfdata->gui.mod_key.o_ctrl, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_ctrl, 0); + + if (eb->modifiers & E_BINDING_MODIFIER_ALT) + e_widget_check_checked_set(cfdata->gui.mod_key.o_alt, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_alt, 0); + + if (eb->modifiers & E_BINDING_MODIFIER_WIN) + e_widget_check_checked_set(cfdata->gui.mod_key.o_win, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_win, 0); + } + else + { + bw = cfdata->current_wheel_binding; + + if (bw->modifiers & E_BINDING_MODIFIER_SHIFT) + e_widget_check_checked_set(cfdata->gui.mod_key.o_shift, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_shift, 0); + + if (bw->modifiers & E_BINDING_MODIFIER_CTRL) + e_widget_check_checked_set(cfdata->gui.mod_key.o_ctrl, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_ctrl, 0); + + if (bw->modifiers & E_BINDING_MODIFIER_ALT) + e_widget_check_checked_set(cfdata->gui.mod_key.o_alt, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_alt, 0); + + if (bw->modifiers & E_BINDING_MODIFIER_WIN) + e_widget_check_checked_set(cfdata->gui.mod_key.o_win, 1); + else + e_widget_check_checked_set(cfdata->gui.mod_key.o_win, 0); + } +} + +static void +_update_action_list(E_Config_Dialog_Data *cfdata) +{ + int i; + E_Config_Binding_Mouse *eb; + E_Config_Binding_Wheel *bw; + + if ((cfdata->current_mouse_binding) || (cfdata->current_wheel_binding)) + _fill_action_ilist(cfdata); + else + { + _update_action_params(cfdata); + e_widget_ilist_clear(cfdata->gui.o_action_list); + return; + } + + if (cfdata->mouse_binding < 3) + { + eb = cfdata->current_mouse_binding; + + for (i = 0; i < E_ACTION_NUMBER; i++) + { + if (!strcmp(eb->action, action_to_name[i][0])) + break; + } + e_widget_ilist_selected_set(cfdata->gui.o_action_list, i); + } + else + { + bw = cfdata->current_wheel_binding; + + for (i = 0; i < E_ACTION_NUMBER; i++) + { + if (!strcmp(bw->action, action_to_name[i][0])) + break; + } + e_widget_ilist_selected_set(cfdata->gui.o_action_list, i); + } +} + +static void +_update_action_params(E_Config_Dialog_Data *cfdata) +{ + E_Config_Binding_Mouse *eb; + E_Config_Binding_Wheel *bw; + + if ((!cfdata->current_mouse_binding) && (!cfdata->current_wheel_binding)) + { + e_widget_entry_clear(cfdata->gui.o_params); + e_widget_disabled_set(cfdata->gui.o_params, 1); + return; + } + e_widget_disabled_set(cfdata->gui.o_params, 0); + + if (cfdata->mouse_binding < 3) + { + eb = cfdata->current_mouse_binding; + if (eb->params) + e_widget_entry_text_set(cfdata->gui.o_params, eb->params); + else + e_widget_entry_clear(cfdata->gui.o_params); + } + else + { + bw = cfdata->current_wheel_binding; + if (bw->params) + e_widget_entry_text_set(cfdata->gui.o_params, bw->params); + else + e_widget_entry_clear(cfdata->gui.o_params); + } +} + +static void +_fill_action_ilist(E_Config_Dialog_Data *cfdata) +{ + char buf[256]; + int j; + + if (e_widget_ilist_count(cfdata->gui.o_action_list)) + return; + + for (j = 0; j < E_ACTION_NUMBER; j++) + { + snprintf(buf, sizeof(buf), "%d", j); + e_widget_ilist_append(cfdata->gui.o_action_list, NULL, action_to_name[j][1], + _action_ilist_change_cb, cfdata, buf); + } + e_widget_ilist_go(cfdata->gui.o_action_list); +} + + +static void +_apply_binding_changes(E_Config_Dialog_Data *cfdata) +{ + E_Config_Binding_Mouse *eb; + E_Config_Binding_Wheel *bw; + + if (cfdata->current_mouse_binding) + { + eb = cfdata->current_mouse_binding; + + eb->context = cfdata->context; + eb->modifiers = E_BINDING_MODIFIER_NONE; + if (cfdata->shift_mod) + eb->modifiers |= E_BINDING_MODIFIER_SHIFT; + if (cfdata->ctrl_mod) + eb->modifiers |= E_BINDING_MODIFIER_CTRL; + if (cfdata->alt_mod) + eb->modifiers |= E_BINDING_MODIFIER_ALT; + if (cfdata->win_mod) + eb->modifiers |= E_BINDING_MODIFIER_WIN; + if (eb->action) evas_stringshare_del(eb->action); + eb->action = evas_stringshare_add(action_to_name[atoi(cfdata->action_ilist_value)][0]); + if (eb->params) evas_stringshare_del(eb->params); + eb->params = cfdata->params[0] ? evas_stringshare_add(cfdata->params) : NULL; + } + else if (cfdata->current_wheel_binding) + { + bw = cfdata->current_wheel_binding; + + bw->context = cfdata->context; + bw->direction = 0; + bw->modifiers = E_BINDING_MODIFIER_NONE; + if (cfdata->shift_mod) + bw->modifiers |= E_BINDING_MODIFIER_SHIFT; + if (cfdata->ctrl_mod) + bw->modifiers |= E_BINDING_MODIFIER_CTRL; + if (cfdata->alt_mod) + bw->modifiers |= E_BINDING_MODIFIER_ALT; + if (cfdata->win_mod) + bw->modifiers |= E_BINDING_MODIFIER_WIN; + if (bw->action) evas_stringshare_del(bw->action); + bw->action = evas_stringshare_add(action_to_name[atoi(cfdata->action_ilist_value)][0]); + if (bw->params) evas_stringshare_del(bw->params); + bw->params = cfdata->params[0] ? evas_stringshare_add(cfdata->params) : NULL; + } +} + +static void +_update_delete_button(E_Config_Dialog_Data *cfdata) +{ + if (evas_list_count(cfdata->mouse_bindings[cfdata->mouse_binding])) + e_widget_disabled_set(cfdata->gui.o_del, 0); + else + e_widget_disabled_set(cfdata->gui.o_del, 1); +} + +/* callbacks */ +static void +_binding_change_cb(void *data, Evas_Object *obj) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + + _apply_binding_changes(cfdata); + cfdata->current_mouse_binding = NULL; + cfdata->current_wheel_binding = NULL; + + _update_binding_action_list(cfdata); + _update_delete_button(cfdata); +} + +static void +_binding_action_ilist_change_cb(void *data) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + + _apply_binding_changes(cfdata); + + if (cfdata->mouse_binding < 3) + { + cfdata->current_mouse_binding = + evas_list_nth(cfdata->mouse_bindings[cfdata->mouse_binding], + atoi(cfdata->binding_ilist_value)); + cfdata->current_wheel_binding = NULL; + } + else + { + cfdata->current_mouse_binding = NULL; + cfdata->current_wheel_binding = + evas_list_nth(cfdata->mouse_bindings[cfdata->mouse_binding], + atoi(cfdata->binding_ilist_value)); + } + + _update_context_radios(cfdata); + _update_mod_key_check_boxes(cfdata); + _update_action_list(cfdata); + _update_action_params(cfdata); +} + +static void +_action_ilist_change_cb(void *data) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + _update_action_params(cfdata); +} + +static void +_add_binding_cb(void *data, void *data2) +{ + E_Config_Dialog_Data *cfdata; + E_Config_Binding_Mouse *bm; + E_Config_Binding_Wheel *bw; + + cfdata = data; + + if (cfdata->mouse_binding < 3) + { + bm = E_NEW(E_Config_Binding_Mouse, 1); + if (!bm) return; + bm->context = E_BINDING_CONTEXT_ANY; + switch (cfdata->mouse_binding) + { + case 0: + bm->button = 1; + break; + case 1: + bm->button = 2; + break; + case 2: + bm->button = 3; + break; + } + bm->modifiers = E_BINDING_MODIFIER_NONE; + bm->any_mod = 0; + bm->action = evas_stringshare_add(action_to_name[0][0]); + bm->params = NULL; + + cfdata->mouse_bindings[cfdata->mouse_binding] = + evas_list_append(cfdata->mouse_bindings[cfdata->mouse_binding], bm); + } + else + { + bw = E_NEW(E_Config_Binding_Wheel, 1); + if (!bw) return; + bw->context = E_BINDING_CONTEXT_ANY; + bw->direction = 0; + if (cfdata->mouse_binding == 3) + bw->z = -1; + else if (cfdata->mouse_binding == 4) + bw->z = 1; + bw->modifiers = E_BINDING_MODIFIER_NONE; + bw->any_mod = 0; + bw->action = evas_stringshare_add(action_to_name[0][0]); + bw->params = NULL; + + cfdata->mouse_bindings[cfdata->mouse_binding] = + evas_list_append(cfdata->mouse_bindings[cfdata->mouse_binding], bw); + } + + _update_binding_action_list(cfdata); + _update_delete_button(cfdata); + e_widget_ilist_selected_set(cfdata->gui.o_binding_action_list, + e_widget_ilist_count(cfdata->gui.o_binding_action_list) - 1); +} + +static void +_delete_binding_cb(void *data, void *data2) +{ + int current_selection = 0; + E_Config_Dialog_Data *cfdata; + E_Config_Binding_Mouse *bm; + E_Config_Binding_Wheel *bw; + + cfdata = data; + current_selection = e_widget_ilist_selected_get(cfdata->gui.o_binding_action_list); + + if (cfdata->mouse_binding < 3) + { + bm = cfdata->current_mouse_binding; + cfdata->mouse_bindings[cfdata->mouse_binding] = + evas_list_remove(cfdata->mouse_bindings[cfdata->mouse_binding], bm); + + if (bm->action) evas_stringshare_del(bm->action); + if (bm->params) evas_stringshare_del(bm->params); + E_FREE(bm); + cfdata->current_mouse_binding = NULL; + } + else + { + bw = cfdata->current_wheel_binding; + cfdata->mouse_bindings[cfdata->mouse_binding] = + evas_list_remove(cfdata->mouse_bindings[cfdata->mouse_binding], bw); + + if (bw->action) evas_stringshare_del(bw->action); + if (bw->params) evas_stringshare_del(bw->params); + E_FREE(bw); + cfdata->current_wheel_binding = NULL; + } + + _update_binding_action_list(cfdata); + + if (!e_widget_ilist_count(cfdata->gui.o_binding_action_list)) + { + _update_context_radios(cfdata); + _update_mod_key_check_boxes(cfdata); + _update_action_list(cfdata); + _update_action_params(cfdata); + _update_delete_button(cfdata); + } + else + { + if (current_selection >= e_widget_ilist_count(cfdata->gui.o_binding_action_list)) + e_widget_ilist_selected_set(cfdata->gui.o_binding_action_list, + e_widget_ilist_count(cfdata->gui.o_binding_action_list) - 1); + else + e_widget_ilist_selected_set(cfdata->gui.o_binding_action_list, current_selection); + } +} diff --git a/src/bin/e_int_config_mousebindings.h b/src/bin/e_int_config_mousebindings.h new file mode 100644 index 000000000..c23b53ae0 --- /dev/null +++ b/src/bin/e_int_config_mousebindings.h @@ -0,0 +1,9 @@ +#ifdef E_TYPEDEFS +#else +#ifndef E_INT_CONFIG_MOUSEBINDINGS_H +#define E_INT_CONFIG_MOUSEBINDINGS_H + +EAPI E_Config_Dialog *e_int_config_mousebindings(E_Container *con); + +#endif +#endif