Displaying the basename instead of the full path

This commit is contained in:
Pierre Pronchery 2013-02-28 02:34:35 +01:00
parent d74726241f
commit 3fcb50198a

View File

@ -32,6 +32,7 @@ typedef struct _BrowserPlugin
GtkWidget * widget; GtkWidget * widget;
GtkListStore * store; GtkListStore * store;
GtkWidget * view; GtkWidget * view;
GdkPixbuf * folder;
} Favorites; } Favorites;
@ -62,18 +63,30 @@ BrowserPluginDefinition plugin =
static Favorites * _favorites_init(BrowserPluginHelper * helper) static Favorites * _favorites_init(BrowserPluginHelper * helper)
{ {
Favorites * favorites; Favorites * favorites;
GtkIconTheme * icontheme;
gint size;
GtkCellRenderer * renderer; GtkCellRenderer * renderer;
GtkTreeViewColumn * column; GtkTreeViewColumn * column;
GtkTreeSelection * treesel; GtkTreeSelection * treesel;
GError * error = NULL;
if((favorites = object_new(sizeof(*favorites))) == NULL) if((favorites = object_new(sizeof(*favorites))) == NULL)
return NULL; return NULL;
favorites->helper = helper; favorites->helper = helper;
icontheme = gtk_icon_theme_get_default();
gtk_icon_size_lookup(GTK_ICON_SIZE_BUTTON, &size, &size);
favorites->folder = gtk_icon_theme_load_icon(icontheme, "stock_folder",
size, GTK_ICON_LOOKUP_USE_BUILTIN, &error);
if(favorites->folder == NULL)
{
helper->error(helper->browser, error->message, 1);
g_error_free(error);
}
favorites->widget = gtk_scrolled_window_new(NULL, NULL); favorites->widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(favorites->widget), gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(favorites->widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
favorites->store = gtk_list_store_new(2, GDK_TYPE_PIXBUF, favorites->store = gtk_list_store_new(3, GDK_TYPE_PIXBUF,
G_TYPE_STRING); G_TYPE_STRING, G_TYPE_STRING);
favorites->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL( favorites->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
favorites->store)); favorites->store));
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(favorites->view), gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(favorites->view),
@ -118,7 +131,7 @@ static void _favorites_refresh(Favorites * favorites, GList * selection)
{ {
FILE * fp; FILE * fp;
char const * home; char const * home;
String * filename; gchar * filename;
char buf[512]; char buf[512];
size_t len; size_t len;
int c; int c;
@ -127,11 +140,10 @@ static void _favorites_refresh(Favorites * favorites, GList * selection)
gtk_list_store_clear(favorites->store); gtk_list_store_clear(favorites->store);
if((home = getenv("HOME")) == NULL) if((home = getenv("HOME")) == NULL)
home = g_get_home_dir(); home = g_get_home_dir();
if((filename = string_new_append(home, "/.gtk-bookmarks", NULL)) if((filename = g_build_filename(home, ".gtk-bookmarks", NULL)) == NULL)
== NULL)
return; return;
fp = fopen(filename, "r"); fp = fopen(filename, "r");
string_delete(filename); g_free(filename);
if(fp == NULL) if(fp == NULL)
return; return;
while(fgets(buf, sizeof(buf), fp) != NULL) while(fgets(buf, sizeof(buf), fp) != NULL)
@ -150,13 +162,15 @@ static void _favorites_refresh(Favorites * favorites, GList * selection)
continue; continue;
buf[len - 1] = '\0'; buf[len - 1] = '\0';
memmove(buf, &buf[7], len - 7); memmove(buf, &buf[7], len - 7);
filename = g_path_get_basename(buf);
#if GTK_CHECK_VERSION(2, 6, 0) #if GTK_CHECK_VERSION(2, 6, 0)
gtk_list_store_insert_with_values(favorites->store, &iter, -1, gtk_list_store_insert_with_values(favorites->store, &iter, -1,
#else #else
gtk_list_store_append(favorites->store, &iter); gtk_list_store_append(favorites->store, &iter);
gtk_list_store_set(favorites->store, &iter, gtk_list_store_set(favorites->store, &iter,
#endif #endif
1, buf, -1); 0, favorites->folder, 1, filename, 2, buf, -1);
g_free(filename);
} }
fclose(fp); fclose(fp);
} }