On Thu, 11 Aug 2011 13:50:37 +0200 Gustavo Barbieri <barbi...@profusion.mobi>
said:

hey - i didn't even know it existed. every time i write a few lines of code do
u expect me to go reading all the efl headers in case something is there?

> Raster never uses what he didn't write :-D that's discrimination!!!
> 
> Sent from my iPhone
> 
> On 11/08/2011, at 13:08, Carsten Haitzler <ras...@rasterman.com> wrote:
> 
> > On Thu, 11 Aug 2011 12:48:52 +0200 (CEST) Vincent Torri
> > <vto...@univ-evry.fr> said:
> >
> > probably eina_str_has_extension now i look at it
> >
> >>
> >> usee eina_str_sufix() instead ?
> >>
> >> Vincent
> >>
> >> On Thu, 11 Aug 2011, Enlightenment SVN wrote:
> >>
> >>> Log:
> >>> ... allow non edj files as wallpapers... if u try. :)
> >>>
> >>>
> >>>
> >>> Author:       raster
> >>> Date:         2011-08-11 03:39:37 -0700 (Thu, 11 Aug 2011)
> >>> New Revision: 62340
> >>> Trac:         http://trac.enlightenment.org/e/changeset/62340
> >>>
> >>> Modified:
> >>> trunk/e/src/bin/e_bg.c trunk/e/src/bin/e_icon.c
> >>> trunk/e/src/bin/e_widget_preview.c
> >>> trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c
> >>>
> >>> Modified: trunk/e/src/bin/e_bg.c
> >>> ===================================================================
> >>> --- trunk/e/src/bin/e_bg.c    2011-08-11 10:30:35 UTC (rev 62339)
> >>> +++ trunk/e/src/bin/e_bg.c    2011-08-11 10:39:37 UTC (rev 62340)
> >>> @@ -118,7 +118,8 @@
> >>>    EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg)
> >>>      {
> >>>         int spec;
> >>> -
> >>> +             const char *ext;
> >>> +
> >>>         if (!cfbg) continue;
> >>>         spec = 0;
> >>>         if (cfbg->container == container_num) spec++;
> >>> @@ -142,19 +143,28 @@
> >>>               if (bf) bgfile = bf;
> >>>            }
> >>>           }
> >>> -         entries = edje_file_collection_list(bgfile);
> >>> -         if (entries)
> >>> -           {
> >>> -          EINA_LIST_FOREACH(entries, ll, entry)
> >>> -            {
> >>> -               if (!strcmp(entry, "e/desktop/background"))
> >>> -             {
> >>> -                bg = cfbg;
> >>> -                current_spec = spec;
> >>> -             }
> >>> -            }
> >>> -          edje_file_collection_list_free(entries);
> >>> -           }
> >>> +             ext = strrchr(bgfile, '.');
> >>> +             if ((ext) && (!strcasecmp(ext, ".edj")))
> >>> +               {
> >>> +                  entries = edje_file_collection_list(bgfile);
> >>> +                  if (entries)
> >>> +                    {
> >>> +                       EINA_LIST_FOREACH(entries, ll, entry)
> >>> +                         {
> >>> +                            if (!strcmp(entry, "e/desktop/background"))
> >>> +                              {
> >>> +                                 bg = cfbg;
> >>> +                                 current_spec = spec;
> >>> +                              }
> >>> +                         }
> >>> +                       edje_file_collection_list_free(entries);
> >>> +                    }
> >>> +               }
> >>> +             else
> >>> +               {
> >>> +                  bg = cfbg;
> >>> +                  current_spec = spec;
> >>> +               }
> >>>      }
> >>>     }
> >>>   return bg;
> >>> @@ -188,6 +198,8 @@
> >>>     }
> >>>   else
> >>>     {
> >>> +        const char *ext;
> >>> +
> >>>    bgfile = e_config->desktop_default_background;
> >>>    if (bgfile)
> >>>      {
> >>> @@ -199,19 +211,24 @@
> >>>          if (bf) bgfile = bf;
> >>>           }
> >>>      }
> >>> -    entries = edje_file_collection_list(bgfile);
> >>> -    if (entries)
> >>> -      {
> >>> -         EINA_LIST_FOREACH(entries, l, entry)
> >>> -           {
> >>> -          if (!strcmp(entry, "e/desktop/background"))
> >>> -            {
> >>> -               ok = 1;
> >>> -               break;
> >>> -            }
> >>> -           }
> >>> -         edje_file_collection_list_free(entries);
> >>> -      }
> >>> +        ext = strrchr(bgfile, '.');
> >>> +        if ((ext) && (!strcasecmp(ext, ".edj")))
> >>> +          {
> >>> +             entries = edje_file_collection_list(bgfile);
> >>> +             if (entries)
> >>> +               {
> >>> +                  EINA_LIST_FOREACH(entries, l, entry)
> >>> +                    {
> >>> +                       if (!strcmp(entry, "e/desktop/background"))
> >>> +                         {
> >>> +                            ok = 1;
> >>> +                            break;
> >>> +                         }
> >>> +                    }
> >>> +                  edje_file_collection_list_free(entries);
> >>> +               }
> >>> +          }
> >>> +        else ok = 1;
> >>>    if (!ok)
> >>>      bgfile = e_theme_edje_file_get("base/theme/background",
> >>>                     "e/desktop/background");
> >>> @@ -226,6 +243,7 @@
> >>>   Evas_Object *o;
> >>>   const char *bgfile = "";
> >>>   const char *trans = "";
> >>> +   const char *ext;
> >>>   E_Desk *desk;
> >>>
> >>>   if (transition == E_BG_TRANSITION_START) trans =
> >>> e_config->transition_start; @@ -283,10 +301,21 @@
> >>>    evas_object_clip_set(o, zone->bg_clip_object);
> >>>    evas_object_show(o);
> >>>     }
> >>> -   o = edje_object_add(zone->container->bg_evas);
> >>> +   ext = strrchr(bgfile, '.');
> >>> +   if ((ext) && (!strcasecmp(ext, ".edj")))
> >>> +     {
> >>> +        o = edje_object_add(zone->container->bg_evas);
> >>> +        evas_object_data_set(o, "e_zone", zone);
> >>> +        edje_object_file_set(o, bgfile, "e/desktop/background");
> >>> +     }
> >>> +   else
> >>> +     {
> >>> +        o = e_icon_add(zone->container->bg_evas);
> >>> +        evas_object_data_set(o, "e_zone", zone);
> >>> +        e_icon_file_key_set(o, bgfile, NULL);
> >>> +        e_icon_fill_inside_set(o, 0);
> >>> +     }
> >>>   zone->bg_object = o;
> >>> -   evas_object_data_set(o, "e_zone", zone);
> >>> -   edje_object_file_set(o, bgfile, "e/desktop/background");
> >>>   if (transition == E_BG_TRANSITION_NONE)
> >>>     {
> >>>    evas_object_move(o, zone->x, zone->y);
> >>>
> >>> Modified: trunk/e/src/bin/e_icon.c
> >>> ===================================================================
> >>> --- trunk/e/src/bin/e_icon.c    2011-08-11 10:30:35 UTC (rev 62339)
> >>> +++ trunk/e/src/bin/e_icon.c    2011-08-11 10:39:37 UTC (rev 62340)
> >>> @@ -7,7 +7,9 @@
> >>>   Evas_Coord x, y, w, h;
> >>>   Evas_Object *obj;
> >>>   Evas_Object *eventarea;
> >>> +   Ecore_Timer *timer;
> >>>   int size;
> >>> +   int frame, frame_count;
> >>>   const char *fdo;
> >>>   unsigned char fill_inside : 1;
> >>>   unsigned char scale_up : 1;
> >>> @@ -61,6 +63,47 @@
> >>>     }
> >>> }
> >>>
> >>> +static Eina_Bool
> >>> +_frame_anim(void *data)
> >>> +{
> >>> +   E_Smart_Data *sd = data;
> >>> +   double t;
> >>> +   int fr;
> >>> +
> >>> +   sd->frame++;
> >>> +   fr = (sd->frame % (sd->frame_count)) + 1;
> >>> +   evas_object_image_animated_frame_set(sd->obj, fr);
> >>> +   t = evas_object_image_animated_frame_duration_get(sd->obj, fr, 0);
> >>> +   sd->timer = ecore_timer_add(t, _frame_anim, sd);
> >>> +   return EINA_FALSE;
> >>> +}
> >>> +
> >>> +static int
> >>> +_handle_anim(E_Smart_Data *sd)
> >>> +{
> >>> +   double t;
> >>> +
> >>> +   if (sd->timer) ecore_timer_del(sd->timer);
> >>> +   sd->timer = NULL;
> >>> +   sd->frame = 0;
> >>> +   sd->frame_count = 0;
> >>> +   if (!evas_object_image_animated_get(sd->obj)) return 0;
> >>> +   // FIXME: hack around jiyouns BUG!!!!!!!!
> >>> +     {
> >>> +        const char *file;
> >>> +        char buf[256];
> >>> +        snprintf(buf, sizeof(buf), "%ld", (long)sd);
> >>> +        evas_object_image_file_get(sd->obj, &file, NULL);
> >>> +        evas_object_image_file_set(sd->obj, file, buf);
> >>> +     }
> >>> +   sd->frame_count = evas_object_image_animated_frame_count_get(sd->obj);
> >>> +   if (sd->frame_count < 2) return 0;
> >>> +   evas_object_show(sd->obj);
> >>> +   t = evas_object_image_animated_frame_duration_get(sd->obj, sd->frame,
> >>> 0);
> >>> +   sd->timer = ecore_timer_add(t, _frame_anim, sd);
> >>> +   return 1;
> >>> +}
> >>> +
> >>> EAPI Eina_Bool
> >>> e_icon_file_set(Evas_Object *obj, const char *file)
> >>> {
> >>> @@ -85,19 +128,27 @@
> >>>        sd->fdo = NULL;
> >>>     }
> >>>
> >>> +   if (sd->timer) ecore_timer_del(sd->timer);
> >>> +   sd->timer = NULL;
> >>> +   sd->frame = 0;
> >>> +   sd->frame_count = 0;
> >>> +
> >>>   if (sd->size != 0)
> >>>     evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
> >>>   if (sd->preload) evas_object_hide(sd->obj);
> >>>   evas_object_image_file_set(sd->obj, file, NULL);
> >>>   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
> >>>     return EINA_FALSE;
> >>> -   if (sd->preload)
> >>> +   if (!_handle_anim(sd))
> >>>     {
> >>> -        sd->loading = 1;
> >>> -        evas_object_image_preload(sd->obj, EINA_FALSE);
> >>> +        if (sd->preload)
> >>> +          {
> >>> +             sd->loading = 1;
> >>> +             evas_object_image_preload(sd->obj, EINA_FALSE);
> >>> +          }
> >>> +        else if (evas_object_visible_get(obj))
> >>> +           evas_object_show(sd->obj);
> >>>     }
> >>> -   else if (evas_object_visible_get(obj))
> >>> -     evas_object_show(sd->obj);
> >>>
> >>>   _e_icon_smart_reconfigure(sd);
> >>>   return EINA_TRUE;
> >>> @@ -118,6 +169,12 @@
> >>>        eina_stringshare_del(sd->fdo);
> >>>        sd->fdo = NULL;
> >>>     }
> >>> +
> >>> +   if (sd->timer) ecore_timer_del(sd->timer);
> >>> +   sd->timer = NULL;
> >>> +   sd->frame = 0;
> >>> +   sd->frame_count = 0;
> >>> +
> >>>   _e_icon_obj_prepare(obj, sd);
> >>>   if (sd->size != 0)
> >>>     evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
> >>> @@ -125,13 +182,16 @@
> >>>   evas_object_image_file_set(sd->obj, file, key);
> >>>   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
> >>>     return EINA_FALSE;
> >>> -   if (sd->preload)
> >>> +   if (!_handle_anim(sd))
> >>>     {
> >>> -        sd->loading = 1;
> >>> -        evas_object_image_preload(sd->obj, 0);
> >>> +        if (sd->preload)
> >>> +          {
> >>> +             sd->loading = 1;
> >>> +             evas_object_image_preload(sd->obj, 0);
> >>> +          }
> >>> +        else if (evas_object_visible_get(obj))
> >>> +           evas_object_show(sd->obj);
> >>>     }
> >>> -   else if (evas_object_visible_get(obj))
> >>> -     evas_object_show(sd->obj);
> >>>   _e_icon_smart_reconfigure(sd);
> >>>   return EINA_TRUE;
> >>> }
> >>> @@ -152,6 +212,12 @@
> >>>        eina_stringshare_del(sd->fdo);
> >>>        sd->fdo = NULL;
> >>>     }
> >>> +
> >>> +   if (sd->timer) ecore_timer_del(sd->timer);
> >>> +   sd->timer = NULL;
> >>> +   sd->frame = 0;
> >>> +   sd->frame_count = 0;
> >>> +
> >>>   sd->obj = edje_object_add(evas_object_evas_get(obj));
> >>>   edje_object_file_set(sd->obj, file, part);
> >>>   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
> >>> @@ -175,6 +241,11 @@
> >>>   if (!(sd = evas_object_smart_data_get(obj)))
> >>>     return EINA_FALSE;
> >>>
> >>> +   if (sd->timer) ecore_timer_del(sd->timer);
> >>> +   sd->timer = NULL;
> >>> +   sd->frame = 0;
> >>> +   sd->frame_count = 0;
> >>> +
> >>>   eina_stringshare_replace(&sd->fdo, icon);
> >>>   if (!sd->fdo) return EINA_FALSE;
> >>>
> >>> @@ -212,6 +283,11 @@
> >>>
> >>>   if (!(sd = evas_object_smart_data_get(obj))) return;
> >>>
> >>> +   if (sd->timer) ecore_timer_del(sd->timer);
> >>> +   sd->timer = NULL;
> >>> +   sd->frame = 0;
> >>> +   sd->frame_count = 0;
> >>> +
> >>>   /* smart code here */
> >>>   if (sd->obj) evas_object_del(sd->obj);
> >>>   sd->loading = 0;
> >>> @@ -539,6 +615,7 @@
> >>>   evas_object_del(sd->obj);
> >>>   evas_object_del(sd->eventarea);
> >>>   if (sd->fdo) eina_stringshare_del(sd->fdo);
> >>> +   if (sd->timer) ecore_timer_del(sd->timer);
> >>>   free(sd);
> >>> }
> >>>
> >>>
> >>> Modified: trunk/e/src/bin/e_widget_preview.c
> >>> ===================================================================
> >>> --- trunk/e/src/bin/e_widget_preview.c    2011-08-11 10:30:35 UTC (rev
> >>> 62339) +++ trunk/e/src/bin/e_widget_preview.c    2011-08-11 10:39:37
> >>> UTC (rev 62340) @@ -78,6 +78,7 @@
> >>>   if (wd->o_thumb) evas_object_del(wd->o_thumb);
> >>>
> >>>   wd->o_thumb = e_icon_add(e_livethumb_evas_get(wd->img));
> >>> +   e_icon_fill_inside_set(wd->o_thumb, 0);
> >>>   e_icon_file_key_set(wd->o_thumb, file, key);
> >>>   evas_object_show(wd->o_thumb);
> >>>   e_livethumb_thumb_set(wd->img, wd->o_thumb);
> >>>
> >>> Modified: trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c
> >>> ===================================================================
> >>> --- trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c
> >>> 2011-08-11 10:30:35 UTC (rev 62339) +++
> >>> trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c    2011-08-11
> >>> 10:39:37 UTC (rev 62340) @@ -108,6 +108,32 @@ return cfd;
> >>> }
> >>>
> >>> +static void
> >>> +_bg_set(E_Config_Dialog_Data *cfdata)
> >>> +{
> >>> +   if (!cfdata->o_preview) return;
> >>> +   if (cfdata->bg)
> >>> +     {
> >>> +        const char *ext = strrchr(cfdata->bg, '.');
> >>> +
> >>> +        if ((ext) && (!strcasecmp(ext, ".edj")))
> >>> +           e_widget_preview_edje_set(cfdata->o_preview, cfdata->bg,
> >>> +                                     "e/desktop/background");
> >>> +        else
> >>> +           e_widget_preview_file_set(cfdata->o_preview, cfdata->bg,
> >>> +                                     NULL);
> >>> +     }
> >>> +   else
> >>> +     {
> >>> +        const char *f;
> >>> +
> >>> +        f = e_theme_edje_file_get("base/theme/backgrounds",
> >>> +                                  "e/desktop/background");
> >>> +        e_widget_preview_edje_set(cfdata->o_preview, f,
> >>> +                                  "e/desktop/background");
> >>> +     }
> >>> +}
> >>> +
> >>> void
> >>> e_int_config_wallpaper_update(E_Config_Dialog *dia, char *file)
> >>> {
> >>> @@ -124,9 +150,7 @@
> >>>   if (cfdata->o_theme_bg)
> >>>     e_widget_check_checked_set(cfdata->o_theme_bg, cfdata->use_theme_bg);
> >>>   if (cfdata->o_fm) e_widget_flist_path_set(cfdata->o_fm, path, "/");
> >>> -   if (cfdata->o_preview)
> >>> -     e_widget_preview_edje_set(cfdata->o_preview, cfdata->bg,
> >>> -                               "e/desktop/background");
> >>> +   _bg_set(cfdata);
> >>>   if (cfdata->o_fm) e_widget_change(cfdata->o_fm);
> >>> }
> >>>
> >>> @@ -195,8 +219,7 @@
> >>>   E_FREE(cfdata->bg);
> >>>
> >>>   cfdata->bg = strdup(buf);
> >>> -   if (cfdata->o_preview)
> >>> -     e_widget_preview_edje_set(cfdata->o_preview, buf,
> >>> "e/desktop/background");
> >>> +   _bg_set(cfdata);
> >>>   if (cfdata->o_theme_bg)
> >>>     e_widget_check_checked_set(cfdata->o_theme_bg, 0);
> >>>   cfdata->use_theme_bg = 0;
> >>> @@ -281,20 +304,13 @@
> >>>                                  "e/desktop/background");
> >>>    E_FREE(cfdata->bg);
> >>>    cfdata->bg = strdup(f);
> >>> -    if (cfdata->o_preview)
> >>> -      e_widget_preview_edje_set(cfdata->o_preview, f,
> >>> -                                    "e/desktop/background");
> >>> +        _bg_set(cfdata);
> >>>     }
> >>>   else
> >>>     {
> >>>    evas_object_smart_callback_call(cfdata->o_fm, "selection_change",
> >>>                                        cfdata);
> >>> -    if (cfdata->bg)
> >>> -      {
> >>> -         if (cfdata->o_preview)
> >>> -           e_widget_preview_edje_set(cfdata->o_preview, cfdata->bg,
> >>> -                                         "e/desktop/background");
> >>> -      }
> >>> +        _bg_set(cfdata);
> >>>     }
> >>> }
> >>>
> >>> @@ -434,7 +450,6 @@
> >>>   E_Radio_Group *rg;
> >>>   char path[PATH_MAX];
> >>>   int mw, mh, online;
> >>> -   const char *f;
> >>>
> >>>   online = ecore_file_download_protocol_available("http://";);
> >>>
> >>> @@ -506,11 +521,7 @@
> >>>   oa = e_widget_aspect_add(evas, mw, mh);
> >>>   ow = e_widget_preview_add(evas, mw, mh);
> >>>   cfdata->o_preview = ow;
> >>> -   if (cfdata->bg)
> >>> -     f = cfdata->bg;
> >>> -   else
> >>> -     f = e_theme_edje_file_get("base/theme/backgrounds",
> >>> "e/desktop/background");
> >>> -   e_widget_preview_edje_set(ow, f, "e/desktop/background");
> >>> +   _bg_set(cfdata);
> >>>   e_widget_aspect_child_set(oa, ow);
> >>>   evas_object_show(ow);
> >>>   evas_object_show(oa);
> >>> @@ -564,7 +575,6 @@
> >>>   E_Radio_Group *rg;
> >>>   char path[PATH_MAX];
> >>>   int mw, mh, online;
> >>> -   const char *f;
> >>>
> >>>   online = ecore_file_download_protocol_available("http://";);
> >>>
> >>> @@ -634,11 +644,7 @@
> >>>   oa = e_widget_aspect_add(evas, mw, mh);
> >>>   ow = e_widget_preview_add(evas, mw, mh);
> >>>   cfdata->o_preview = ow;
> >>> -   if (cfdata->bg)
> >>> -     f = cfdata->bg;
> >>> -   else
> >>> -     f = e_theme_edje_file_get("base/theme/backgrounds",
> >>> "e/desktop/background");
> >>> -   e_widget_preview_edje_set(ow, f, "e/desktop/background");
> >>> +   _bg_set(cfdata);
> >>>   e_widget_aspect_child_set(oa, ow);
> >>>   e_widget_table_object_append(ot, oa, 0, 2, 2 + online, 1, 1, 1, 1, 1);
> >>>
> >>>
> >>>
> >>> ------------------------------------------------------------------------------
> >>> Get a FREE DOWNLOAD! and learn more about uberSVN rich system,
> >>> user administration capabilities and model configuration. Take
> >>> the hassle out of deploying and managing Subversion and the
> >>> tools developers use with it.
> >>> http://p.sf.net/sfu/wandisco-dev2dev
> >>> _______________________________________________
> >>> enlightenment-svn mailing list
> >>> enlightenment-...@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
> >>>
> >>>
> >>
> >> ------------------------------------------------------------------------------
> >> Get a FREE DOWNLOAD! and learn more about uberSVN rich system,
> >> user administration capabilities and model configuration. Take
> >> the hassle out of deploying and managing Subversion and the
> >> tools developers use with it.
> >> http://p.sf.net/sfu/wandisco-dev2dev
> >> _______________________________________________
> >> enlightenment-devel mailing list
> >> enlightenment-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >>
> >
> >
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> >
> >
> > ------------------------------------------------------------------------------
> > Get a FREE DOWNLOAD! and learn more about uberSVN rich system,
> > user administration capabilities and model configuration. Take
> > the hassle out of deploying and managing Subversion and the
> > tools developers use with it.
> > http://p.sf.net/sfu/wandisco-dev2dev
> > _______________________________________________
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 
> ------------------------------------------------------------------------------
> Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
> user administration capabilities and model configuration. Take 
> the hassle out of deploying and managing Subversion and the 
> tools developers use with it. 
> http://p.sf.net/sfu/wandisco-dev2dev
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
user administration capabilities and model configuration. Take 
the hassle out of deploying and managing Subversion and the 
tools developers use with it. 
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to