Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_menus.c 


Log Message:


mitigate badness...

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -3 -r1.51 -r1.52
--- e_int_menus.c       1 May 2005 12:35:37 -0000       1.51
+++ e_int_menus.c       1 May 2005 14:41:26 -0000       1.52
@@ -37,8 +37,8 @@
 static void _e_int_menus_desktops_col_del_cb (void *data, E_Menu *m, 
E_Menu_Item *mi);
 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_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_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);
 
 /* externally accessible functions */
 E_Menu *
@@ -565,11 +565,18 @@
      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
 _e_int_menus_themes_pre_cb(void *data, E_Menu *m)
 {
    E_Menu_Item *mi;
    E_Menu *root;
+   int num = 0;
 
    e_menu_pre_activate_callback_set(m, NULL, NULL);
    root = e_menu_root_get(m);
@@ -578,12 +585,6 @@
        char buf[4096];
        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();
        if (homedir)
          {
@@ -591,49 +592,60 @@
             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;
-            char *theme, *deftheme;
             
             themes = ecore_file_ls(buf);
-            theme = E_NEW(char, strlen(buf) + strlen("/default.edj") + 1);
-            snprintf(theme, strlen(buf) + strlen("/default.edj") + 1, 
"%s/default.edj", buf);
-            
-            if (ecore_file_exists("/home/hisham/.e/e/themes/default.edj"))     
       
-              deftheme = 
ecore_file_readlink("/home/hisham/.e/e/themes/default.edj");       
-            if (deftheme)
+            if (themes)
               {
-                 char *s;
-                 if ((s = strrchr(deftheme, '/')))
-                   deftheme = s + 1;
-              }
-            
-            while ((theme = ecore_list_next(themes)))
-              {                          
-                 if (ecore_file_is_dir(theme) || !strrchr(theme,'.'))
-                   continue;
-                 if (!strncmp(strrchr(theme,'.'), ".edj", 4))
-                   {                  
-                      mi = e_menu_item_new(m);
-                      e_menu_item_radio_set(mi, 1);
-                      if (deftheme)
-                        {                        
-                           if (!strcmp(theme, deftheme))
-                             e_menu_item_toggle_set(mi, 1);
+                 char *theme, *deftheme = NULL;
+                 
+                 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)
+                   {
+                      char *s;
+                      
+                      if ((s = strrchr(deftheme, '/')))
+                        deftheme = s + 1;
+                   }
+                 IF_FREE(theme);
+                 
+                 while ((theme = ecore_list_next(themes)))
+                   {
+                      char *ext;
+                      
+                      ext = strrchr(theme, '.');
+                      if (ecore_file_is_dir(theme) || (!ext))
+                        continue;
+                      if (!strcasecmp(ext, ".edj"))
+                        {
+                           mi = e_menu_item_new(m);
+                           e_menu_item_radio_set(mi, 1);
+                           if (deftheme)
+                             {                   
+                                if (!strcmp(theme, deftheme))
+                                  e_menu_item_toggle_set(mi, 1);
+                             }
+                           *ext = 0;
+                           e_menu_item_label_set(mi, theme);
+                           e_menu_item_callback_set(mi, 
_e_int_menus_themes_edit_mode_cb, NULL);
+                           num++;
                         }
-                      *(strrchr(theme, '.')) = '\0';
-                      e_menu_item_label_set(mi, _(theme));
-                      e_menu_item_callback_set(mi, 
_e_int_menus_themes_edit_mode_cb, NULL);
                    }
+                 ecore_list_destroy(themes);
               }
          }
      }
-   else
+   if (num == 0)
      {
        mi = e_menu_item_new(m);
-       e_menu_item_label_set(mi, _("(Unused)"));
-       e_menu_item_callback_set(mi, NULL, NULL);
+       e_menu_item_label_set(mi, _("(Empty)"));
      }
 }
 




-------------------------------------------------------
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

Reply via email to