split off gtk bookmarks into their own submenu so the navigate menu doesn't get too huge

SVN revision: 76681
This commit is contained in:
Mike Blumenkrantz 2012-09-14 16:00:24 +00:00
parent e58b6f199b
commit eed83ff084
1 changed files with 23 additions and 21 deletions

View File

@ -226,6 +226,7 @@ _e_mod_fileman_parse_gtk_bookmarks(E_Menu *m,
{
char line[4096];
char buf[PATH_MAX];
E_Menu *subm = NULL;
E_Menu_Item *mi;
Efreet_Uri *uri;
char *alias;
@ -235,7 +236,7 @@ _e_mod_fileman_parse_gtk_bookmarks(E_Menu *m,
fp = fopen(buf, "r");
if (fp)
{
while(fgets(line, sizeof(line), fp))
while (fgets(line, sizeof(line), fp))
{
alias = NULL;
line[strlen(line) - 1] = '\0';
@ -246,27 +247,32 @@ _e_mod_fileman_parse_gtk_bookmarks(E_Menu *m,
alias++;
}
uri = efreet_uri_decode(line);
if (uri && uri->path)
if ((!uri) || (!uri->path)) continue;
if (!ecore_file_exists(uri->path)) continue;
if (!subm)
{
if (ecore_file_exists(uri->path))
if (need_separator)
{
if (need_separator)
{
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
need_separator = 0;
}
mi = e_menu_item_new(m);
e_object_data_set(E_OBJECT(mi), uri->path);
e_menu_item_label_set(mi, alias ? alias :
ecore_file_file_get(uri->path));
e_util_menu_item_theme_icon_set(mi, "folder");
e_menu_item_callback_set(mi, _e_mod_menu_gtk_cb,
(void *)eina_stringshare_add(uri->path));
e_menu_item_submenu_pre_callback_set(mi, _e_mod_menu_populate, eina_stringshare_add("/"));
e_menu_item_separator_set(mi, 1);
need_separator = 0;
}
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("GTK Bookmarks"));
e_util_menu_item_theme_icon_set(mi, "bookmarks");
subm = e_menu_new();
e_menu_item_submenu_set(mi, subm);
e_object_unref(E_OBJECT(subm));
}
mi = e_menu_item_new(subm);
e_object_data_set(E_OBJECT(mi), uri->path);
e_menu_item_label_set(mi, alias ? alias :
ecore_file_file_get(uri->path));
e_util_menu_item_theme_icon_set(mi, "folder");
e_menu_item_callback_set(mi, _e_mod_menu_gtk_cb,
(void *)eina_stringshare_add(uri->path));
e_menu_item_submenu_pre_callback_set(mi, _e_mod_menu_populate, eina_stringshare_add("/"));
if (uri) efreet_uri_free(uri);
}
fclose(fp);
@ -361,11 +367,7 @@ _e_mod_menu_generate(void *data __UNUSED__, E_Menu *m)
volumes_visible = 1;
}
/* Favorites */
//~ if (places_conf->show_bookm)
//~ {
_e_mod_fileman_parse_gtk_bookmarks(m, need_separator || volumes_visible > 0);
//~ }
e_menu_pre_activate_callback_set(m, NULL, NULL);
}