Enlightenment CVS committal Author : rephorm Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_spectrum.c e_test.c e_widget_csel.c e_widget_csel.h Log Message: make csel a proper widget instead of just a wrapper around table. pass in a color struct to update (use the change hook to know when changes have occured) use a short timer instead of an idler to update the spectrum image data -- ideally, we would add a pre/post render hooks for smart objects. then we could redraw int he pre-render callback. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_spectrum.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_spectrum.c 14 Aug 2006 05:21:16 -0000 1.2 +++ e_spectrum.c 14 Aug 2006 07:05:31 -0000 1.3 @@ -14,7 +14,7 @@ E_Color_Component mode; E_Color *cv; - int draw_queued; + Ecore_Job *draw_timer; }; static int _e_spectrum_redraw(void *d); @@ -36,8 +36,6 @@ evas_object_image_size_set(sp->o_spectrum, sp->iw, sp->ih); evas_object_image_alpha_set(sp->o_spectrum, 1); - ecore_idler_add(_e_spectrum_redraw, sp); - evas_object_smart_member_add(sp->o_spectrum, o); } @@ -52,6 +50,8 @@ evas_object_del(sp->o_spectrum); evas_object_del(sp->o_event); evas_object_del(sp->o_cursor); + + if (sp->draw_timer) ecore_timer_del(sp->draw_timer); } static void @@ -257,7 +257,6 @@ int r, g, b; float vx, vy, vz; - if (!sp->draw_queued) return 1; data = evas_object_image_data_get(sp->o_spectrum, 1); if (!data) return; @@ -297,8 +296,8 @@ evas_object_image_data_set(sp->o_spectrum, data); evas_object_image_data_update_add(sp->o_spectrum, 0, 0, sp->iw, sp->ih); - sp->draw_queued = 0; - return 1; + sp->draw_timer = NULL; + return 0; } static void @@ -306,7 +305,8 @@ { if (!sp || !sp->cv) return; - sp->draw_queued = 1; + if (sp->draw_timer) ecore_timer_del(sp->draw_timer); + sp->draw_timer = ecore_timer_add(.001, _e_spectrum_redraw, sp); } Evas_Object * =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_test.c,v retrieving revision 1.63 retrieving revision 1.64 diff -u -3 -r1.63 -r1.64 --- e_test.c 14 Aug 2006 04:38:49 -0000 1.63 +++ e_test.c 14 Aug 2006 07:05:31 -0000 1.64 @@ -794,17 +794,30 @@ } #elif 0 + +static void +_e_test_cb_change(void *data, Evas_Object *obj) +{ + E_Color *c = data; + printf("Current color: %d, %d, %d\n", c->r, c->g, c->b); +} + static void _e_test_internal(E_Container *con) { E_Dialog *dia; Evas_Object *o; Evas_Coord mw, mh; + E_Color *color; dia = e_dialog_new(con); e_dialog_title_set(dia, "Test Color Selector"); - o = e_widget_csel_add(dia->win->evas); + + color = calloc(1, sizeof(E_Color)); + + 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); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_csel.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_widget_csel.c 14 Aug 2006 04:38:49 -0000 1.1 +++ e_widget_csel.c 14 Aug 2006 07:05:31 -0000 1.2 @@ -6,6 +6,7 @@ typedef struct _E_Widget_Data E_Widget_Data; struct _E_Widget_Data { + Evas_Object *obj; Evas_List *sliders; Evas_List *entries; Evas_Object *spectrum, *vert, *current; @@ -136,12 +137,14 @@ } wd->changing = 0; + + e_widget_change(wd->obj); } Evas_Object * -e_widget_csel_add(Evas *evas) +e_widget_csel_add(Evas *evas, E_Color *color) { - Evas_Object *o; + Evas_Object *obj, *o; Evas_Object *frame, *table; Evas_Coord mw, mh; E_Color*cv; @@ -150,17 +153,21 @@ char *labels[6] = { "R", "G", "B", "H", "S", "V" }; E_Widget_Data *wd; + obj = e_widget_add(evas); + + wd = calloc(1, sizeof(E_Widget_Data)); + wd->mode = 1; + wd->cv = color; + wd->obj = obj; + table = e_widget_table_add(evas, 0); + e_widget_sub_object_add(obj, table); + e_widget_resize_object_set(obj, table); frame = e_widget_frametable_add(evas, "colors", 0); - wd = calloc(1, sizeof(E_Widget_Data)); - wd->mode = 1; + e_widget_sub_object_add(obj, frame); grp = e_widget_radio_group_new(&wd->mode); - // all sliders update a single color value struct - cv = calloc(1, sizeof(E_Color)); - wd->cv = cv; - cv->r = 20; cv->g = 120; cv->b = 79; cv->a = 255; e_color_update_rgb(cv); @@ -193,16 +200,19 @@ } o = e_widget_radio_add(evas, labels[i], i, grp); + e_widget_sub_object_add(obj, o); 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); + e_widget_sub_object_add(obj, o); evas_object_show(o); wd->sliders = evas_list_append(wd->sliders, o); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); e_widget_frametable_object_append(frame, o, 1, i, 1, 1, 1, 1, 1, 0); o = e_widget_entry_add(evas, &(wd->values[i])); + e_widget_sub_object_add(obj, o); evas_object_show(o); wd->entries = evas_list_append(wd->entries, o); e_widget_frametable_object_append(frame, o, 2, i, 1, 1, 1, 1, 1, 1); @@ -211,12 +221,14 @@ } o = e_widget_spectrum_add(evas, wd->mode, 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); + e_widget_sub_object_add(obj, o); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); evas_object_show(o); wd->vert = o; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_csel.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_widget_csel.h 14 Aug 2006 04:38:49 -0000 1.1 +++ e_widget_csel.h 14 Aug 2006 07:05:31 -0000 1.2 @@ -1,6 +1,6 @@ #ifndef E_WIDGET_CSEL_H #define E_WIDGET_CSEL_H -Evas_Object *e_widget_csel_add(Evas *evas); +Evas_Object *e_widget_csel_add(Evas *evas, E_Color *color); #endif ------------------------------------------------------------------------- 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