mitigate badness...

SVN revision: 14527
This commit is contained in:
Carsten Haitzler 2005-05-01 14:41:26 +00:00
parent 69da487ac4
commit f604e9f494
1 changed files with 52 additions and 40 deletions

View File

@ -38,7 +38,7 @@ static void _e_int_menus_desktops_col_del_cb (void *data, E_Menu *m, E_Menu_Item
static void _e_int_menus_gadgets_pre_cb (void *data, E_Menu *m); static void _e_int_menus_gadgets_pre_cb (void *data, E_Menu *m);
static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_int_menus_themes_pre_cb (void *data, E_Menu *m); static void _e_int_menus_themes_pre_cb (void *data, E_Menu *m);
static void _e_int_menus_themes_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_themes_edit_mode_cb (void *data, E_Menu *m, E_Menu_Item *mi);
/* externally accessible functions */ /* externally accessible functions */
E_Menu * E_Menu *
@ -565,11 +565,18 @@ _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi)
e_gadman_mode_set(gm, E_GADMAN_MODE_NORMAL); e_gadman_mode_set(gm, E_GADMAN_MODE_NORMAL);
} }
/* FIXME:
*
* this HAS to go. its a REALLY BAD HACK - i've fixed up a few problems.. but
* this is just wrong - symlink ... wrong. i f u are going to do this - use
* the e_theme.c stuff - and add code to save and load it
*/
static void static void
_e_int_menus_themes_pre_cb(void *data, E_Menu *m) _e_int_menus_themes_pre_cb(void *data, E_Menu *m)
{ {
E_Menu_Item *mi; E_Menu_Item *mi;
E_Menu *root; E_Menu *root;
int num = 0;
e_menu_pre_activate_callback_set(m, NULL, NULL); e_menu_pre_activate_callback_set(m, NULL, NULL);
root = e_menu_root_get(m); root = e_menu_root_get(m);
@ -578,12 +585,6 @@ _e_int_menus_themes_pre_cb(void *data, E_Menu *m)
char buf[4096]; char buf[4096];
char *homedir; char *homedir;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Choose Theme"));
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
homedir = e_user_homedir_get(); homedir = e_user_homedir_get();
if (homedir) if (homedir)
{ {
@ -591,29 +592,38 @@ _e_int_menus_themes_pre_cb(void *data, E_Menu *m)
free(homedir); free(homedir);
} }
if (ecore_file_exists(buf) && ecore_file_is_dir(buf)) if ((ecore_file_exists(buf)) && (ecore_file_is_dir(buf)))
{ {
Ecore_List *themes; Ecore_List *themes;
char *theme, *deftheme;
themes = ecore_file_ls(buf); themes = ecore_file_ls(buf);
theme = E_NEW(char, strlen(buf) + strlen("/default.edj") + 1); if (themes)
snprintf(theme, strlen(buf) + strlen("/default.edj") + 1, "%s/default.edj", buf); {
char *theme, *deftheme = NULL;
if (ecore_file_exists("/home/hisham/.e/e/themes/default.edj")) theme = E_NEW(char, strlen(buf) + strlen("/default.edj") + 1);
deftheme = ecore_file_readlink("/home/hisham/.e/e/themes/default.edj"); strcpy(theme, buf);
strcat(theme, "/default.edj");
if (ecore_file_exists(theme))
deftheme = ecore_file_readlink(theme);
if (deftheme) if (deftheme)
{ {
char *s; char *s;
if ((s = strrchr(deftheme, '/'))) if ((s = strrchr(deftheme, '/')))
deftheme = s + 1; deftheme = s + 1;
} }
IF_FREE(theme);
while ((theme = ecore_list_next(themes))) while ((theme = ecore_list_next(themes)))
{ {
if (ecore_file_is_dir(theme) || !strrchr(theme,'.')) char *ext;
ext = strrchr(theme, '.');
if (ecore_file_is_dir(theme) || (!ext))
continue; continue;
if (!strncmp(strrchr(theme,'.'), ".edj", 4)) if (!strcasecmp(ext, ".edj"))
{ {
mi = e_menu_item_new(m); mi = e_menu_item_new(m);
e_menu_item_radio_set(mi, 1); e_menu_item_radio_set(mi, 1);
@ -622,18 +632,20 @@ _e_int_menus_themes_pre_cb(void *data, E_Menu *m)
if (!strcmp(theme, deftheme)) if (!strcmp(theme, deftheme))
e_menu_item_toggle_set(mi, 1); e_menu_item_toggle_set(mi, 1);
} }
*(strrchr(theme, '.')) = '\0'; *ext = 0;
e_menu_item_label_set(mi, _(theme)); e_menu_item_label_set(mi, theme);
e_menu_item_callback_set(mi, _e_int_menus_themes_edit_mode_cb, NULL); e_menu_item_callback_set(mi, _e_int_menus_themes_edit_mode_cb, NULL);
num++;
}
}
ecore_list_destroy(themes);
} }
} }
} }
} if (num == 0)
else
{ {
mi = e_menu_item_new(m); mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("(Unused)")); e_menu_item_label_set(mi, _("(Empty)"));
e_menu_item_callback_set(mi, NULL, NULL);
} }
} }