Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_config_dialog.c e_dialog.c e_dialog.h e_int_config_focus.c e_widget.c e_widget_button.c e_widget_check.c e_widget_radio.c Log Message: config dialogs now can enable/disable widgets and dialog buttons. ok and apply are disabeld until a change is made - then they get enabled until u apply (or ok) then they disable again until u change things again etc. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config_dialog.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_config_dialog.c 15 Oct 2005 05:38:27 -0000 1.7 +++ e_config_dialog.c 16 Oct 2005 07:32:11 -0000 1.8 @@ -11,6 +11,7 @@ static void _e_config_dialog_cb_apply(void *data, E_Dialog *dia); static void _e_config_dialog_cb_advanced(void *data, void *data2); static void _e_config_dialog_cb_basic(void *data, void *data2); +static void _e_config_dialog_cb_changed(void *data, Evas_Object *obj); /* local subsystem globals */ @@ -106,11 +107,14 @@ } e_widget_min_size_get(o, &mw, &mh); + e_widget_on_change_hook_set(o, _e_config_dialog_cb_changed, cfd); e_dialog_content_set(cfd->dia, o, mw, mh); e_dialog_button_add(cfd->dia, _("OK"), NULL, _e_config_dialog_cb_ok, cfd); e_dialog_button_add(cfd->dia, _("Apply"), NULL, _e_config_dialog_cb_apply, cfd); e_dialog_button_add(cfd->dia, _("Cancel"), NULL, NULL, NULL); + e_dialog_button_disable_num_set(cfd->dia, 0, 1); + e_dialog_button_disable_num_set(cfd->dia, 1, 1); e_win_centered_set(cfd->dia->win, 1); e_dialog_show(cfd->dia); cfd->view_type = type; @@ -157,6 +161,8 @@ cfd->view.basic.apply_cfdata(cfd, cfd->cfdata); else cfd->view.advanced.apply_cfdata(cfd, cfd->cfdata); + e_dialog_button_disable_num_set(cfd->dia, 0, 1); + e_dialog_button_disable_num_set(cfd->dia, 1, 1); } static void @@ -176,3 +182,13 @@ cfd = data; _e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_BASIC); } + +static void +_e_config_dialog_cb_changed(void *data, Evas_Object *obj) +{ + E_Config_Dialog *cfd; + + cfd = data; + e_dialog_button_disable_num_set(cfd->dia, 0, 0); + e_dialog_button_disable_num_set(cfd->dia, 1, 0); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_dialog.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- e_dialog.c 14 Oct 2005 19:19:37 -0000 1.27 +++ e_dialog.c 16 Oct 2005 07:32:11 -0000 1.28 @@ -93,6 +93,16 @@ return 1; } +int +e_dialog_button_disable_num_set(E_Dialog *dia, int button, int disabled) +{ + Evas_Object *o; + + o = evas_list_nth(dia->buttons, button); + if (o) e_widget_disabled_set(o, disabled); + return 1; +} + void e_dialog_title_set(E_Dialog *dia, char *title) { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_dialog.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_dialog.h 12 Oct 2005 16:02:33 -0000 1.7 +++ e_dialog.h 16 Oct 2005 07:32:11 -0000 1.8 @@ -27,14 +27,15 @@ void *data; }; -EAPI E_Dialog *e_dialog_new (E_Container *con); -EAPI void e_dialog_button_add (E_Dialog *dia, char *label, char *icon, void (*func) (void *data, E_Dialog *dia), void *data); -EAPI int e_dialog_button_focus_num (E_Dialog *dia, int button); -EAPI void e_dialog_title_set (E_Dialog *dia, char *title); -EAPI void e_dialog_text_set (E_Dialog *dia, char *text); -EAPI void e_dialog_icon_set (E_Dialog *dia, char *icon, Evas_Coord size); -EAPI void e_dialog_content_set (E_Dialog *dia, Evas_Object *obj, Evas_Coord minw, Evas_Coord minh); -EAPI void e_dialog_show (E_Dialog *dia); +EAPI E_Dialog *e_dialog_new (E_Container *con); +EAPI void e_dialog_button_add (E_Dialog *dia, char *label, char *icon, void (*func) (void *data, E_Dialog *dia), void *data); +EAPI int e_dialog_button_focus_num (E_Dialog *dia, int button); +EAPI int e_dialog_button_disable_num_set (E_Dialog *dia, int button, int disabled); +EAPI void e_dialog_title_set (E_Dialog *dia, char *title); +EAPI void e_dialog_text_set (E_Dialog *dia, char *text); +EAPI void e_dialog_icon_set (E_Dialog *dia, char *icon, Evas_Coord size); +EAPI void e_dialog_content_set (E_Dialog *dia, Evas_Object *obj, Evas_Coord minw, Evas_Coord minh); +EAPI void e_dialog_show (E_Dialog *dia); #endif #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_focus.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_int_config_focus.c 15 Oct 2005 03:09:46 -0000 1.4 +++ e_int_config_focus.c 16 Oct 2005 07:32:11 -0000 1.5 @@ -45,6 +45,18 @@ } /**--CREATE--**/ +static void +_fill_data(CFData *cfdata) +{ + cfdata->focus_policy = e_config->focus_policy; + cfdata->focus_setting = e_config->focus_setting; + cfdata->pass_click_on = e_config->pass_click_on; + cfdata->always_click_to_raise = e_config->always_click_to_raise; + cfdata->always_click_to_focus = e_config->always_click_to_focus; + + cfdata->mode = cfdata->focus_policy; +} + static void * _create_data(E_Config_Dialog *cfd) { @@ -55,14 +67,7 @@ CFData *cfdata; cfdata = E_NEW(CFData, 1); - cfdata->focus_policy = e_config->focus_policy; - cfdata->focus_setting = e_config->focus_setting; - cfdata->pass_click_on = e_config->pass_click_on; - cfdata->always_click_to_raise = e_config->always_click_to_raise; - cfdata->always_click_to_focus = e_config->always_click_to_focus; - - cfdata->mode = cfdata->focus_policy; - + _fill_data(cfdata); return cfdata; } @@ -131,6 +136,8 @@ Evas_Object *o, *ob; E_Radio_Group *rg; + _fill_data(cfdata); + o = e_widget_list_add(evas, 0, 0); rg = e_widget_radio_group_new(&(cfdata->mode)); ob = e_widget_radio_add(evas, _("Click Window to Focus"), E_FOCUS_CLICK, rg); @@ -149,6 +156,8 @@ Evas_Object *o, *ob, *of; E_Radio_Group *rg; + _fill_data(cfdata); + o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("Focus"), 0); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_widget.c 16 Oct 2005 05:59:18 -0000 1.3 +++ e_widget.c 16 Oct 2005 07:32:11 -0000 1.4 @@ -202,9 +202,7 @@ e_widget_focus_jump(Evas_Object *obj, int forward) { API_ENTRY return 0; - if ((!e_widget_can_focus_get(obj)) || - (e_widget_disabled_get(obj))) - return 0; + if (!e_widget_can_focus_get(obj)) return 0; /* if it has a focus func its an end-point widget like a button */ if (sd->focus_func) @@ -235,10 +233,10 @@ { for (l = sd->subobjs; l; l = l->next) { - if ((e_widget_can_focus_get(l->data)) && - (!e_widget_disabled_get(l->data))) + if (e_widget_can_focus_get(l->data)) { - if (focus_next) + if ((focus_next) && + (!e_widget_disabled_get(l->data))) { /* the previous focused item was unfocused - so focus * the next one (that can be focused) */ @@ -262,10 +260,10 @@ { for (l = evas_list_last(sd->subobjs); l; l = l->prev) { - if ((e_widget_can_focus_get(l->data)) && - (!e_widget_disabled_get(l->data))) + if (e_widget_can_focus_get(l->data)) { - if (focus_next) + if ((focus_next) && + (!e_widget_disabled_get(l->data))) { /* the previous focused item was unfocused - so focus * the next one (that can be focused) */ @@ -405,13 +403,31 @@ { API_ENTRY return; if (sd->on_change_func) sd->on_change_func(sd->on_change_data, obj); + else e_widget_change(e_widget_parent_get(obj)); } void e_widget_disabled_set(Evas_Object *obj, int disabled) { API_ENTRY return; + if (((sd->disabled) && (disabled)) || + ((!sd->disabled) && (!disabled))) return; sd->disabled = disabled; + if (sd->focused) + { + Evas_Object *o, *parent; + + printf("disable focused %p!\n", obj); + parent = obj; + for (;;) + { + o = e_widget_parent_get(parent); + if (!o) break; + parent = o; + } + printf("jump %p\n", parent); + e_widget_focus_jump(parent, 1); + } if (sd->disable_func) sd->disable_func(obj); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_button.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_widget_button.c 16 Oct 2005 05:59:18 -0000 1.4 +++ e_widget_button.c 16 Oct 2005 07:32:11 -0000 1.5 @@ -16,6 +16,7 @@ static void _e_wid_del_hook(Evas_Object *obj); static void _e_wid_focus_hook(Evas_Object *obj); static void _e_wid_activate_hook(Evas_Object *obj); +static void _e_wid_disable_hook(Evas_Object *obj); static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); /* local subsystem functions */ @@ -33,6 +34,7 @@ e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_focus_hook_set(obj, _e_wid_focus_hook); e_widget_activate_hook_set(obj, _e_wid_activate_hook); + e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); wd->func = func; wd->data = data; @@ -106,6 +108,18 @@ } static void +_e_wid_disable_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + if (e_widget_disabled_get(obj)) + edje_object_signal_emit(wd->o_button, "disabled", ""); + else + edje_object_signal_emit(wd->o_button, "enabled", ""); +} + +static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source) { e_widget_focus_steal(data); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_check.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_widget_check.c 16 Oct 2005 05:59:18 -0000 1.6 +++ e_widget_check.c 16 Oct 2005 07:32:11 -0000 1.7 @@ -14,6 +14,7 @@ static void _e_wid_focus_hook(Evas_Object *obj); static void _e_wid_do(Evas_Object *obj); static void _e_wid_activate_hook(Evas_Object *obj); +static void _e_wid_disable_hook(Evas_Object *obj); static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -32,6 +33,7 @@ e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_focus_hook_set(obj, _e_wid_focus_hook); e_widget_activate_hook_set(obj, _e_wid_activate_hook); + e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); wd->valptr = val; e_widget_data_set(obj, wd); @@ -112,6 +114,18 @@ } static void +_e_wid_disable_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + if (e_widget_disabled_get(obj)) + edje_object_signal_emit(wd->o_check, "disabled", ""); + else + edje_object_signal_emit(wd->o_check, "enabled", ""); +} + +static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source) { _e_wid_do(data); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_radio.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_widget_radio.c 16 Oct 2005 05:59:18 -0000 1.5 +++ e_widget_radio.c 16 Oct 2005 07:32:11 -0000 1.6 @@ -21,6 +21,7 @@ static void _e_wid_focus_hook(Evas_Object *obj); static void _e_wid_do(Evas_Object *obj); static void _e_wid_activate_hook(Evas_Object *obj); +static void _e_wid_disable_hook(Evas_Object *obj); static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); /* local subsystem functions */ @@ -48,6 +49,7 @@ e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_focus_hook_set(obj, _e_wid_focus_hook); e_widget_activate_hook_set(obj, _e_wid_activate_hook); + e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); wd->group = group; wd->valnum = valnum; @@ -152,6 +154,18 @@ } static void +_e_wid_disable_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + if (e_widget_disabled_get(obj)) + edje_object_signal_emit(wd->o_radio, "disabled", ""); + else + edje_object_signal_emit(wd->o_radio, "enabled", ""); +} + +static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source) { _e_wid_do(data); ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs