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