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

Reply via email to