Enlightenment CVS committal Author : codewarrior Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_int_menus.c Log Message: Moved theme switching to e_config. Is the extern there needed? (seemed to compile without it). There's a comment in the code, maybe someone can look at it until I have a chat with raster. (no more ~/.e/e/themes/default.edj linking). I also need to scan $PREFIX's theme directory. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -3 -r1.52 -r1.53 --- e_int_menus.c 1 May 2005 14:41:26 -0000 1.52 +++ e_int_menus.c 1 May 2005 22:58:33 -0000 1.53 @@ -3,6 +3,8 @@ */ #include "e.h" +extern E_Config *e_config; + typedef struct _Main_Data Main_Data; struct _Main_Data @@ -600,21 +602,17 @@ if (themes) { char *theme, *deftheme = NULL; + Evas_List *l; - theme = E_NEW(char, strlen(buf) + strlen("/default.edj") + 1); - strcpy(theme, buf); - strcat(theme, "/default.edj"); - - if (ecore_file_exists(theme)) - deftheme = ecore_file_readlink(theme); - if (deftheme) + for (l = e_config->themes; l; l = l->next) { - char *s; + E_Config_Theme *et; + char buf[256]; - if ((s = strrchr(deftheme, '/'))) - deftheme = s + 1; - } - IF_FREE(theme); + et = l->data; + if(!strcmp(et->category,"theme")) + deftheme = strdup(et->file); + } while ((theme = ecore_list_next(themes))) { @@ -652,26 +650,25 @@ static void _e_int_menus_themes_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi) { - char *theme; - char *homedir; - char buf[4096]; + char *theme;; + E_Config_Theme *et; + Evas_List *l; + + et = E_NEW(E_Config_Theme, 1); + et->category = strdup("theme"); + + theme = E_NEW(char, strlen(mi->label) + 5); + snprintf(theme, strlen(mi->label) + 5, "%s.edj", mi->label); + + et->file = strdup(theme); + /* Do we want to keep one theme for now? */ + l = evas_list_last(e_config->themes); + e_config->themes = evas_list_remove_list(e_config->themes, l); + e_config->themes = evas_list_append(e_config->themes, et); - homedir = e_user_homedir_get(); - if (homedir) - { - snprintf(buf, sizeof(buf), "%s/.e/e/themes/default.edj", homedir); - theme = E_NEW(char, 4096); - snprintf(theme, 4096, "%s/.e/e/themes/%s.edj", homedir, mi->label); - free(homedir); - } - else - return; + e_config_save_queue(); - ecore_file_unlink(buf); - if (!symlink(theme, buf)) - { - printf("RESTART ON!\n"); - restart = 1; - ecore_main_loop_quit(); - } + printf("RESTART ON!\n"); + restart = 1; + ecore_main_loop_quit(); } ------------------------------------------------------- This SF.Net email is sponsored by: NEC IT Guy Games. Get your fingers limbered up and give it your best shot. 4 great events, 4 opportunities to win big! Highest score wins.NEC IT Guy Games. Play to win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs