expose the file grouping flag to the user
authorVladimir Nadvornik <nadvornik@suse.cz>
Sat, 9 May 2009 19:45:24 +0000 (19:45 +0000)
committerVladimir Nadvornik <nadvornik@suse.cz>
Sat, 9 May 2009 19:45:24 +0000 (19:45 +0000)
src/filedata.c
src/filedata.h
src/layout_util.c
src/view_file.c
src/view_file_icon.c
src/view_file_list.c

index 8f0427d..48b8350 100644 (file)
@@ -670,6 +670,7 @@ FileData *file_data_disconnect_sidecar_file(FileData *target, FileData *sfd)
 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 @@ void file_data_disable_grouping(FileData *fd, gboolean disable)
                        {
                        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 @@ void file_data_disable_grouping(FileData *fd, gboolean disable)
                                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)
 {
index 00ec566..ff3c839 100644 (file)
@@ -43,6 +43,7 @@ gboolean file_data_add_change_info(FileData *fd, FileDataChangeType type, const
 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);
index 17c0623..fa2c2fd 100644 (file)
@@ -301,6 +301,20 @@ static void layout_menu_delete_cb(GtkAction *action, gpointer data)
        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 @@ static GtkActionEntry menu_entries[] = {
   { "Delete",          GTK_STOCK_DELETE,       N_("_Delete..."),                       "<control>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"),                    "<control>W",           N_("Close window"),                     CB(layout_menu_close_cb) },
   { "Quit",            GTK_STOCK_QUIT,         N_("_Quit"),                            "<control>Q",           N_("Quit"),                             CB(layout_menu_exit_cb) },
index 74a1cb6..a3dead5 100644 (file)
@@ -374,6 +374,20 @@ static void vf_pop_menu_copy_path_cb(GtkWidget *widget, gpointer data)
        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 @@ GtkWidget *vf_pop_menu(ViewFile *vf)
        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,
index 0718412..0ee7f9c 100644 (file)
@@ -2356,7 +2356,8 @@ static void vficon_cell_data_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer
                                }
                        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,
index 10be69b..4adda65 100644 (file)
@@ -799,7 +799,8 @@ static void vflist_setup_iter(ViewFile *vf, GtkTreeStore *store, GtkTreeIter *it
                }
        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);