Enlightenment CVS committal Author : rephorm Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: Makefile.am e_includes.h e_int_config_wallpaper.c e_spectrum.c e_test.c e_widget_color_well.c e_widget_color_well.h e_widget_csel.c e_widget_cslider.c e_widget_spectrum.c Added Files: e_color_dialog.c e_color_dialog.h e_int_config_wallpaper_gradient.c e_int_config_wallpaper_gradient.h Log Message: add gradient bg dialog. finish up the color selector widgets (plug some leaks) TODO: * color_dialog needs a way of specifying initial color * color_well needs to use this when showing its color dialog * the grad dialog should remember the last selected colors * the color dialog whould probably keep a list of favorite / recent colors Also, it looks like there's a leak (according to valgrind at least) in e_editable.c when you set the text and it reallocs. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/Makefile.am,v retrieving revision 1.141 retrieving revision 1.142 diff -u -3 -r1.141 -r1.142 --- Makefile.am 20 Aug 2006 04:48:27 -0000 1.141 +++ Makefile.am 20 Aug 2006 21:18:29 -0000 1.142 @@ -172,7 +172,9 @@ e_widget_csel.h \ e_widget_color_well.h \ e_int_config_wallpaper.h \ -e_int_config_wallpaper_import.h +e_int_config_wallpaper_import.h \ +e_int_config_wallpaper_gradient.h \ +e_color_dialog.h enlightenment_src = \ e_user.c \ @@ -321,6 +323,8 @@ e_widget_color_well.c \ e_int_config_wallpaper.c \ e_int_config_wallpaper_import.c \ +e_int_config_wallpaper_gradient.c \ +e_color_dialog.c \ $(ENLIGHTENMENTHEADERS) enlightenment_SOURCES = \ =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_includes.h,v retrieving revision 1.119 retrieving revision 1.120 diff -u -3 -r1.119 -r1.120 --- e_includes.h 20 Aug 2006 04:48:27 -0000 1.119 +++ e_includes.h 20 Aug 2006 21:18:29 -0000 1.120 @@ -149,3 +149,4 @@ #include "e_widget_cslider.h" #include "e_widget_color_well.h" #include "e_widget_csel.h" +#include "e_color_dialog.h" =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_wallpaper.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_int_config_wallpaper.c 16 Aug 2006 12:24:23 -0000 1.5 +++ e_int_config_wallpaper.c 20 Aug 2006 21:18:29 -0000 1.6 @@ -30,6 +30,7 @@ int all_this_desk_screen; /* dialogs */ E_Win *win_import; + E_Dialog *dia_gradient; }; EAPI E_Config_Dialog * @@ -91,6 +92,15 @@ cfdata->win_import = NULL; } +EAPI void +e_int_config_wallpaper_gradient_done(E_Config_Dialog *dia) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = dia->cfdata; + cfdata->dia_gradient = NULL; +} + static void _cb_button_up(void *data1, void *data2) @@ -163,7 +173,6 @@ E_Config_Dialog_Data *cfdata; cfdata = data; - printf("SEL\n"); } static void @@ -255,8 +264,18 @@ else cfdata->win_import = e_int_config_wallpaper_import(cfdata->cfd); } - - +static void +_cb_gradient(void *data1, void *data2) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data1; + if (cfdata->dia_gradient) + { + e_win_raise(cfdata->dia_gradient->win); + } + else cfdata->dia_gradient = e_int_config_wallpaper_gradient(cfdata->cfd); +} static void _fill_data(E_Config_Dialog_Data *cfdata) @@ -324,6 +343,7 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { if (cfdata->win_import) e_int_config_wallpaper_del(cfdata->win_import); + //if (cfdata->dia_gradient) e_int_config_wallpaper_gradient_del(cfdata->dia_gradient); E_FREE(cfdata->bg); free(cfdata); } @@ -424,7 +444,7 @@ _cb_import, cfdata, NULL); e_widget_list_object_append(ol, o, 1, 0, 0.5); o = e_widget_button_add(evas, _("Gradient..."), "enlightenment/gradient", - NULL, cfdata, NULL); + _cb_gradient, cfdata, NULL); e_widget_list_object_append(ol, o, 1, 0, 0.5); e_widget_list_object_append(il, ol, 1, 0, 0.5); e_widget_list_object_append(of, il, 1, 0, 0.0); @@ -564,7 +584,7 @@ _cb_import, cfdata, NULL); e_widget_list_object_append(ol, o, 1, 0, 0.5); o = e_widget_button_add(evas, _("Gradient..."), "enlightenment/gradient", - NULL, cfdata, NULL); + _cb_gradient, cfdata, NULL); e_widget_list_object_append(ol, o, 1, 0, 0.5); e_widget_list_object_append(il, ol, 1, 0, 0.5); e_widget_list_object_append(of, il, 1, 0, 0.0); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_spectrum.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_spectrum.c 17 Aug 2006 16:58:32 -0000 1.7 +++ e_spectrum.c 20 Aug 2006 21:18:29 -0000 1.8 @@ -55,6 +55,8 @@ evas_object_del(sp->o_cursor); if (sp->draw_timer) ecore_timer_del(sp->draw_timer); + + E_FREE(sp); } static void =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_test.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -3 -r1.68 -r1.69 --- e_test.c 20 Aug 2006 04:48:27 -0000 1.68 +++ e_test.c 20 Aug 2006 21:18:29 -0000 1.69 @@ -652,39 +652,19 @@ #elif 0 static void -_e_test_cb_change(void *data, Evas_Object *obj) +_e_test_cb_ok(E_Color_Dialog *dia, E_Color *color, void *data) { - E_Color *c = data; - printf("Current color: %d, %d, %d\n", c->r, c->g, c->b); + printf("Current color: %d, %d, %d\n", color->r, color->g, color->b); } static void _e_test_internal(E_Container *con) { - E_Dialog *dia; - Evas_Object *o; - Evas_Coord mw, mh; - E_Color *color; + E_Color_Dialog *d; - dia = e_dialog_new(con, "E", "_test"); - e_dialog_title_set(dia, "Test Color Selector"); - - color = calloc(1, sizeof(E_Color)); - color->a = 255; - - o = e_widget_csel_add(dia->win->evas, color); - evas_object_show(o); - e_widget_on_change_hook_set(o, _e_test_cb_change, color); - e_widget_min_size_get(o, &mw, &mh); - e_dialog_content_set(dia, o, mw, mh); - - /* buttons at the bottom */ - e_dialog_button_add(dia, "Cancel", NULL, NULL, NULL); - e_dialog_button_add(dia, "OK", NULL, NULL, NULL); - e_dialog_resizable_set(dia, 1); - e_win_centered_set(dia->win, 1); - e_dialog_show(dia); - e_win_resize(dia->win, 460, 260); + d = e_color_dialog_new(con); + e_color_dialog_show(d); + e_color_dialog_select_callback_add(d, _e_test_cb_ok, NULL); } #else =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_color_well.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_widget_color_well.c 15 Aug 2006 00:54:33 -0000 1.1 +++ e_widget_color_well.c 20 Aug 2006 21:18:30 -0000 1.2 @@ -9,9 +9,17 @@ Evas_Object *obj; Evas_Object *o_edje; Evas_Object *o_rect; + + E_Color_Dialog *dia; E_Color *color; + E_Container *con; // container to pop a color dialog up on }; +static void _e_wid_update(E_Widget_Data *wd); +static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_wid_color_select_cb(E_Color_Dialog *dia, E_Color *color, void *data); +static void _e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data); + static void _e_wid_update(E_Widget_Data *wd) { @@ -21,26 +29,82 @@ e_widget_change(wd->obj); } +static void +_e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Evas_Object *wid; + E_Widget_Data *wd; + + wid = data; + wd = e_widget_data_get(wid); + + if (!wd->con) return; + if (!wd->dia) + { + wd->dia = e_color_dialog_new(wd->con); + e_color_dialog_select_callback_add(wd->dia, _e_wid_color_select_cb, wd); + e_color_dialog_cancel_callback_add(wd->dia, _e_wid_color_cancel_cb, wd); + } + e_color_dialog_show(wd->dia); +} + +static void +_e_wid_color_select_cb(E_Color_Dialog *dia, E_Color *color, void *data) +{ + E_Widget_Data *wd; + wd = data; + e_color_copy(color, wd->color); + _e_wid_update(wd); + wd->dia = NULL; +} + +static void +_e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data) +{ + E_Widget_Data *wd; + wd = data; + wd->dia = NULL; +} + +static void +_e_wid_del_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + int i; + + wd = e_widget_data_get(obj); + if (!wd) return; + + E_FREE(wd); +} + +/** + * Add a color well widget to an evas. + * An optional E_Container may be passed in. If not NULL, when clicked a color dialog will pop up. + */ Evas_Object * -e_widget_color_well_add(Evas *evas, E_Color *color) +e_widget_color_well_add(Evas *evas, E_Color *color, E_Container *con) { Evas_Object *obj, *o; Evas_Coord mw, mh; E_Widget_Data *wd; obj = e_widget_add(evas); + e_widget_del_hook_set(obj, _e_wid_del_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); - wd->color = color; wd->obj = obj; + wd->color = color; + wd->con = con; + o = edje_object_add(evas); e_widget_sub_object_add(obj, o); e_widget_resize_object_set(obj, o); e_theme_edje_object_set(o, "base/theme/widgets", "widgets/color_well"); - + edje_object_signal_callback_add(o, "click", "", _e_wid_signal_cb1, obj); evas_object_show(o); wd->o_edje = o; @@ -57,6 +121,9 @@ return obj; } +/** + * Let the color well know that its color data has changed. + */ void e_widget_color_well_update(Evas_Object *obj) { @@ -65,6 +132,5 @@ wd = e_widget_data_get(obj); _e_wid_update(wd); } - =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_color_well.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_widget_color_well.h 15 Aug 2006 00:54:33 -0000 1.1 +++ e_widget_color_well.h 20 Aug 2006 21:18:30 -0000 1.2 @@ -1,7 +1,7 @@ #ifndef E_WIDGET_COLOR_WELL_H #define E_WIDGET_COLOR_WELL_H -void e_widget_color_well_update(Evas_Object *obj); -Evas_Object *e_widget_color_well_add(Evas *evas, E_Color *color); +EAPI Evas_Object *e_widget_color_well_add (Evas *evas, E_Color *color, E_Container *con); +EAPI void e_widget_color_well_update (Evas_Object *obj); #endif =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_csel.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_widget_csel.c 17 Aug 2006 16:58:32 -0000 1.5 +++ e_widget_csel.c 20 Aug 2006 21:18:30 -0000 1.6 @@ -17,6 +17,27 @@ }; static void +_e_wid_del_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + int i; + + wd = e_widget_data_get(obj); + if (!wd) return; + + for (i = 0; i < E_COLOR_COMPONENT_MAX; i++) + { + E_FREE(wd->values[i]); + } + E_FREE(wd->values); + + evas_list_free(wd->sliders); + evas_list_free(wd->entries); + + E_FREE(wd); +} + +static void _e_wid_cb_radio_changed(void *data, Evas_Object *o) { E_Widget_Data *wd = data; @@ -148,18 +169,19 @@ { Evas_Object *obj, *o; Evas_Object *frame, *table; - E_Color*cv; int i; E_Radio_Group *grp = NULL; char *labels[6] = { "R", "G", "B", "H", "S", "V" }; E_Widget_Data *wd; obj = e_widget_add(evas); + e_widget_del_hook_set(obj, _e_wid_del_hook); wd = calloc(1, sizeof(E_Widget_Data)); wd->mode = 1; wd->cv = color; wd->obj = obj; + e_widget_data_set(obj, wd); table = e_widget_table_add(evas, 0); e_widget_sub_object_add(obj, table); @@ -177,22 +199,22 @@ switch(i) { case E_COLOR_COMPONENT_R: - snprintf(wd->values[i], 10, "%i", cv->r); + snprintf(wd->values[i], 10, "%i", wd->cv->r); break; case E_COLOR_COMPONENT_G: - snprintf(wd->values[i], 10, "%i", cv->g); + snprintf(wd->values[i], 10, "%i", wd->cv->g); break; case E_COLOR_COMPONENT_B: - snprintf(wd->values[i], 10, "%i", cv->b); + snprintf(wd->values[i], 10, "%i", wd->cv->b); break; case E_COLOR_COMPONENT_H: - snprintf(wd->values[i], 10, "%.0f", cv->h); + snprintf(wd->values[i], 10, "%.0f", wd->cv->h); break; case E_COLOR_COMPONENT_S: - snprintf(wd->values[i], 10, "%.2f", cv->s); + snprintf(wd->values[i], 10, "%.2f", wd->cv->s); break; case E_COLOR_COMPONENT_V: - snprintf(wd->values[i], 11, "%.2f", cv->v); + snprintf(wd->values[i], 11, "%.2f", wd->cv->v); break; } @@ -201,7 +223,7 @@ e_widget_on_change_hook_set(o, _e_wid_cb_radio_changed, wd); e_widget_frametable_object_append(frame, o, 0, i, 1, 1, 1, 1, 0, 0); - o = e_widget_cslider_add(evas, i, cv, 0, 0); + o = e_widget_cslider_add(evas, i, wd->cv, 0, 0); e_widget_sub_object_add(obj, o); evas_object_show(o); wd->sliders = evas_list_append(wd->sliders, o); @@ -217,23 +239,24 @@ } - o = e_widget_spectrum_add(evas, wd->mode, cv); + o = e_widget_spectrum_add(evas, wd->mode, wd->cv); e_widget_sub_object_add(obj, o); evas_object_show(o); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); wd->spectrum = o; e_widget_table_object_append(table, o, 1, 1, 1, 1, 1, 1, 1, 1); - o = e_widget_cslider_add(evas, wd->mode, cv, 1, 1); + o = e_widget_cslider_add(evas, wd->mode, wd->cv, 1, 1); e_widget_sub_object_add(obj, o); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); + e_widget_min_size_set(o, 30, 50); evas_object_show(o); wd->vert = o; - e_widget_table_object_append(table, o, 2, 1, 1, 1, 1, 1, 0, 1); + e_widget_table_object_append(table, o, 2, 1, 1, 1, 0, 1, 0, 1); e_widget_table_object_append(table, frame, 3, 1, 1, 1, 1, 1, 1, 1); - o = e_widget_color_well_add(evas, cv); + o = e_widget_color_well_add(evas, wd->cv, NULL); e_widget_sub_object_add(obj, o); evas_object_show(o); wd->well = o; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_cslider.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_widget_cslider.c 17 Aug 2006 16:58:32 -0000 1.3 +++ e_widget_cslider.c 20 Aug 2006 21:18:30 -0000 1.4 @@ -15,7 +15,6 @@ int fixed; E_Color_Component mode; int valnum; - //int r, g, b, a; E_Color *color; int dragging; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_spectrum.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_widget_spectrum.c 15 Aug 2006 00:54:33 -0000 1.2 +++ e_widget_spectrum.c 20 Aug 2006 21:18:30 -0000 1.3 @@ -77,6 +77,7 @@ o = evas_object_rectangle_add(evas); evas_object_color_set(o, 0, 0, 0, 0); + e_widget_sub_object_add(obj, o); evas_object_show(o); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj); ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs