# HG changeset patch # User nadvornik # Date 1241898324 0 # Node ID c03a8e19a43a3b4b756b124c41b46cfcf40472c5 # Parent e02bf864fcdc04b7e053d306c170852fa20981cb expose the file grouping flag to the user diff -r e02bf864fcdc -r c03a8e19a43a src/filedata.c --- a/src/filedata.c Sat May 09 19:25:51 2009 +0000 +++ b/src/filedata.c Sat May 09 19:45:24 2009 +0000 @@ -670,6 +670,7 @@ void file_data_disable_grouping(FileData *fd, gboolean disable) { if (!fd->disable_grouping == !disable) return; + fd->disable_grouping = !!disable; if (disable) @@ -678,7 +679,6 @@ { FileData *parent = file_data_ref(fd->parent); file_data_disconnect_sidecar_file(parent, fd); - file_data_send_notification(fd, NOTIFY_GROUPING); file_data_send_notification(parent, NOTIFY_GROUPING); file_data_unref(parent); } @@ -693,18 +693,37 @@ file_data_disconnect_sidecar_file(fd, sfd); file_data_send_notification(sfd, NOTIFY_GROUPING); } - file_data_send_notification(fd, NOTIFY_GROUPING); file_data_check_sidecars((FileData *)sidecar_files->data, FALSE); /* this will group the sidecars back together */ filelist_free(sidecar_files); } + else + { + file_data_increment_version(fd); /* the functions called in the cases above increments the version too */ + } } else { + file_data_increment_version(fd); file_data_check_sidecars(fd, FALSE); - file_data_send_notification(fd, NOTIFY_GROUPING); + } + file_data_send_notification(fd, NOTIFY_GROUPING); +} + +void file_data_disable_grouping_list(GList *fd_list, gboolean disable) +{ + GList *work; + + work = fd_list; + while (work) + { + FileData *fd = work->data; + + file_data_disable_grouping(fd, disable); + work = work->next; } } + /* compare name without extension */ gint file_data_compare_name_without_ext(FileData *fd1, FileData *fd2) { diff -r e02bf864fcdc -r c03a8e19a43a src/filedata.h --- a/src/filedata.h Sat May 09 19:25:51 2009 +0000 +++ b/src/filedata.h Sat May 09 19:45:24 2009 +0000 @@ -43,6 +43,7 @@ void file_data_change_info_free(FileDataChangeInfo *fdci, FileData *fd); void file_data_disable_grouping(FileData *fd, gboolean disable); +void file_data_disable_grouping_list(GList *fd_list, gboolean disable); gint filelist_sort_compare_filedata(FileData *fa, FileData *fb); gint filelist_sort_compare_filedata_full(FileData *fa, FileData *fb, SortType method, gboolean ascend); diff -r e02bf864fcdc -r c03a8e19a43a src/layout_util.c --- a/src/layout_util.c Sat May 09 19:25:51 2009 +0000 +++ b/src/layout_util.c Sat May 09 19:45:24 2009 +0000 @@ -301,6 +301,20 @@ file_util_delete(NULL, layout_selection_list(lw), layout_window(lw)); } +static void layout_menu_disable_grouping_cb(GtkAction *action, gpointer data) +{ + LayoutWindow *lw = data; + + file_data_disable_grouping_list(layout_selection_list(lw), TRUE); +} + +static void layout_menu_enable_grouping_cb(GtkAction *action, gpointer data) +{ + LayoutWindow *lw = data; + + file_data_disable_grouping_list(layout_selection_list(lw), FALSE); +} + static void layout_menu_close_cb(GtkAction *action, gpointer data) { LayoutWindow *lw = data; @@ -1236,6 +1250,8 @@ { "Delete", GTK_STOCK_DELETE, N_("_Delete..."), "D", N_("Delete..."), CB(layout_menu_delete_cb) }, { "DeleteAlt1", GTK_STOCK_DELETE, N_("_Delete..."), "Delete", N_("Delete..."), CB(layout_menu_delete_cb) }, { "DeleteAlt2", GTK_STOCK_DELETE, N_("_Delete..."), "KP_Delete", N_("Delete..."), CB(layout_menu_delete_cb) }, + { "EnableGrouping", NULL, N_("Enable file _grouping"), NULL, N_("Enable file grouping"), CB(layout_menu_enable_grouping_cb) }, + { "DisableGrouping", NULL, N_("Disable file groupi_ng"), NULL, N_("Disable file grouping"), CB(layout_menu_disable_grouping_cb) }, { "CopyPath", NULL, N_("_Copy path to clipboard"), NULL, N_("Copy path to clipboard"), CB(layout_menu_copy_path_cb) }, { "CloseWindow", GTK_STOCK_CLOSE, N_("C_lose window"), "W", N_("Close window"), CB(layout_menu_close_cb) }, { "Quit", GTK_STOCK_QUIT, N_("_Quit"), "Q", N_("Quit"), CB(layout_menu_exit_cb) }, diff -r e02bf864fcdc -r c03a8e19a43a src/view_file.c --- a/src/view_file.c Sat May 09 19:25:51 2009 +0000 +++ b/src/view_file.c Sat May 09 19:45:24 2009 +0000 @@ -374,6 +374,20 @@ file_util_copy_path_list_to_clipboard(vf_pop_menu_file_list(vf)); } +static void vf_pop_menu_enable_grouping_cb(GtkWidget *widget, gpointer data) +{ + ViewFile *vf = data; + + file_data_disable_grouping_list(vf_pop_menu_file_list(vf), FALSE); +} + +static void vf_pop_menu_disable_grouping_cb(GtkWidget *widget, gpointer data) +{ + ViewFile *vf = data; + + file_data_disable_grouping_list(vf_pop_menu_file_list(vf), TRUE); +} + static void vf_pop_menu_sort_cb(GtkWidget *widget, gpointer data) { ViewFile *vf; @@ -583,6 +597,11 @@ menu_item_add_sensitive(menu, _("_Copy path"), active, G_CALLBACK(vf_pop_menu_copy_path_cb), vf); + menu_item_add_sensitive(menu, _("Enable file _grouping"), active, + G_CALLBACK(vf_pop_menu_enable_grouping_cb), vf); + menu_item_add_sensitive(menu, _("Disable file groupi_ng"), active, + G_CALLBACK(vf_pop_menu_disable_grouping_cb), vf); + menu_item_add_divider(menu); submenu = submenu_add_sort(NULL, G_CALLBACK(vf_pop_menu_sort_cb), vf, diff -r e02bf864fcdc -r c03a8e19a43a src/view_file_icon.c --- a/src/view_file_icon.c Sat May 09 19:25:51 2009 +0000 +++ b/src/view_file_icon.c Sat May 09 19:45:24 2009 +0000 @@ -2356,7 +2356,8 @@ } else { - name_sidecars = g_strdup_printf("%s%s", link, id->fd->name); + gchar *disabled_grouping = id->fd->disable_grouping ? _(" [NO GROUPING]") : ""; + name_sidecars = g_strdup_printf("%s%s%s", link, id->fd->name, disabled_grouping); } g_object_set(cell, "pixbuf", id->fd->thumb_pixbuf, diff -r e02bf864fcdc -r c03a8e19a43a src/view_file_list.c --- a/src/view_file_list.c Sat May 09 19:25:51 2009 +0000 +++ b/src/view_file_list.c Sat May 09 19:45:24 2009 +0000 @@ -799,7 +799,8 @@ } else { - name_sidecars = g_strdup_printf("%s%s", link, fd->name); + gchar *disabled_grouping = fd->disable_grouping ? _(" [NO GROUPING]") : ""; + name_sidecars = g_strdup_printf("%s%s%s", link, fd->name, disabled_grouping); } size = text_from_size(fd->size);