EAPI void
ecore_desktop_menu_for_each(void (*func)
- (char *name, char *path, Ecore_Hash * apps))
+ (char *name, char *path, char *directory, Ecore_Hash * apps))
{
char *menu_file;
{
if (strncmp((char *)tree->elements[element].element, "<MENU ", 6) == 0)
{
+ int len;
char *path;
char *name;
+ char *directory;
Ecore_Hash *apps;
- void (*func) (char *name, char *path,
+ void (*func) (char *name, char *path, char *directory,
Ecore_Hash * apps);
func = data;
name = (char *)tree->elements[element].element;
+ directory = name;
+ directory += 8;
+ path = strchr(directory, '<');
+ path++;
+ directory = strchr(path, '<');
+ directory++;
+ len = strlen(directory);
+ if (len > 2)
+ {
+ path = strdup(directory);
+ if (path)
+ {
+ path[len - 1] = '\0';
+ /* FIXME: Figure out what to do if it's just ".directory". */
+ directory = ecore_desktop_paths_file_find(ecore_desktop_paths_directories, path, 0, NULL, NULL);
+ free(path);
+ }
+ else
+ directory = NULL;
+ }
+ else
+ directory = NULL;
path = (char *)tree->elements[element + 1].element;
-#ifdef DEBUG
- 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;
path = &path[11];
-
+#ifdef DEBUG
+ printf("OUTPUTTING MENU - %s \t\t%s \t\t%s\n", path, name, directory);
+#endif
if (func)
- func(name, path, apps);
+ func(name, path, directory, apps);
+ free(directory);
}
}
return 0;
&data);
#ifdef DEBUG
- ecore_desktop_tree_dump(menu_xml, 0);
- printf("\n\n");
+// ecore_desktop_tree_dump(menu_xml, 0);
+// printf("\n\n");
#endif
}
}
sprintf(temp, "%s%s", legacy_data->prefix, file);
ecore_hash_set(pool, strdup(temp), strdup(path));
#ifdef DEBUG
- printf
- ("POOLING - _ecore_desktop_menu_legacy_menu(void *data, %s) - %s - %s\n",
- path, file, temp);
+// printf
+// ("POOLING - _ecore_desktop_menu_legacy_menu(void *data, %s) - %s - %s\n",
+// path, file, temp);
#endif
if (rules->size > 0)
{
file[i] = '-';
ecore_hash_set(our_data->pool, file, strdup(path));
#ifdef DEBUG
- printf
- ("POOLING - _ecore_desktop_menu_check_app(void *data, %s) - %s\n",
- path, file);
+// printf
+// ("POOLING - _ecore_desktop_menu_check_app(void *data, %s) - %s\n",
+// path, file);
#endif
}
}
key = (char *)node->key;
app = (char *)node->value;
#ifdef DEBUG
- printf("CHECKING %s - %s\n", app, key);
+// printf("CHECKING %s - %s\n", app, key);
#endif
if (!ecore_hash_get(pool, key))
ecore_hash_set(pool, strdup(key), strdup(app));
{
ecore_hash_set(generate_data->apps, key, strdup(app));
#ifdef DEBUG
- printf("INCLUDING %s%s - %s\n",
- ((generate_data->unallocated) ? "UNALLOCATED " : ""),
- app, key);
+// printf("INCLUDING %s%s - %s\n",
+// ((generate_data->unallocated) ? "UNALLOCATED " : ""),
+// app, key);
#endif
}
else