strrchr Sendt fra min iPad
> Den Apr 7, 2014 kl. 14:30 skrev Marcel Hollerbach > <marcel-hollerb...@t-online.de>: > > I use them in entrance_conf_main.c and entrance_conf_user.c, so where > should I put the macro ? > > The group has the name entrance/wallpaper/foo > > I just want to display foo so I need something which returns me "foo" > ecore_file_file_get does that, but okay, I will do it different. > > >> On Mon, Apr 07, 2014 at 02:19:13PM +0200, Michaël Bouchaud wrote: >> nothing to do in a .h if you are using in one place. It's a design request. >> And a macro calling another macro is just a wrong design. Or you target is >> to write unmaintainable code. >> ecore_file is for file and nothing else ... >> Write a little algo to find last / ??? >> >> >> 2014-04-07 12:57 GMT+02:00 Marcel Hollerbach <marcel-hollerb...@t-online.de> >> : >> >>> >>> >>>> On Mon, Apr 07, 2014 at 10:42:20AM +0200, Michaël Bouchaud wrote: >>>> Please split you patch. why adding a macro used nowhere in this patch ? >>> I am using this macro in the user settings and the general settings. >>> Should I put them in the headers od the user and general settings ? >>>> And stop to cut and paste some code. A group isn't a file ... Try to >>> give a >>>> better quality in your patch >>> I never copy and paste that, I wanted to ecore_file_file_get cause it is >>> just returning the last substring after the last "/". Of course I can >>> write a little algo to do the same. >>>> >>>> >>>> 2014-04-02 17:55 GMT+02:00 Marcel Hollerbach < >>> marcel.hollerb...@stzedn.de>: >>>> >>>>> bu5hm4n pushed a commit to branch master. >>> http://git.enlightenment.org/misc/entrance.git/commit/?id=cf5c4cf46a598925bcd9549e04f141903c3871b4 >>>>> >>>>> commit cf5c4cf46a598925bcd9549e04f141903c3871b4 >>>>> Author: Marcel Hollerbach <marcel.hollerb...@stzedn.de> >>>>> Date: Wed Apr 2 12:18:47 2014 +0200 >>>>> >>>>> entrance: Updated the entrance_conf.c >>>>> >>>>> - backgrounds are hold in pools, no need to generate them >>> there >>>>> >>>>> - New Textes for the Items are used >>>>> >>>>> - Lets use the thumb style in the settings pane >>>>> >>>>> - There is a macro to get Entrance_Image structs to >>>>> Entrance_Conf_Background struct (in lists) >>>>> --- >>>>> src/bin/entrance_conf.c | 121 >>>>> +++++++++++++++++++----------------------------- >>>>> src/bin/entrance_conf.h | 16 ++++++- >>>>> 2 files changed, 63 insertions(+), 74 deletions(-) >>>>> >>>>> diff --git a/src/bin/entrance_conf.c b/src/bin/entrance_conf.c >>>>> index 4d0623f..979c6a0 100644 >>>>> --- a/src/bin/entrance_conf.c >>>>> +++ b/src/bin/entrance_conf.c >>>>> @@ -76,7 +76,44 @@ _entrance_conf_end(Evas_Object *win) >>>>> _entrance_conf->current = NULL; >>>>> } >>>>> >>>>> -static void >>>>> +void >>>>> +entrance_conf_background_title_gen(Entrance_Conf_Background *cbg) >>>>> +{ >>>>> + char buf[PATH_MAX]; >>>>> + char *group_suffix = NULL, *result; >>>>> + const char *filename = NULL; >>>>> + >>>>> + if (cbg->path) >>>>> + { >>>>> + filename = ecore_file_file_get(cbg->path); >>>>> + } >>>>> + >>>>> + if (cbg->group) >>>>> + { >>>>> + group_suffix = ecore_file_file_get(cbg->group); >>>>> + } >>>>> + >>>>> + if ((group_suffix) && (filename)) >>>>> + { >>>>> + snprintf(buf, sizeof(buf), "%s - %s", filename, group_suffix); >>>>> + } >>>>> + else if (group_suffix) >>>>> + { >>>>> + snprintf(buf, sizeof(buf), "%s", group_suffix); >>>>> + } >>>>> + else if(filename) >>>>> + { >>>>> + snprintf(buf, sizeof(buf), "%s", filename); >>>>> + } >>>>> + else >>>>> + { >>>>> + snprintf(buf, sizeof(buf), "None"); >>>>> + } >>>>> + >>>>> + cbg->name = eina_stringshare_add(buf); >>>>> +} >>>>> + >>>>> + static void >>>>> _entrance_conf_promote(Entrance_Conf_Module *conf) >>>>> { >>>>> elm_naviframe_item_promote(conf->item); >>>>> @@ -126,12 +163,15 @@ _entrance_conf_bg_content_get(void *data, >>>>> Evas_Object *obj, const char *part) >>>>> cbg = data; >>>>> if (part && !strcmp("elm.swallow.icon", part)) >>>>> { >>>>> - o = elm_image_add(obj); >>>>> - elm_image_file_set(o, cbg->path, cbg->group); >>>>> - elm_image_smooth_set(o, EINA_FALSE); >>>>> - evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, >>>>> - EVAS_HINT_EXPAND); >>>>> - evas_object_show(o); >>>>> + if (cbg->path || cbg->group) >>>>> + { >>>>> + o = elm_image_add(obj); >>>>> + elm_image_file_set(o, cbg->path, cbg->group); >>>>> + elm_image_smooth_set(o, EINA_FALSE); >>>>> + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, >>>>> + EVAS_HINT_EXPAND); >>>>> + evas_object_show(o); >>>>> + } >>>>> } >>>>> return o; >>>>> } >>>>> @@ -160,7 +200,7 @@ entrance_conf_init(void) >>>>> PT("conf init\n"); >>>>> _entrance_conf = calloc(1, sizeof(Entrance_Int_Conf)); >>>>> _entrance_conf->background_fill = >>>>> - entrance_fill_new("default", >>>>> + entrance_fill_new("thumb", >>>>> _entrance_conf_bg_text_get, >>>>> _entrance_conf_bg_content_get, >>>>> _entrance_conf_bg_state_get, >>>>> @@ -305,71 +345,6 @@ entrance_conf_changed(void) >>>>> } >>>>> } >>>>> >>>>> -Eina_List * >>>>> -entrance_conf_backgrounds_get(Evas_Object *obj, const char *user) >>>>> -{ >>>>> - Evas_Object *o, *edj; >>>>> - Eina_List *list, *l, *nl = NULL; >>>>> - Entrance_Conf_Background *cbg; >>>>> - const char *str; >>>>> - const char *path; >>>>> - char buf[PATH_MAX]; >>>>> - Eina_Iterator *it; >>>>> - >>>>> - o = entrance_gui_theme_get(obj, "entrance/background"); >>>>> - edj = elm_layout_edje_get(o); >>>>> - edje_object_file_get(edj, &path, NULL); >>>>> - list = entrance_gui_stringlist_get(edje_object_data_get(edj, >>> "items")); >>>>> - EINA_LIST_FOREACH(list, l, str) >>>>> - { >>>>> - cbg = calloc(1, sizeof(Entrance_Conf_Background)); >>>>> - snprintf(buf, sizeof(buf), >>>>> - "entrance/background/%s", str); >>>>> - >>>>> - cbg->path = eina_stringshare_add(path); >>>>> - cbg->group = eina_stringshare_add(buf); >>>>> - cbg->name = eina_stringshare_add(str); >>>>> - nl = eina_list_append(nl, cbg); >>>>> - } >>>>> - entrance_gui_stringlist_free(list); >>>>> - evas_object_del(o); >>>>> - >>>>> - it = eina_file_ls(PACKAGE_DATA_DIR"/backgrounds"); >>>>> - EINA_ITERATOR_FOREACH(it, str) >>>>> - { >>>>> - int len; >>>>> - len = strlen(str); >>>>> - if (len < 4) continue; >>>>> - if (!strcmp(&str[len-4], ".edj")) >>>>> - { >>>>> - cbg = calloc(1, sizeof(Entrance_Conf_Background)); >>>>> - snprintf(buf, sizeof(buf), >>>>> - "entrance/background/%s", str); >>>>> - cbg->path = str; >>>>> - /* TODO use entrance/desktop/background or >>>>> e/desktop/background */ >>>>> - cbg->group = >>> eina_stringshare_add("e/desktop/background"); >>>>> - { >>>>> - char *name, *p; >>>>> - name = strrchr(str, '/'); >>>>> - if (name) >>>>> - { >>>>> - name++; >>>>> - name = strdupa(name); >>>>> - p = strrchr(name, '.'); >>>>> - if (p) *p = '\0'; >>>>> - } >>>>> - cbg->name = eina_stringshare_add(name); >>>>> - } >>>>> - nl = eina_list_append(nl, cbg); >>>>> - } >>>>> - else >>>>> - eina_stringshare_del(str); >>>>> - } >>>>> - eina_iterator_free(it); >>>>> - >>>>> - return nl; >>>>> -} >>>>> - >>>>> Entrance_Fill * >>>>> entrance_conf_background_fill_get(void) >>>>> { >>>>> diff --git a/src/bin/entrance_conf.h b/src/bin/entrance_conf.h >>>>> index 8082bea..73ea6cc 100644 >>>>> --- a/src/bin/entrance_conf.h >>>>> +++ b/src/bin/entrance_conf.h >>>>> @@ -8,6 +8,20 @@ typedef struct Entrance_Conf_Background_ >>>>> const char *name; >>>>> } Entrance_Conf_Background; >>>>> >>>>> +#define IMG_LIST_FORK(l_src, l_dest) \ >>>>> + do { \ >>>>> + Entrance_Image *ptr; \ >>>>> + Entrance_Conf_Background *tmp_ptr; \ >>>>> + EINA_LIST_FOREACH(l_src, node, ptr) \ >>>>> + { \ >>>>> + tmp_ptr = malloc(sizeof(Entrance_Conf_Background)); \ >>>>> + tmp_ptr->path = eina_stringshare_add(ptr->path); \ >>>>> + tmp_ptr->group = eina_stringshare_add(ptr->group); \ >>>>> + entrance_conf_background_title_gen(tmp_ptr);\ >>>>> + l_dest = eina_list_append(l_dest, tmp_ptr); \ >>>>> + } \ >>>>> + }while(0); >>>>> + >>>>> typedef void (*Entrance_Conf_Begin) (void); >>>>> typedef void (*Entrance_Conf_End) (void); >>>>> typedef Evas_Object *(*Entrance_Conf_Build) (Evas_Object *obj); >>>>> @@ -19,7 +33,7 @@ void entrance_conf_shutdown(void); >>>>> void entrance_conf_module_register(const char *label, >>> Entrance_Conf_Begin >>>>> begin, Entrance_Conf_End end, Entrance_Conf_Build build, >>>>> Entrance_Conf_Check check, Entrance_Conf_Apply apply); >>>>> void entrance_conf_begin(Evas_Object *obj, Evas_Object *parent); >>>>> void entrance_conf_changed(void); >>>>> -Eina_List *entrance_conf_backgrounds_get(Evas_Object *obj, const char >>>>> *user); >>>>> +void entrance_conf_background_title_gen(Entrance_Conf_Background >>> *ptr); >>>>> Entrance_Fill *entrance_conf_background_fill_get(void); >>>>> >>>>> >>>>> >>>>> -- >>>> >>>> >>>> -- >>>> Michaël Bouchaud (yoz) <y...@efl.so> >>> ------------------------------------------------------------------------------ >>>> Put Bad Developers to Shame >>>> Dominate Development with Jenkins Continuous Integration >>>> Continuously Automate Build, Test & Deployment >>>> Start a new project now. Try Jenkins in the cloud. >>>> http://p.sf.net/sfu/13600_Cloudbees_APR >>>> _______________________________________________ >>>> enlightenment-devel mailing list >>>> enlightenment-devel@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >>> >>> >>> ------------------------------------------------------------------------------ >>> Put Bad Developers to Shame >>> Dominate Development with Jenkins Continuous Integration >>> Continuously Automate Build, Test & Deployment >>> Start a new project now. Try Jenkins in the cloud. >>> http://p.sf.net/sfu/13600_Cloudbees_APR >>> _______________________________________________ >>> enlightenment-devel mailing list >>> enlightenment-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> >> >> >> -- >> Michaël Bouchaud (yoz) <y...@efl.so> >> ------------------------------------------------------------------------------ >> Put Bad Developers to Shame >> Dominate Development with Jenkins Continuous Integration >> Continuously Automate Build, Test & Deployment >> Start a new project now. Try Jenkins in the cloud. >> http://p.sf.net/sfu/13600_Cloudbees_APR >> _______________________________________________ >> enlightenment-devel mailing list >> enlightenment-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > ------------------------------------------------------------------------------ > Put Bad Developers to Shame > Dominate Development with Jenkins Continuous Integration > Continuously Automate Build, Test & Deployment > Start a new project now. Try Jenkins in the cloud. > http://p.sf.net/sfu/13600_Cloudbees_APR > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees_APR _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel