Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_fm.c e_fm.h e_fwin.c 


Log Message:


in theory handle custom themes for everything now (fm2-wise)

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v
retrieving revision 1.146
retrieving revision 1.147
diff -u -3 -r1.146 -r1.147
--- e_fm.c      16 Apr 2007 09:44:40 -0000      1.146
+++ e_fm.c      17 Apr 2007 15:46:50 -0000      1.147
@@ -74,6 +74,7 @@
    unsigned char     listing : 1;
 
    E_Fm2_Config     *config;
+   const char       *custom_theme;
 
    struct {
       Evas_Object      *obj, *obj2;
@@ -293,6 +294,8 @@
 static void _e_fm2_cb_dbus_method_add_match(void *data, 
Ecore_DBus_Method_Return *reply);
 static void _e_fm2_cb_dbus_method_error(void *data, const char *error);
 
+static int _e_fm2_theme_edje_object_set(E_Fm2_Smart_Data *sd, Evas_Object *o, 
const char *category, const char *group);
+
 static void _e_fm2_client_spawn(void);
 static E_Fm2_Client *_e_fm2_client_get(void);
 static void _e_fm2_client_monitor_add(int id, const char *path);
@@ -498,6 +501,22 @@
 }
 
 EAPI void
+e_fm2_custom_theme_set(Evas_Object *obj, const char *path)
+{
+   E_Fm2_Smart_Data *sd;
+   
+   sd = evas_object_smart_data_get(obj);
+   if (!sd) return; // safety
+   if (!evas_object_type_get(obj)) return; // safety
+   if (strcmp(evas_object_type_get(obj), "e_fm")) return; // safety
+   if (sd->custom_theme) evas_stringshare_del(sd->custom_theme);
+   if (path)
+     sd->custom_theme = evas_stringshare_add(path);
+   else
+     sd->custom_theme = NULL;
+}
+
+EAPI void
 e_fm2_path_get(Evas_Object *obj, const char **dev, const char **path)
 {
    E_Fm2_Smart_Data *sd;
@@ -907,7 +926,7 @@
               {
                  oic = edje_object_add(evas);
                  if (!edje_object_file_set(oic, ici->icon, "icon"))
-                   e_theme_edje_object_set(oic, "base/theme/fileman",
+                   _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                            "e/icons/fileman/file");
               }
             else
@@ -930,7 +949,7 @@
    if (S_ISDIR(ici->statinfo.st_mode))
      {
        oic = edje_object_add(evas);
-       e_theme_edje_object_set(oic, "base/theme/fileman",
+       _e_fm2_theme_edje_object_set(ic->sd, oic, "base/theme/fileman",
                                "e/icons/fileman/folder");
      }
    else
@@ -959,7 +978,7 @@
             if (!icon)
               {
                  oic = edje_object_add(evas);
-                 e_theme_edje_object_set(oic, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                          "e/icons/fileman/file");
                  if (type_ret) *type_ret = "FILE_TYPE";
               }
@@ -992,10 +1011,10 @@
             else if (!strncmp(icon, "e/icons/fileman/mime/", 21))
               {
                  oic = edje_object_add(evas);
-                 if (!e_theme_edje_object_set(oic, 
+                 if (!_e_fm2_theme_edje_object_set(ic->sd, oic, 
                                               "base/theme/fileman",
                                               icon))
-                   e_theme_edje_object_set(oic, "base/theme/fileman",
+                   _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                            "e/icons/fileman/file");
                  if (type_ret) *type_ret = "THEME";
               }
@@ -1006,7 +1025,7 @@
                    {
                       oic = edje_object_add(evas);
                       if (!edje_object_file_set(oic, icon, "icon"))
-                        e_theme_edje_object_set(oic, "base/theme/fileman",
+                        _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                                 "e/icons/fileman/file");
                    }
                  else
@@ -1083,7 +1102,7 @@
                  if (oic == NULL) 
                    {
                       oic = edje_object_add(evas);         
-                      e_theme_edje_object_set(oic, "base/theme/fileman",
+                      _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                         "e/icons/fileman/file");
                       if (type_ret) *type_ret = "FILE_TYPE";
                    }
@@ -1095,42 +1114,42 @@
             else if (S_ISCHR(ici->statinfo.st_mode))
               {
                  oic = edje_object_add(evas);
-                 e_theme_edje_object_set(oic, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                          "e/icons/fileman/file");
                  if (type_ret) *type_ret = "FILE_TYPE";
               }
             else if (S_ISBLK(ici->statinfo.st_mode))
               {
                  oic = edje_object_add(evas);
-                 e_theme_edje_object_set(oic, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                          "e/icons/fileman/file");
                  if (type_ret) *type_ret = "FILE_TYPE";
               }
             else if (S_ISFIFO(ici->statinfo.st_mode))
               {
                  oic = edje_object_add(evas);
-                 e_theme_edje_object_set(oic, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                          "e/icons/fileman/file");
                  if (type_ret) *type_ret = "FILE_TYPE";
               }
             else if (S_ISSOCK(ici->statinfo.st_mode))
               {
                  oic = edje_object_add(evas);
-                 e_theme_edje_object_set(oic, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                          "e/icons/fileman/file");
                  if (type_ret) *type_ret = "FILE_TYPE";
               }
             else if (ecore_file_can_exec(buf))
               {
                  oic = edje_object_add(evas);
-                 e_theme_edje_object_set(oic, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                          "e/icons/fileman/file");
                  if (type_ret) *type_ret = "FILE_TYPE";
               }
             else
               {
                  oic = edje_object_add(evas);
-                 e_theme_edje_object_set(oic, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, oic, 
"base/theme/fileman",
                                          "e/icons/fileman/file");
                  if (type_ret) *type_ret = "FILE_TYPE";
               }
@@ -2349,7 +2368,7 @@
             if (!obj)
               {
                  obj = edje_object_add(evas_object_evas_get(ic->sd->obj));
-                 e_theme_edje_object_set(obj, "base/theme/fileman",
+                 _e_fm2_theme_edje_object_set(ic->sd, obj, 
"base/theme/fileman",
                                          "e/fileman/icon/variable");
                   ic->sd->tmp.obj = obj;
               }
@@ -2370,10 +2389,10 @@
               {
                  obj = edje_object_add(evas_object_evas_get(ic->sd->obj));
                  if (ic->sd->config->icon.fixed.w)
-                   e_theme_edje_object_set(obj, "base/theme/fileman",
+                   _e_fm2_theme_edje_object_set(ic->sd, obj, 
"base/theme/fileman",
                                            "e/fileman/list/fixed");
                  else
-                   e_theme_edje_object_set(obj, "base/theme/fileman",
+                   _e_fm2_theme_edje_object_set(ic->sd, obj, 
"base/theme/fileman",
                                            "e/fileman/list/variable");
                  ic->sd->tmp.obj = obj;
               }
@@ -2456,29 +2475,29 @@
         if (ic->sd->config->icon.fixed.w)
          {
             if (ic->odd)
-              e_theme_edje_object_set(ic->obj, "base/theme/widgets",
+              _e_fm2_theme_edje_object_set(ic->sd, ic->obj, 
"base/theme/widgets",
                                       "e/fileman/list_odd/fixed");
             else
-              e_theme_edje_object_set(ic->obj, "base/theme/widgets",
+              _e_fm2_theme_edje_object_set(ic->sd, ic->obj, 
"base/theme/widgets",
                                       "e/fileman/list/fixed");
          }
        else
          {
             if (ic->odd)
-              e_theme_edje_object_set(ic->obj, "base/theme/widgets",
+              _e_fm2_theme_edje_object_set(ic->sd, ic->obj, 
"base/theme/widgets",
                                       "e/fileman/list_odd/variable");
             else
-              e_theme_edje_object_set(ic->obj, "base/theme/widgets",
+              _e_fm2_theme_edje_object_set(ic->sd, ic->obj, 
"base/theme/widgets",
                                       "e/fileman/list/variable");
          }
      }
    else
      {
         if (ic->sd->config->icon.fixed.w)
-         e_theme_edje_object_set(ic->obj, "base/theme/fileman",
+         _e_fm2_theme_edje_object_set(ic->sd, ic->obj, "base/theme/fileman",
                                  "e/fileman/icon/fixed");
        else
-         e_theme_edje_object_set(ic->obj, "base/theme/fileman",
+         _e_fm2_theme_edje_object_set(ic->sd, ic->obj, "base/theme/fileman",
                                  "e/fileman/icon/variable");
      }
    _e_fm2_icon_label_set(ic, ic->obj);
@@ -3820,29 +3839,29 @@
                  if (ic->sd->config->icon.fixed.w)
                    {
                       if (ic->odd)
-                        e_theme_edje_object_set(o, "base/theme/widgets",
+                        _e_fm2_theme_edje_object_set(ic->sd, o, 
"base/theme/widgets",
                                                 "e/fileman/list_odd/fixed");
                       else
-                        e_theme_edje_object_set(o, "base/theme/widgets",
+                        _e_fm2_theme_edje_object_set(ic->sd, o, 
"base/theme/widgets",
                                                 "e/fileman/list/fixed");
                    }
                  else
                    {
                       if (ic->odd)
-                        e_theme_edje_object_set(o, "base/theme/widgets",
+                        _e_fm2_theme_edje_object_set(ic->sd, o, 
"base/theme/widgets",
                                                 "e/fileman/list_odd/variable");
                       else
-                        e_theme_edje_object_set(o, "base/theme/widgets",
+                        _e_fm2_theme_edje_object_set(ic->sd, o, 
"base/theme/widgets",
                                                 "e/fileman/list/variable");
                    }
               }
             else
               {
                  if (ic->sd->config->icon.fixed.w)
-                   e_theme_edje_object_set(o, "base/theme/fileman",
+                   _e_fm2_theme_edje_object_set(ic->sd, o, 
"base/theme/fileman",
                                            "e/fileman/icon/fixed");
                  else
-                   e_theme_edje_object_set(o, "base/theme/fileman",
+                   _e_fm2_theme_edje_object_set(ic->sd, o, 
"base/theme/fileman",
                                            "e/fileman/icon/variable");
               }
             _e_fm2_icon_label_set(ic, o);
@@ -4347,21 +4366,21 @@
    
    sd->drop = edje_object_add(evas_object_evas_get(obj));
    evas_object_clip_set(sd->drop, sd->clip);
-   e_theme_edje_object_set(sd->drop, "base/theme/fileman",
+   _e_fm2_theme_edje_object_set(sd, sd->drop, "base/theme/fileman",
                           "e/fileman/list/drop_between");
    evas_object_smart_member_add(sd->drop, obj);
    evas_object_show(sd->drop);
    
    sd->drop_in = edje_object_add(evas_object_evas_get(obj));
    evas_object_clip_set(sd->drop_in, sd->clip);
-   e_theme_edje_object_set(sd->drop_in, "base/theme/fileman",
+   _e_fm2_theme_edje_object_set(sd, sd->drop_in, "base/theme/fileman",
                           "e/fileman/list/drop_in");
    evas_object_smart_member_add(sd->drop_in, obj);
    evas_object_show(sd->drop_in);
    
    sd->overlay = edje_object_add(evas_object_evas_get(obj));
    evas_object_clip_set(sd->overlay, sd->clip);
-   e_theme_edje_object_set(sd->overlay, "base/theme/fileman",
+   _e_fm2_theme_edje_object_set(sd, sd->overlay, "base/theme/fileman",
                           "e/fileman/overlay");
    evas_object_smart_member_add(sd->overlay, obj);
    evas_object_show(sd->overlay);
@@ -4399,6 +4418,7 @@
    if (sd->scroll_job) ecore_job_del(sd->scroll_job);
    if (sd->resize_job) ecore_job_del(sd->resize_job);
    if (sd->refresh_job) ecore_job_del(sd->refresh_job);
+   if (sd->custom_theme) evas_stringshare_del(sd->custom_theme);
    if (sd->dev) evas_stringshare_del(sd->dev);
    if (sd->path) evas_stringshare_del(sd->path);
    if (sd->realpath)
@@ -5851,4 +5871,23 @@
 _e_fm2_cb_dbus_method_error(void *data, const char *error)
 {
    printf("E FM: DBus Error: %s\n", error);
+}
+
+static int
+_e_fm2_theme_edje_object_set(E_Fm2_Smart_Data *sd, Evas_Object *o, const char 
*category, const char *group)
+{
+   if (sd->custom_theme)
+     {
+       /* FIXME: need a way of caching what elements are and are not in the 
custom theme */
+       if (edje_object_file_set(o, sd->custom_theme, group)) return 1;
+     }
+   if (sd->custom_theme)
+     {
+       if (!ecore_file_exists(sd->custom_theme))
+         {
+            evas_stringshare_del(sd->custom_theme);
+            sd->custom_theme = NULL;
+         }
+     }
+   return e_theme_edje_object_set(o, category, group);
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.h,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -3 -r1.39 -r1.40
--- e_fm.h      2 Mar 2007 17:00:20 -0000       1.39
+++ e_fm.h      17 Apr 2007 15:46:51 -0000      1.40
@@ -151,6 +151,7 @@
 EAPI int                   e_fm2_shutdown(void);
 EAPI Evas_Object          *e_fm2_add(Evas *evas);
 EAPI void                  e_fm2_path_set(Evas_Object *obj, const char *dev, 
const char *path);
+EAPI void                  e_fm2_custom_theme_set(Evas_Object *obj, const char 
*path);
 EAPI void                  e_fm2_path_get(Evas_Object *obj, const char **dev, 
const char **path);
 EAPI void                  e_fm2_refresh(Evas_Object *obj);
 EAPI const char           *e_fm2_real_path_get(Evas_Object *obj);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_fwin.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- e_fwin.c    16 Apr 2007 15:23:11 -0000      1.36
+++ e_fwin.c    17 Apr 2007 15:46:51 -0000      1.37
@@ -280,6 +280,12 @@
                                         "e/fileman/scrollframe/default");
        e_scrollframe_child_pos_set(fwin->scrollframe_obj, 0, 0);
      }
+   snprintf(buf, sizeof(buf), "%s/.directory-theme.edj",
+           e_fm2_real_path_get(fwin->fm_obj));
+   if (ecore_file_exists(buf))
+     e_fm2_custom_theme_set(obj, buf);
+   else
+     e_fm2_custom_theme_set(obj, NULL);
 }
 
 static void



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to