Enlightenment CVS committal Author : devilhorns Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_int_config_background.c Log Message: BUG Fixes: clip/get first time, add advanced section for setting bg on this desk, default, all. Advanced needs Set for this desk and Set for all to be implemented yet. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_background.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- e_int_config_background.c 7 Jan 2006 14:19:26 -0000 1.10 +++ e_int_config_background.c 10 Jan 2006 14:17:59 -0000 1.11 @@ -3,14 +3,21 @@ */ #include "e.h" +#define BG_SET_DEFAULT_DESK 0 +#define BG_SET_THIS_DESK 1 +#define BG_SET_ALL_DESK 2 + /* PROTOTYPES - same all the time */ typedef struct _CFData CFData; typedef struct _E_Cfg_Bg_Data E_Cfg_Bg_Data; -static void *_create_data(E_Config_Dialog *cfd); -static void _free_data(E_Config_Dialog *cfd, CFData *cfdata); -static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata); +static void *_create_data(E_Config_Dialog *cfd); +static void _free_data(E_Config_Dialog *cfd, CFData *cfdata); +static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata); static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); +static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata); +static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); +static void _load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il); /* Actual config data we will be playing with whil the dialog is active */ struct _CFData @@ -18,6 +25,7 @@ /*- BASIC -*/ char *file ; /*- ADVANCED -*/ + int bg_method; }; struct _E_Cfg_Bg_Data @@ -38,12 +46,10 @@ v.free_cfdata = _free_data; v.basic.apply_cfdata = _basic_apply_data; v.basic.create_widgets = _basic_create_widgets; - /* Make these NULL for now until we have something here */ - v.advanced.apply_cfdata = NULL; - v.advanced.create_widgets = NULL; + v.advanced.apply_cfdata = _advanced_apply_data; + v.advanced.create_widgets = _advanced_create_widgets; /* create config diaolg for NULL object/data */ cfd = e_config_dialog_new(con, _("Background Settings"), NULL, 0, &v, NULL); - //e_dialog_resizable_set(cfd->dia, 1); return cfd; } @@ -51,8 +57,8 @@ static void _fill_data(CFData *cfdata) { - /* TODO: get debfault bg */ - + cfdata->bg_method = BG_SET_DEFAULT_DESK; + /* TODO: get default bg */ } static void * @@ -80,14 +86,6 @@ static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata) { - E_Zone *z; - E_Desk *d; - - z = e_zone_current_get(cfd->con); - d = e_desk_current_get(z); - /* Actually take our cfdata settings and apply them in real life */ - printf("file: %s\n", cfdata->file); - //e_bg_add(cfd->con, z, 0, 0, cfdata->file); if (e_config->desktop_default_background) evas_stringshare_del(e_config->desktop_default_background); e_config->desktop_default_background = evas_stringshare_add(cfdata->file); e_bg_update(); @@ -101,20 +99,74 @@ E_Cfg_Bg_Data *d; d = data; - e_widget_image_object_set(d->cfd->data, e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 160, 120, 1)); + e_widget_image_object_set(d->cfd->data, e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 200, 160, 1)); } - /**--GUI--**/ static Evas_Object * _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) { - /* generate the core widget layout for a basic dialog */ - Evas_Object *o, *fr, *im = NULL; - Evas_Object *il; - char buf[4096]; - char *homedir; - Evas_Object *bg; + Evas_Object *o, *fr, *il; + Evas_Object *im = NULL; + + _fill_data(cfdata); + + o = e_widget_table_add(evas, 0); + + cfdata->file = NULL; + il = e_widget_ilist_add(evas, 48, 48, &(cfdata->file)); + e_widget_ilist_selector_set(il, 1); + e_widget_min_size_set(il, 240, 200); + + _load_bgs(evas, cfd, il); + im = cfd->data; + + e_widget_focus_set(il, 1); + e_widget_ilist_go(il); + e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1); + + fr = e_widget_framelist_add(evas, "Preview", 0); + e_widget_min_size_set(fr, 180, 160); + e_widget_table_object_append(o, fr, 1, 0, 1, 1, 1, 1, 1, 1); + e_widget_framelist_object_append(fr, im); + + return o; +} + +static int +_advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata) +{ + E_Zone *z; + E_Desk *d; + Evas_List *l; + int x, y; + + z = e_zone_current_get(cfd->con); + switch (cfdata->bg_method) + { + case BG_SET_DEFAULT_DESK: + if (e_config->desktop_default_background) evas_stringshare_del(e_config->desktop_default_background); + e_config->desktop_default_background = evas_stringshare_add(cfdata->file); + e_bg_update(); + e_config_save_queue(); + break; + case BG_SET_THIS_DESK: + d = e_desk_current_get(z); + e_desk_xy_get(d, &x, &y); + break; + case BG_SET_ALL_DESK: + break; + } + return 1; /* Apply was OK */ +} + +static Evas_Object * +_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) +{ + Evas_Object *o, *fr, *il; + Evas_Object *im = NULL; + Evas_Object *oc; + E_Radio_Group *rg; _fill_data(cfdata); @@ -122,7 +174,48 @@ cfdata->file = NULL; il = e_widget_ilist_add(evas, 48, 48, &(cfdata->file)); - //e_widget_ilist_selector_set(il, 1); + e_widget_ilist_selector_set(il, 1); + e_widget_min_size_set(il, 240, 200); + + _load_bgs(evas, cfd, il); + im = cfd->data; + + e_widget_focus_set(il, 1); + e_widget_ilist_go(il); + e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1); + + fr = e_widget_framelist_add(evas, "Preview", 0); + e_widget_min_size_set(fr, 180, 160); + e_widget_table_object_append(o, fr, 1, 0, 1, 1, 1, 1, 1, 1); + e_widget_framelist_object_append(fr, im); + + rg = e_widget_radio_group_new(&(cfdata->bg_method)); + + fr = e_widget_framelist_add(evas, "Set Background For", 0); + e_widget_min_size_set(fr, 180, 160); + + oc = e_widget_radio_add(evas, _("Default Desktop"), BG_SET_DEFAULT_DESK, rg); + e_widget_framelist_object_append(fr, oc); + oc = e_widget_radio_add(evas, _("This Desktop"), BG_SET_THIS_DESK, rg); + e_widget_disabled_set(oc, 1); + e_widget_framelist_object_append(fr, oc); + oc = e_widget_radio_add(evas, _("All Desktops"), BG_SET_ALL_DESK, rg); + e_widget_disabled_set(oc, 1); + e_widget_framelist_object_append(fr, oc); + + e_widget_table_object_append(o, fr, 1, 1, 1, 1, 1, 1, 1, 1); + + return o; +} + +static void +_load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il) +{ + Evas_Object *im = NULL; + Evas_Object *bg = NULL; + char buf[4096]; + char *homedir; + homedir = e_user_homedir_get(); if (homedir) { @@ -130,7 +223,7 @@ free(homedir); } - if ((ecore_file_exists(buf)) && (ecore_file_is_dir(buf))) + if (ecore_file_is_dir(buf)) { Ecore_List *bgs; @@ -151,70 +244,49 @@ while ((bgfile = ecore_list_next(bgs))) { snprintf(fullbg, sizeof(fullbg), "%s/%s", buf, bgfile); - if (ecore_file_is_dir(fullbg)) - continue; + if (ecore_file_is_dir(fullbg)) continue; /* minimum theme requirements */ if (edje_object_file_set(o, fullbg, "desktop/background")) { Evas_Object *o = NULL; - char *noext, *ext; + char *noext; E_Cfg_Bg_Data *cb_data; - o = e_thumb_generate_begin(fullbg, 48, 48, cfd->dia->win->evas, &o, NULL, NULL); - - ext = strrchr(bgfile ,'.'); - - if (!ext) - { - noext = strdup(bgfile); - } - else - { - noext = malloc((ext - bgfile + 1)); - if (bgfile) - { - memcpy(noext, bgfile, ext - bgfile); - noext[ext - bgfile] = 0; - } - } + o = e_thumb_generate_begin(fullbg, 48, 48, evas, &o, NULL, NULL); + + noext = ecore_file_strip_ext(bgfile); cb_data = E_NEW(E_Cfg_Bg_Data, 1); cb_data->cfd = cfd; cb_data->file = strdup(fullbg); e_widget_ilist_append(il, o, noext, _e_config_bg_cb_standard, cb_data, fullbg); if ((e_config->desktop_default_background) && !(strcmp(e_config->desktop_default_background, fullbg))) - { + { e_widget_ilist_selected_set(il, i); bg = edje_object_add(evas); edje_object_file_set(bg, e_config->desktop_default_background, "desktop/background"); - im = e_widget_image_add_from_object(evas, bg, 160, 120); - } - + im = e_widget_image_add_from_object(evas, bg, 200, 160); + e_widget_image_object_set(im, e_thumb_evas_object_get(fullbg, evas, 200, 160, 1)); + } free(noext); i++; } } - + free(bgfile); evas_object_del(o); ecore_evas_free(eebuf); ecore_list_destroy(bgs); } } - e_widget_ilist_go(il); - e_widget_min_size_set(il, 240, 320); - e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1); - fr = e_widget_framelist_add(evas, "Preview", 0); + if (im == NULL) { bg = edje_object_add(evas); e_theme_edje_object_set(bg, "base/theme/background", "desktop/background"); - im = e_widget_image_add_from_object(evas, bg, 160, 120); + im = e_widget_image_add_from_object(evas, bg, 200, 160); } cfd->data = im; - e_widget_min_size_set(fr, 180, 150); - e_widget_table_object_append(o, fr, 1, 0, 1, 1, 1, 1, 1, 1); - e_widget_framelist_object_append(fr, im); - - return o; } + + ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs