Mercurial > geeqie
diff src/view_dir_tree.c @ 112:b15d4c18168f
Fri Nov 17 19:06:19 2006 John Ellis <johne@verizon.net>
* ui_fileops.[ch]: Add path_list_lstat() to obtain a path listing that
does not follow symbolic links.
* utilops.[ch]: Add file_util_delete_dir(), and support functions.
* view_dir_list.c: Add delete to folder popup menu.
* view_dir_tree.c: Add delete to folder popup menu, and set rename and
delete sensitive only when parent folder is writable.
author | gqview |
---|---|
date | Sat, 18 Nov 2006 00:12:22 +0000 |
parents | 04ff0df3ad2f |
children | ee857b4ac902 |
line wrap: on
line diff
--- a/src/view_dir_tree.c Wed Nov 15 07:19:16 2006 +0000 +++ b/src/view_dir_tree.c Sat Nov 18 00:12:22 2006 +0000 @@ -1,6 +1,6 @@ /* * GQview - * (C) 2004 John Ellis + * (C) 2006 John Ellis * * Author: John Ellis * @@ -446,6 +446,14 @@ vdtree_rename_by_data(vdt, vdt->click_fd); } +static void vdtree_pop_menu_delete_cb(GtkWidget *widget, gpointer data) +{ + ViewDirTree *vdt = data; + + if (!vdt->click_fd) return; + file_util_delete_dir(vdt->click_fd->path, vdt->widget); +} + static void vdtree_pop_menu_tree_cb(GtkWidget *widget, gpointer data) { ViewDirTree *vdt = data; @@ -464,8 +472,17 @@ { GtkWidget *menu; gint active; + gint parent_active = FALSE; active = (fd != NULL); + if (fd) + { + gchar *parent; + + parent = remove_level_from_path(fd->path); + parent_active = access_file(parent, W_OK | X_OK); + g_free(parent); + } menu = popup_menu_short_lived(); g_signal_connect(G_OBJECT(menu), "destroy", @@ -494,8 +511,10 @@ menu_item_add_sensitive(menu, _("_New folder..."), active, G_CALLBACK(vdtree_pop_menu_new_cb), vdt); - menu_item_add_sensitive(menu, _("_Rename..."), active, + menu_item_add_sensitive(menu, _("_Rename..."), parent_active, G_CALLBACK(vdtree_pop_menu_rename_cb), vdt); + menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, parent_active, + G_CALLBACK(vdtree_pop_menu_delete_cb), vdt); menu_item_add_divider(menu); menu_item_add_check(menu, _("View as _tree"), TRUE,