Enlightenment CVS committal

Author  : onefang
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_fdo_menu_to_order.c 


Log Message:
*Refactor away all the icky internal ecore_desktop_menu details.
*No need to export global paths anymore.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_fdo_menu_to_order.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_fdo_menu_to_order.c       4 Sep 2006 20:00:32 -0000       1.8
+++ e_fdo_menu_to_order.c       5 Sep 2006 16:33:31 -0000       1.9
@@ -9,118 +9,64 @@
    Ecore_Sheap *sheap;
 };
 
-static int _e_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree, int 
element, int level);
-static void _e_menu_dump_each_hash_node(void *value, void *user_data);
+static void _e_fdo_menu_to_order_make_apps(char *name, char *path, Ecore_Hash 
*apps);
+static void _e_fdo_menu_to_order_dump_each_hash_node(void *value, void 
*user_data);
 static void _e_fdo_menu_to_order_add_sheap(Ecore_Sheap *sheap, const char 
*order_path, const char *file);
 
 EAPI void
 e_fdo_menu_to_order(void)
 {
-   int i;
-   char *menu_file;
-   
-   /* Find the main menu file. */
-   menu_file = ecore_desktop_paths_file_find(ecore_desktop_paths_menus, 
-                                                 "applications.menu", -1, 
NULL, NULL);
-   if (!menu_file)
-      {
-         /* Try various quirks of various systems. */
-         menu_file = ecore_desktop_paths_file_find(ecore_desktop_paths_menus, 
-                                                 "debian-menu.menu", -1, NULL, 
NULL);
-         /* FIXME: If all else fails, run debians funky menu generator shit. */
-      }
-
-   if (menu_file)
-      {
-         char *path;
-            
-        path = ecore_file_get_dir(menu_file);
-        if (path)
-           {
-              Ecore_Desktop_Tree *menus;
-                 
-              /* convert the xml into menus */
-              menus = ecore_desktop_menu_get(menu_file);
-              if (menus)
-                 {
-                     char dir[PATH_MAX];
+   char dir[PATH_MAX];
 
-                     /* Nuke the old menus. */
-                     snprintf(dir, sizeof(dir), 
"%s/.e/e/applications/menu/all/", ecore_desktop_home_get());
-                     ecore_file_recursive_rm(dir);
-                    /* create the .desktop and order files from the menu */
-                    ecore_desktop_tree_foreach(menus, 0, _e_menu_make_apps, 
path);
-// FIXME: Can't free this just yet, causes major memory corruption.
-//                  ecore_desktop_tree_del(menus);
-                 }
-              free(path);
-              
-           }
-        free(menu_file);
-      }
+   /* Nuke the old menus. */
+   snprintf(dir, sizeof(dir), "%s/.e/e/applications/menu/all/", 
ecore_desktop_home_get());
+   ecore_file_recursive_rm(dir);
+   ecore_desktop_menu_for_each(_e_fdo_menu_to_order_make_apps);
 }
 
-static int
-_e_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree, int element, 
int level)
+static void
+_e_fdo_menu_to_order_make_apps(char *name, char *path, Ecore_Hash *apps)
 {
-   if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
-     {
-        if (strncmp((char *)tree->elements[element].element, "<MENU ", 6) == 0)
-          {
-            struct order_data order_data;
-             char *path;
-             char *name;
-             Ecore_Hash *apps;
-
-             path = (char *)tree->elements[element + 1].element;
-#ifdef DEBUG
-             name = (char *)tree->elements[element].element;
-             printf("MAKING MENU - %s \t\t%s\n", path, name);
-#endif
-//             pool = (Ecore_Hash *) tree->elements[element + 2].element;
-             apps = (Ecore_Hash *) tree->elements[element + 4].element;
-
-             order_data.sheap = ecore_sheap_new(ecore_str_compare, 100);
-            if (order_data.sheap)
-               {
-                   ecore_sheap_set_free_cb(order_data.sheap, free);
-                   snprintf(order_data.order_path, 
sizeof(order_data.order_path), "%s/.e/e/applications/menu/all/%s", 
ecore_desktop_home_get(), &path[11]);
-                   /* Check if we need to create the directory. */
-                   if (!ecore_file_exists(order_data.order_path))
-                      {
-                         const char *temp;
-
-                         ecore_file_mkpath(order_data.order_path);
-                         /* If we create a dir, we add it to the parents 
.order file. */
-                         temp = ecore_file_get_dir((const char *) 
order_data.order_path);
-                        if (temp)
-                           {
-                               
_e_fdo_menu_to_order_add_sheap(order_data.sheap, temp, 
ecore_file_get_file(order_data.order_path));
-                              free((char *) temp);
-                              /* We just used the sheap, but we want it clear 
for next time. */
-                               ecore_sheap_destroy(order_data.sheap);
-                               order_data.sheap = 
ecore_sheap_new(ecore_str_compare, 100);
-                               ecore_sheap_set_free_cb(order_data.sheap, free);
-                           }
-                        temp = ecore_file_get_file(order_data.order_path);
-                        if (temp)
-                           {
+   struct order_data order_data;
+
+   order_data.sheap = ecore_sheap_new(ecore_str_compare, 100);
+   if (order_data.sheap)
+      {
+         ecore_sheap_set_free_cb(order_data.sheap, free);
+         snprintf(order_data.order_path, sizeof(order_data.order_path), 
"%s/.e/e/applications/menu/all/%s", ecore_desktop_home_get(), path);
+         /* Check if we need to create the directory. */
+         if (!ecore_file_exists(order_data.order_path))
+            {
+               const char *temp;
+
+               ecore_file_mkpath(order_data.order_path);
+               /* If we create a dir, we add it to the parents .order file. */
+               temp = ecore_file_get_dir((const char *) order_data.order_path);
+              if (temp)
+                 {
+                     _e_fdo_menu_to_order_add_sheap(order_data.sheap, temp, 
ecore_file_get_file(order_data.order_path));
+                    free((char *) temp);
+                    /* We just used the sheap, but we want it clear for next 
time. */
+                     ecore_sheap_destroy(order_data.sheap);
+                     order_data.sheap = ecore_sheap_new(ecore_str_compare, 
100);
+                     ecore_sheap_set_free_cb(order_data.sheap, free);
+                 }
+              temp = ecore_file_get_file(order_data.order_path);
+              if (temp)
+                 {
 // FIXME: What to do about .directory.eap's when .desktop takes over?
-//                       create_dir_eap(order_path, temp);
-                           }
-                      }
-                   /* Create the apps. */
-                   ecore_hash_for_each_node(apps, _e_menu_dump_each_hash_node, 
&order_data);
-                   _e_fdo_menu_to_order_add_sheap(order_data.sheap, 
order_data.order_path, NULL);
-                   ecore_sheap_destroy(order_data.sheap);
-               }
-          }
-     }
-   return 0;
+//                     create_dir_eap(order_path, temp);
+                 }
+            }
+         /* Create the apps. */
+         ecore_hash_for_each_node(apps, 
_e_fdo_menu_to_order_dump_each_hash_node, &order_data);
+         _e_fdo_menu_to_order_add_sheap(order_data.sheap, 
order_data.order_path, NULL);
+         ecore_sheap_destroy(order_data.sheap);
+      }
 }
 
 static void
-_e_menu_dump_each_hash_node(void *value, void *user_data)
+_e_fdo_menu_to_order_dump_each_hash_node(void *value, void *user_data)
 {
    struct order_data *order_data;
    Ecore_Hash_Node *node;



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to