void file_data_disable_grouping(FileData *fd, gboolean disable)
{
if (!fd->disable_grouping == !disable) return;
+
fd->disable_grouping = !!disable;
if (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);
}
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)
{
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);
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;
{ "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) },
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;
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,
}
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,
}
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);