Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
By: WooHyun Jung wh0705.j...@samsung.com k-s: see some one else is motivated :) On Wed, Dec 1, 2010 at 3:53 AM, Enlightenment SVN no-re...@enlightenment.org wrote: Log: Improve elm_colorselector readability and fix clicked entry sig emission The reason for modifying about elm_colorselector can be readability. Each bar in the colorselector has its own color type (like hue, saturation, ...) So I thought it will be better, if I added enum for each color type. And, for about elm_entry.c , I thought that SIG_CLICKED was wrongly emitted (by MOUSE_UP event). I deleted mouse_up callback function (as you advised), because this function didn't do anything by my modification. By: WooHyun Jung wh0705.j...@samsung.com Author: bdilly Date: 2010-11-30 10:53:52 -0800 (Tue, 30 Nov 2010) New Revision: 55097 Trac: http://trac.enlightenment.org/e/changeset/55097 Modified: trunk/TMP/st/elementary/src/lib/elm_colorselector.c trunk/TMP/st/elementary/src/lib/elm_entry.c Modified: trunk/TMP/st/elementary/src/lib/elm_colorselector.c === --- trunk/TMP/st/elementary/src/lib/elm_colorselector.c 2010-11-30 18:51:16 UTC (rev 55096) +++ trunk/TMP/st/elementary/src/lib/elm_colorselector.c 2010-11-30 18:53:52 UTC (rev 55097) @@ -14,8 +14,22 @@ #define LIG_STEP 256.0 #define ALP_STEP 256.0 +typedef enum _Button_State +{ + BUTTON_RELEASED, + L_BUTTON_PRESSED, + R_BUTTON_PRESSED +} Button_State; + +typedef enum _Color_Type +{ + HUE, + SATURATION, + LIGHTNESS, + ALPHA +} Color_Type; + typedef struct _Colorselector_Data Colorselector_Data; - struct _Colorselector_Data { Evas_Object *parent; @@ -26,12 +40,11 @@ Evas_Object *bg_rect; Evas_Object *arrow; Evas_Object *touch_area; - int colorselector_num; - int button_state; + Color_Type color_type; + Button_State button_state; }; typedef struct _Widget_Data Widget_Data; - struct _Widget_Data { Evas_Object *base; @@ -46,13 +59,6 @@ Ecore_Timer *mv_timer; }; -typedef enum -{ - BUTTON_RELEASED, - L_BUTTON_PRESSED, - R_BUTTON_PRESSED -} Button_State; - static const char *widtype = NULL; static void _del_hook(Evas_Object *obj); @@ -317,9 +323,9 @@ Widget_Data *wd = elm_widget_data_get(cp-parent); double one_six = 1.0 / 6.0; - switch (cp-colorselector_num) + switch (cp-color_type) { - case 0: + case HUE: wd-h = 360.0 * x; if (x one_six) @@ -377,26 +383,25 @@ wd-a); break; - case 1: + case SATURATION: wd-s = 1.0 - x; _color_with_saturation(wd); evas_object_color_set(wd-cp[1]-arrow, wd-sr, wd-sg, wd-sb, 255); break; - case 2: + case LIGHTNESS: wd-l = x; _color_with_lightness(wd); evas_object_color_set(wd-cp[2]-arrow, wd-lr, wd-lg, wd-lb, 255); break; - case 3: + case ALPHA: wd-a = 255.0 * x; evas_object_color_set(wd-cp[3]-arrow, wd-er, wd-eg, wd-eb, wd-a); break; default: break; - } _hsl_to_rgb(wd); } @@ -502,10 +507,23 @@ left_button); edje_object_part_drag_value_get(cp-colorbar, elm.arrow, x, y); - if (!cp-colorselector_num) x -= 1.0 / HUE_STEP; - else if (cp-colorselector_num == 1) x -= 1.0 / SAT_STEP; - else if (cp-colorselector_num == 2) x -= 1.0 / LIG_STEP; - else if (cp-colorselector_num == 3) x -= 1.0 / ALP_STEP; + switch(cp-color_type) + { + case HUE : + x -= 1.0 / HUE_STEP; + break; + case SATURATION : + x -= 1.0 / SAT_STEP; + break; + case LIGHTNESS : + x -= 1.0 / LIG_STEP; + break; + case ALPHA : + x -= 1.0 / ALP_STEP; + break; + default : + break; + } if (x 0.0) x = 0.0; @@ -528,10 +546,23 @@ right_button); edje_object_part_drag_value_get(cp-colorbar, elm.arrow, x, y); - if (!cp-colorselector_num) x += 1.0 / HUE_STEP; - else if (cp-colorselector_num == 1) x += 1.0 / SAT_STEP; - else if (cp-colorselector_num == 2) x += 1.0 / LIG_STEP; - else if (cp-colorselector_num == 3) x += 1.0 / ALP_STEP; + switch(cp-color_type) + { + case HUE : + x += 1.0 / HUE_STEP; + break; + case SATURATION : + x += 1.0 / SAT_STEP; + break; + case LIGHTNESS : + x += 1.0 / LIG_STEP; + break; + case ALPHA : + x += 1.0 / ALP_STEP; + break; + default : + break; + } if (x 1.0) x = 1.0; @@ -602,11 +633,25 @@ for (i = 0; i 4; i++) { wd-cp[i] = ELM_NEW(Colorselector_Data); - wd-cp[i]-parent = obj; - wd-cp[i]-colorselector_num = i; - - /* load
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Tuesday, November 30, 2010, Daniel Juyung Seo seojuyu...@gmail.com wrote: By: WooHyun Jung wh0705.j...@samsung.com k-s: see some one else is motivated :) Yeah! Keep rocking! On Wed, Dec 1, 2010 at 3:53 AM, Enlightenment SVN no-re...@enlightenment.org wrote: Log: Improve elm_colorselector readability and fix clicked entry sig emission The reason for modifying about elm_colorselector can be readability. Each bar in the colorselector has its own color type (like hue, saturation, ...) So I thought it will be better, if I added enum for each color type. And, for about elm_entry.c , I thought that SIG_CLICKED was wrongly emitted (by MOUSE_UP event). I deleted mouse_up callback function (as you advised), because this function didn't do anything by my modification. By: WooHyun Jung wh0705.j...@samsung.com Author: bdilly Date: 2010-11-30 10:53:52 -0800 (Tue, 30 Nov 2010) New Revision: 55097 Trac: http://trac.enlightenment.org/e/changeset/55097 Modified: trunk/TMP/st/elementary/src/lib/elm_colorselector.c trunk/TMP/st/elementary/src/lib/elm_entry.c Modified: trunk/TMP/st/elementary/src/lib/elm_colorselector.c === --- trunk/TMP/st/elementary/src/lib/elm_colorselector.c 2010-11-30 18:51:16 UTC (rev 55096) +++ trunk/TMP/st/elementary/src/lib/elm_colorselector.c 2010-11-30 18:53:52 UTC (rev 55097) @@ -14,8 +14,22 @@ #define LIG_STEP 256.0 #define ALP_STEP 256.0 +typedef enum _Button_State +{ + BUTTON_RELEASED, + L_BUTTON_PRESSED, + R_BUTTON_PRESSED +} Button_State; + +typedef enum _Color_Type +{ + HUE, + SATURATION, + LIGHTNESS, + ALPHA +} Color_Type; + typedef struct _Colorselector_Data Colorselector_Data; - struct _Colorselector_Data { Evas_Object *parent; @@ -26,12 +40,11 @@ Evas_Object *bg_rect; Evas_Object *arrow; Evas_Object *touch_area; - int colorselector_num; - int button_state; + Color_Type color_type; + Button_State button_state; }; typedef struct _Widget_Data Widget_Data; - struct _Widget_Data { Evas_Object *base; @@ -46,13 +59,6 @@ Ecore_Timer *mv_timer; }; -typedef enum -{ - BUTTON_RELEASED, - L_BUTTON_PRESSED, - R_BUTTON_PRESSED -} Button_State; - static const char *widtype = NULL; static void _del_hook(Evas_Object *obj); @@ -317,9 +323,9 @@ Widget_Data *wd = elm_widget_data_get(cp-parent); double one_six = 1.0 / 6.0; - switch (cp-colorselector_num) + switch (cp-color_type) { - case 0: + case HUE: wd-h = 360.0 * x; if (x one_six) @@ -377,26 +383,25 @@ wd-a); break; - case 1: + case SATURATION: wd-s = 1.0 - x; _color_with_saturation(wd); evas_object_color_set(wd-cp[1]-arrow, wd-sr, wd-sg, wd-sb, 255); break; - case 2: + case LIGHTNESS: wd-l = x; _color_with_lightness(wd); evas_object_color_set(wd-cp[2]-arrow, wd-lr, wd-lg, wd-lb, 255); break; - case 3: + case ALPHA: wd-a = 255.0 * x; evas_object_color_set(wd-cp[3]-arrow, wd-er, wd-eg, wd-eb, wd-a); break; default: break; - } _hsl_to_rgb(wd); } @@ -502,10 +507,23 @@ left_button); edje_object_part_drag_value_get(cp-colorbar, elm.arrow, x, y); - if (!cp-colorselector_num) x -= 1.0 / HUE_STEP; - else if (cp-colorselector_num == 1) x -= 1.0 / SAT_STEP; - else if (cp-colorselector_num == 2) x -= 1.0 / LIG_STEP; - else if (cp-colorselector_num == 3) x -= 1.0 / ALP_STEP; + switch(cp-color_type) + { + case HUE : + x -= 1.0 / HUE_STEP; + break; + case SATURATION : + x -= 1.0 / SAT_STEP; + break; + case LIGHTNESS : + x -= 1.0 / LIG_STEP; + break; + case ALPHA : + x -= 1.0 / ALP_STEP; + break; + default : + break; + } if (x 0.0) x = 0.0; @@ -528,10 +546,23 @@ right_button); edje_object_part_drag_value_get(cp-colorbar, elm.arrow, x, y); - if (!cp-colorselector_num) x += 1.0 / HUE_STEP; - else if (cp-colorselector_num == 1) x += 1.0 / SAT_STEP; - else if (cp-colorselector_num == 2) x += 1.0 / LIG_STEP; - else if (cp-colorselector_num == 3) x += 1.0 / ALP_STEP; + switch(cp-color_type) + { + case HUE : + x += 1.0 / HUE_STEP; + break; + case SATURATION : + x += 1.0 / SAT_STEP; + break; + case LIGHTNESS : + x += 1.0 / LIG_STEP; + break; + case ALPHA : + x += 1.0 / ALP_STEP; + break; + default : + break; + } if (x 1.0) x = 1.0; @@ -602,11 +633,25 @@ for (i = 0; i 4; i++) { wd-cp[i] =
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Tue, Oct 19, 2010 at 8:48 AM, Enlightenment SVN no-re...@enlightenment.org wrote: Log: elm_diskpicker: save (list_len - 3) strlen calls demarchi-- for reducing performance just to solve a comparison between signed and unsigned. Author: bdilly Date: 2010-10-19 03:48:11 -0700 (Tue, 19 Oct 2010) New Revision: 53591 Modified: trunk/TMP/st/elementary/src/lib/elm_diskpicker.c Modified: trunk/TMP/st/elementary/src/lib/elm_diskpicker.c === --- trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 05:58:26 UTC (rev 53590) +++ trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 10:48:11 UTC (rev 53591) @@ -388,13 +388,15 @@ EINA_LIST_FOREACH(list, l, it) { - int len = strlen(it-label); Evas_Coord x, w; + int len; evas_object_geometry_get(it-base.view, x, NULL, w, NULL); /* item not visible */ if (x + w = ox || x = ox + ow) continue; + len = strlen(it-label); likely what's in an internal item should be stringshared, then eina_stringshare_strlen() is O(1) :-) -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Tue, Oct 19, 2010 at 8:58 AM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: --- trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 05:58:26 UTC (rev 53590) +++ trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 10:48:11 UTC (rev 53591) @@ -388,13 +388,15 @@ EINA_LIST_FOREACH(list, l, it) { - int len = strlen(it-label); Evas_Coord x, w; + int len; evas_object_geometry_get(it-base.view, x, NULL, w, NULL); /* item not visible */ if (x + w = ox || x = ox + ow) continue; + len = strlen(it-label); likely what's in an internal item should be stringshared, then eina_stringshare_strlen() is O(1) :-) Do you want an automatic conversion from strlen() to eina_stringshare_strlen() when the parameter is indeed stringshared? It's pretty easy for coccinelle Lucas De Marchi -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Tue, Oct 19, 2010 at 9:34 AM, Lucas De Marchi lucas.demar...@profusion.mobi wrote: On Tue, Oct 19, 2010 at 8:58 AM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: --- trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 05:58:26 UTC (rev 53590) +++ trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 10:48:11 UTC (rev 53591) @@ -388,13 +388,15 @@ EINA_LIST_FOREACH(list, l, it) { - int len = strlen(it-label); Evas_Coord x, w; + int len; evas_object_geometry_get(it-base.view, x, NULL, w, NULL); /* item not visible */ if (x + w = ox || x = ox + ow) continue; + len = strlen(it-label); likely what's in an internal item should be stringshared, then eina_stringshare_strlen() is O(1) :-) Do you want an automatic conversion from strlen() to eina_stringshare_strlen() when the parameter is indeed stringshared? It's pretty easy for coccinelle I'm wondering how much strlen calls instead of eina_stringshare_strlen are done. If it's not complicated to do, I believe it would be great! =D Lucas De Marchi -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Tue, Oct 19, 2010 at 9:38 AM, Bruno Dilly bdi...@profusion.mobi wrote: On Tue, Oct 19, 2010 at 9:34 AM, Lucas De Marchi lucas.demar...@profusion.mobi wrote: On Tue, Oct 19, 2010 at 8:58 AM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: --- trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 05:58:26 UTC (rev 53590) +++ trunk/TMP/st/elementary/src/lib/elm_diskpicker.c 2010-10-19 10:48:11 UTC (rev 53591) @@ -388,13 +388,15 @@ EINA_LIST_FOREACH(list, l, it) { - int len = strlen(it-label); Evas_Coord x, w; + int len; evas_object_geometry_get(it-base.view, x, NULL, w, NULL); /* item not visible */ if (x + w = ox || x = ox + ow) continue; + len = strlen(it-label); likely what's in an internal item should be stringshared, then eina_stringshare_strlen() is O(1) :-) Do you want an automatic conversion from strlen() to eina_stringshare_strlen() when the parameter is indeed stringshared? It's pretty easy for coccinelle I'm wondering how much strlen calls instead of eina_stringshare_strlen are done. If it's not complicated to do, I believe it would be great! =D I guess it's hard if not impossible to know for sure, unfortunately we have no way to tell from a const char* if it came from stringshare or regular malloc :-/ -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Tue, Oct 19, 2010 at 10:19 AM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: This seems good, but would it handle the following cases? 1. void name_set(struct my_struct *p, const char *name) { eina_stringshare_replace(p-str, name); // could be a simple eina_stringshare_add() as well } const char *name_get(const struct my_struct *p) { return p-str; } Eina_Bool use_it(const struct my_struct *p) { return strlen(p-str) % 2; // should be eina_stringshare_strlen() } As I told, right now it will not handle this case. But it can be extended to do so. 2. Eina_Bool use_it(const char *s) { return strlen(x) % 2; // should not be eina_stringshare_strlen() } use_it(name_get(p)); use_it(hello); If you meant return strlen(s) % 2, yes, this would not be changed. Lucas De Marchi -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Tue, Oct 19, 2010 at 10:26 AM, Lucas De Marchi lucas.demar...@profusion.mobi wrote: On Tue, Oct 19, 2010 at 10:19 AM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: This seems good, but would it handle the following cases? 1. void name_set(struct my_struct *p, const char *name) { eina_stringshare_replace(p-str, name); // could be a simple eina_stringshare_add() as well } const char *name_get(const struct my_struct *p) { return p-str; } Eina_Bool use_it(const struct my_struct *p) { return strlen(p-str) % 2; // should be eina_stringshare_strlen() } As I told, right now it will not handle this case. But it can be extended to do so. then it will not handle most of our cases :-/ Actually if it's in the form: const char *s = eina_stringshare_add(bla); size_t len = eina_stringshare_strlen(s); it's better (minimal performance gains) to write it like: size_t len = strlen(bla); // if you know it's !NULL const char *s = eina_stringshare_add_length(bla, len); as internally eina_stringshare_add_length() will be called by eina_stringshare_add(), and strlen() is often optimized by the compiler if possible (ie: instead of bla you have string it turns it into sizeof(string)-1). 2. Eina_Bool use_it(const char *s) { return strlen(x) % 2; // should not be eina_stringshare_strlen() } use_it(name_get(p)); use_it(hello); If you meant return strlen(s) % 2, yes, this would not be changed. typos :-D that's why we should not write programs in MS word kids! ;-) -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Mon, 18 Oct 2010 11:15:59 -0700 Enlightenment SVN no-re...@enlightenment.org wrote: Log: Fixes for clang warnings Author: bdilly Date: 2010-10-18 11:15:59 -0700 (Mon, 18 Oct 2010) New Revision: 53576 Modified: trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c trunk/TMP/st/elementary/src/lib/elm_menu.c Modified: trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c === --- trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c 2010-10-18 18:05:22 UTC (rev 53575) +++ trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c 2010-10-18 18:15:59 UTC (rev 53576) @@ -1160,7 +1160,7 @@ int i; /* Skip it */ - if (enter-num_types == 0 || enter-types == NULL) return true; + if (!enter || !enter-num_types || !enter-types) return EINA_TRUE; The function argument should be annotated here, it's an appropriate place for a not null as it's a callback. If ecore is sending NULL to it's callbacks, all bets are off. insert standard automated tools disclaimer regarding symptom and problem Regards, nash -- Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
Listen and unlisten are quite bad. Keep Edje name compat as did for emit. I know it may be used differently, but even them signal_callback_add is good On Friday, June 25, 2010, Enlightenment SVN no-re...@enlightenment.org wrote: Log: Implement elm_object_signal_listen and unlisten elm_object_signal_listen add callback(s) for edje object(s) of the widget. elm_object_signal_unlisten delete this callback. They're general functions, and every widget should set hooks for these. It will improve elm extension flexibility. We have already elm_object_signal_emit to send signals for the widgets theme, adding callbacks is an expected step. It provides a way to support sound on widgets. For example, in the elm extension we could emit file_to_play, play, and add a callback with elm_object_signal_listen for *, play. The callback function could use the signal received to request the file to be played by the backend sound system. Certainly we should look for a better way to provide support for sound on edje, but for now, it does the work. And anyway, it's only a use case for these new functions. Author: bdilly Date: 2010-06-25 15:38:32 -0700 (Fri, 25 Jun 2010) New Revision: 49868 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_main.c trunk/TMP/st/elementary/src/lib/elm_priv.h trunk/TMP/st/elementary/src/lib/elm_widget.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in === --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-25 22:28:06 UTC (rev 49867) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-25 22:38:32 UTC (rev 49868) @@ -288,6 +288,8 @@ EAPI void elm_object_scroll_freeze_pop(Evas_Object *obj); EAPI void elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source); + EAPI void elm_object_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); + EAPI void *elm_object_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h); Modified: trunk/TMP/st/elementary/src/lib/elm_main.c === --- trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-25 22:28:06 UTC (rev 49867) +++ trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-25 22:38:32 UTC (rev 49868) @@ -1409,3 +1409,45 @@ { elm_widget_signal_emit(obj, emission, source); } + +/** + * Add a callback for a signal emitted by widget edje object. + * + * This function connects a callback function to a signal emitted by the + * edje object of the obj. + * Globs can occur in either the emission or source name. + * + * @param obj The object + * @param emission The signal's name. + * @param source The signal's source. + * @param func The callback function to be executed when the signal is + * emitted. + * @param data A pointer to data to pass in to the callback function. + * @ingroup General + */ +EAPI void elm_object_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + elm_widget_signal_listen(obj, emission, source, func, data); +} + +/** + * Remove a signal-triggered callback from an widget edje object. + * + * This function removes a callback, previoulsy attached to a signal emitted + * by the edje object of the obj. + * The parameters emission, source and func must match exactly those passed to + * a previous call to elm_object_signal_listen(). The data pointer that + * was passed to this call will be returned. + * + * @param obj The object + * @param emission The signal's name. + * @param source The signal's source. + * @param func The callback function to be executed when the signal is + * emitted. + * @return The data pointer + * @ingroup General + */ +EAPI void *elm_object_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + return elm_widget_signal_unlisten(obj, emission, source, func); +} Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h === --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-25 22:28:06 UTC (rev 49867) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-25 22:38:32 UTC (rev 49868) @@ -139,6 +139,8 @@ EAPI void
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Mon, Jun 7, 2010 at 10:43 AM, Enlightenment SVN no-re...@enlightenment.org wrote: Log: oops - forgot to return CALLBACK_CANCEL on elm_clock Author: bdilly Date: 2010-06-07 06:43:07 -0700 (Mon, 07 Jun 2010) New Revision: 49553 Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c === --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-07 13:08:19 UTC (rev 49552) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-07 13:43:07 UTC (rev 49553) @@ -115,9 +115,9 @@ _signal_clock_val_up(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; - if (!wd-edit) return; - if (!wd-sel_obj) return; + if (!wd) return ECORE_CALLBACK_CANCEL; + if (!wd-edit) return ECORE_CALLBACK_CANCEL; + if (!wd-sel_obj) return ECORE_CALLBACK_CANCEL; if (wd-sel_obj == wd-digit[0]) { wd-hrs = wd-hrs + 10; @@ -164,9 +164,9 @@ _signal_clock_val_down(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; - if (!wd-edit) return; - if (!wd-sel_obj) return; + if (!wd) return ECORE_CALLBACK_CANCEL; + if (!wd-edit) return ECORE_CALLBACK_CANCEL; + if (!wd-sel_obj) return ECORE_CALLBACK_CANCEL; I did not look this code in depth, but if you return ECORE_CALLBACK_CANCEL (or 0) then this function timer/animator/whatever is deleted. It is likely that you still hold a pointer to its handle (Ecore_Timer, Ecore_Animator...) and thus you must NULL-ify it, otherwise you'll later on delete a dead pointer and crash. If you don't have the reference and delete it at exit, then it is another bug :-) BR, -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: http://p.sf.net/sfu/thinkgeek-promo ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Mon, May 24, 2010 at 12:06 AM, Iván Briano (Sachiel) sachi...@gmail.com wrote: On Mon, May 24, 2010 at 8:41 AM, Enlightenment SVN no-re...@enlightenment.org wrote: Log: Implement elm index sorted insert - Name index item as Elm_Index_Item - Add some other index functions: + Item find + Data get/set + Letter get I think this stuff will make easier to create index for dynamically created lists. Author: bdilly Date: 2010-05-23 16:41:32 -0700 (Sun, 23 May 2010) New Revision: 49171 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_index.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in === --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-23 23:23:51 UTC (rev 49170) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-23 23:41:32 UTC (rev 49171) @@ -1266,6 +1266,7 @@ * vertical (two up/down buttons at the right side and text left aligned) */ + typedef struct _Elm_Index_Item Elm_Index_Item; EAPI Evas_Object *elm_index_add(Evas_Object *parent); EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active); EAPI void elm_index_item_level_set(Evas_Object *obj, int level); @@ -1275,9 +1276,14 @@ EAPI void elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item); EAPI void elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative); EAPI void elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative); + EAPI void elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func); EAPI void elm_index_item_del(Evas_Object *obj, const void *item); + EAPI Elm_Index_Item *elm_index_item_find(Evas_Object *obj, const void *item); EAPI void elm_index_item_clear(Evas_Object *obj); EAPI void elm_index_item_go(Evas_Object *obj, int level); + EAPI void *elm_index_item_data_get(const Elm_Index_Item *item); + EAPI void elm_index_item_data_set(Elm_Index_Item *it, const void *data); + EAPI const char *elm_index_item_letter_get(const Elm_Index_Item *item); /* smart callbacks called: * changed - when the selected index item changes * delay,changed - when the selected index item changes, but after some small idle period Modified: trunk/TMP/st/elementary/src/lib/elm_index.c === --- trunk/TMP/st/elementary/src/lib/elm_index.c 2010-05-23 23:23:51 UTC (rev 49170) +++ trunk/TMP/st/elementary/src/lib/elm_index.c 2010-05-23 23:41:32 UTC (rev 49171) @@ -9,7 +9,6 @@ */ typedef struct _Widget_Data Widget_Data; -typedef struct _Item Item; struct _Widget_Data { @@ -26,7 +25,7 @@ Eina_Bool down : 1; }; -struct _Item +struct _Elm_Index_Item { Evas_Object *obj; const char *letter; @@ -42,13 +41,13 @@ static void _sizing_eval(Evas_Object *obj); static void _index_box_auto_fill(Evas_Object *obj, Evas_Object *box, int level); static void _index_box_clear(Evas_Object *obj, Evas_Object *box, int level); -static void _item_free(Item *it); +static void _item_free(Elm_Index_Item *it); static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; Eina_List *l, *clear = NULL; if (!wd) return; _index_box_clear(obj, wd-bx[wd-level], wd-level); @@ -138,13 +137,13 @@ evas_object_size_hint_max_set(obj, maxw, maxh); } -static Item * +static Elm_Index_Item * _item_new(Evas_Object *obj, const char *letter, const void *item) { Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; if (!wd) return NULL; - it = calloc(1, sizeof(Item)); + it = calloc(1, sizeof(Elm_Index_Item)); if (!it) return NULL; it-obj = obj; it-letter = eina_stringshare_add(letter); @@ -153,12 +152,12 @@ return it; } -static Item * +static Elm_Index_Item * _item_find(Evas_Object *obj, const void *item) { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; if (!wd) return NULL; EINA_LIST_FOREACH(wd-items, l, it) if (it-data == item) return it; @@ -166,7 +165,7 @@ } static void -_item_free(Item *it) +_item_free(Elm_Index_Item *it) { Widget_Data *wd = elm_widget_data_get(it-obj); if (!wd) return; @@ -182,7 +181,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; Evas_Coord mw, mh, w, h; int i = 0; if (!wd) return; @@ -235,7 +234,7 @@ { Widget_Data *wd =
Re: [E-devel] E SVN: bdilly trunk/TMP/st/elementary/src/lib
On Mon, May 24, 2010 at 10:48 PM, Bruno Dilly bdi...@profusion.mobi wrote: On Mon, May 24, 2010 at 12:06 AM, Iván Briano (Sachiel) sachi...@gmail.com wrote: On Mon, May 24, 2010 at 8:41 AM, Enlightenment SVN no-re...@enlightenment.org wrote: Log: Implement elm index sorted insert - Name index item as Elm_Index_Item - Add some other index functions: + Item find + Data get/set + Letter get I think this stuff will make easier to create index for dynamically created lists. Author: bdilly Date: 2010-05-23 16:41:32 -0700 (Sun, 23 May 2010) New Revision: 49171 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_index.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in === --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-23 23:23:51 UTC (rev 49170) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-23 23:41:32 UTC (rev 49171) @@ -1266,6 +1266,7 @@ * vertical (two up/down buttons at the right side and text left aligned) */ + typedef struct _Elm_Index_Item Elm_Index_Item; EAPI Evas_Object *elm_index_add(Evas_Object *parent); EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active); EAPI void elm_index_item_level_set(Evas_Object *obj, int level); @@ -1275,9 +1276,14 @@ EAPI void elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item); EAPI void elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative); EAPI void elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative); + EAPI void elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func); EAPI void elm_index_item_del(Evas_Object *obj, const void *item); + EAPI Elm_Index_Item *elm_index_item_find(Evas_Object *obj, const void *item); EAPI void elm_index_item_clear(Evas_Object *obj); EAPI void elm_index_item_go(Evas_Object *obj, int level); + EAPI void *elm_index_item_data_get(const Elm_Index_Item *item); + EAPI void elm_index_item_data_set(Elm_Index_Item *it, const void *data); + EAPI const char *elm_index_item_letter_get(const Elm_Index_Item *item); /* smart callbacks called: * changed - when the selected index item changes * delay,changed - when the selected index item changes, but after some small idle period Modified: trunk/TMP/st/elementary/src/lib/elm_index.c === --- trunk/TMP/st/elementary/src/lib/elm_index.c 2010-05-23 23:23:51 UTC (rev 49170) +++ trunk/TMP/st/elementary/src/lib/elm_index.c 2010-05-23 23:41:32 UTC (rev 49171) @@ -9,7 +9,6 @@ */ typedef struct _Widget_Data Widget_Data; -typedef struct _Item Item; struct _Widget_Data { @@ -26,7 +25,7 @@ Eina_Bool down : 1; }; -struct _Item +struct _Elm_Index_Item { Evas_Object *obj; const char *letter; @@ -42,13 +41,13 @@ static void _sizing_eval(Evas_Object *obj); static void _index_box_auto_fill(Evas_Object *obj, Evas_Object *box, int level); static void _index_box_clear(Evas_Object *obj, Evas_Object *box, int level); -static void _item_free(Item *it); +static void _item_free(Elm_Index_Item *it); static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; Eina_List *l, *clear = NULL; if (!wd) return; _index_box_clear(obj, wd-bx[wd-level], wd-level); @@ -138,13 +137,13 @@ evas_object_size_hint_max_set(obj, maxw, maxh); } -static Item * +static Elm_Index_Item * _item_new(Evas_Object *obj, const char *letter, const void *item) { Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; if (!wd) return NULL; - it = calloc(1, sizeof(Item)); + it = calloc(1, sizeof(Elm_Index_Item)); if (!it) return NULL; it-obj = obj; it-letter = eina_stringshare_add(letter); @@ -153,12 +152,12 @@ return it; } -static Item * +static Elm_Index_Item * _item_find(Evas_Object *obj, const void *item) { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; if (!wd) return NULL; EINA_LIST_FOREACH(wd-items, l, it) if (it-data == item) return it; @@ -166,7 +165,7 @@ } static void -_item_free(Item *it) +_item_free(Elm_Index_Item *it) { Widget_Data *wd = elm_widget_data_get(it-obj); if (!wd) return; @@ -182,7 +181,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; Evas_Coord mw, mh, w, h; int i = 0;