Mercurial > geeqie
changeset 139:754c1e4349b6
display sidecar extensions in filelist
some cleanup of file marks
author | nadvornik |
---|---|
date | Wed, 12 Sep 2007 21:17:31 +0000 |
parents | 71e1ebee420e |
children | e57b0207e180 |
files | src/filelist.c src/filelist.h src/view_file_list.c |
diffstat | 3 files changed, 62 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/src/filelist.c Tue Sep 11 20:06:29 2007 +0000 +++ b/src/filelist.c Wed Sep 12 21:17:31 2007 +0000 @@ -679,7 +679,7 @@ target->sidecar_files = g_list_concat(target->sidecar_files, source->sidecar_files); source->sidecar_files = NULL; - file_data_free(source); + file_data_unref(source); return target; } @@ -786,6 +786,9 @@ if (fd) fd->change = NULL; } + + + /* *----------------------------------------------------------------------------- @@ -864,6 +867,24 @@ return 0; } +gchar *sidecar_file_data_list_to_string(FileData *fd) +{ + GList *work; + GString *result = g_string_new(""); + + work = fd->sidecar_files; + while (work) + { + SidecarFileData *sfd = work->data; + result = g_string_append(result, "+ "); + result = g_string_append(result, sfd->extension); + work = work->next; + if (work) result = g_string_append_c(result, ' '); + } + + return g_string_free(result, FALSE); +} + /* *----------------------------------------------------------------------------- * load file list
--- a/src/filelist.h Tue Sep 11 20:06:29 2007 +0000 +++ b/src/filelist.h Wed Sep 12 21:17:31 2007 +0000 @@ -63,6 +63,8 @@ FileDataChangeInfo *file_data_change_info_new(const gchar *src, const gchar *dest, FileData *fd); void file_data_change_info_free(FileDataChangeInfo *fdci, FileData *fd); +gchar *sidecar_file_data_list_to_string(FileData *fd); + gint filelist_sort_compare_filedata(FileData *fa, FileData *fb); GList *filelist_sort(GList *list, SortType method, gint ascend); GList *filelist_insert_sort(GList *list, FileData *fd, SortType method, gint ascend);
--- a/src/view_file_list.c Tue Sep 11 20:06:29 2007 +0000 +++ b/src/view_file_list.c Wed Sep 12 21:17:31 2007 +0000 @@ -35,10 +35,12 @@ FILE_COLUMN_POINTER = 0, FILE_COLUMN_THUMB, FILE_COLUMN_NAME, + FILE_COLUMN_SIDECARS, FILE_COLUMN_SIZE, FILE_COLUMN_DATE, FILE_COLUMN_COLOR, - FILE_COLUMN_MARKS, + FILE_COLUMN_MARKS, + FILE_COLUMN_MARKS_LAST = FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE - 1, FILE_COLUMN_COUNT }; @@ -839,21 +841,25 @@ { FileData *fd; gchar *size; - int i; - + gchar *sidecars; + int i; + fd = work->data; + sidecars = sidecar_file_data_list_to_string(fd); size = text_from_size(fd->size); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, FILE_COLUMN_POINTER, fd, FILE_COLUMN_THUMB, (vfl->thumbs_enabled) ? fd->pixbuf : NULL, FILE_COLUMN_NAME, fd->name, + FILE_COLUMN_SIDECARS, sidecars, FILE_COLUMN_SIZE, size, FILE_COLUMN_DATE, text_from_time(fd->date), FILE_COLUMN_COLOR, FALSE, -1); - for (i = 0; i < FILEDATA_MARKS_SIZE; i++) - gtk_list_store_set(store, &iter, FILE_COLUMN_MARKS + i, fd->marks[i], -1); + for (i = 0; i < FILEDATA_MARKS_SIZE; i++) + gtk_list_store_set(store, &iter, FILE_COLUMN_MARKS + i, fd->marks[i], -1); - g_free(size); + g_free(size); + g_free(sidecars); if (select_list && select_list->data == fd) { @@ -1406,8 +1412,11 @@ { GtkTreeIter new; gchar *size; + gchar *sidecars; size = text_from_size(fd->size); + sidecars = sidecar_file_data_list_to_string(fd); + if (valid) { gtk_list_store_insert_before(store, &new, &iter); @@ -1419,13 +1428,15 @@ gtk_list_store_set(store, &new, FILE_COLUMN_POINTER, fd, FILE_COLUMN_THUMB, (thumbs) ? fd->pixbuf : NULL, FILE_COLUMN_NAME, fd->name, + FILE_COLUMN_SIDECARS, sidecars, FILE_COLUMN_SIZE, size, FILE_COLUMN_DATE, text_from_time(fd->date), FILE_COLUMN_COLOR, FALSE, -1); - for (i = 0; i < FILEDATA_MARKS_SIZE; i++) - gtk_list_store_set(store, &new, FILE_COLUMN_MARKS + i, fd->marks[i], -1); + for (i = 0; i < FILEDATA_MARKS_SIZE; i++) + gtk_list_store_set(store, &new, FILE_COLUMN_MARKS + i, fd->marks[i], -1); - g_free(size); + g_free(size); + g_free(sidecars); done = TRUE; } @@ -1717,20 +1728,21 @@ g_signal_connect(G_OBJECT(vfl->widget), "destroy", G_CALLBACK(vflist_destroy_cb), vfl); - flist_types = g_new(GType, FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE); - flist_types[0] = G_TYPE_POINTER; - flist_types[1] = GDK_TYPE_PIXBUF; - flist_types[2] = G_TYPE_STRING; - flist_types[3] = G_TYPE_STRING; - flist_types[4] = G_TYPE_STRING; - flist_types[5] = G_TYPE_BOOLEAN; - for (i = FILE_COLUMN_MARKS; i < FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE; i++) - flist_types[i] = G_TYPE_BOOLEAN; + flist_types = g_new(GType, FILE_COLUMN_COUNT); + flist_types[FILE_COLUMN_POINTER] = G_TYPE_POINTER; + flist_types[FILE_COLUMN_THUMB] = GDK_TYPE_PIXBUF; + flist_types[FILE_COLUMN_NAME] = G_TYPE_STRING; + flist_types[FILE_COLUMN_SIDECARS] = G_TYPE_STRING; + flist_types[FILE_COLUMN_SIZE] = G_TYPE_STRING; + flist_types[FILE_COLUMN_DATE] = G_TYPE_STRING; + flist_types[FILE_COLUMN_COLOR] = G_TYPE_BOOLEAN; + for (i = FILE_COLUMN_MARKS; i < FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE; i++) + flist_types[i] = G_TYPE_BOOLEAN; - store = gtk_list_store_newv(FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE, flist_types); - g_free(flist_types); + store = gtk_list_store_newv(FILE_COLUMN_COUNT, flist_types); + g_free(flist_types); - vfl->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); + vfl->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); g_object_unref(store); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vfl->listview)); @@ -1742,13 +1754,15 @@ vflist_listview_add_column(vfl, FILE_COLUMN_THUMB, "", TRUE, FALSE, FALSE); vflist_listview_add_column(vfl, FILE_COLUMN_NAME, _("Name"), FALSE, FALSE, FALSE); + vflist_listview_add_column(vfl, FILE_COLUMN_SIDECARS, _("sidecars"), FALSE, FALSE, FALSE); vflist_listview_add_column(vfl, FILE_COLUMN_SIZE, _("Size"), FALSE, TRUE, FALSE); vflist_listview_add_column(vfl, FILE_COLUMN_DATE, _("Date"), FALSE, TRUE, TRUE); - for(i = 0; i < FILEDATA_MARKS_SIZE;i++) - vflist_listview_add_column_toggle(vfl, i + FILE_COLUMN_MARKS, ""); + for(i = 0; i < FILEDATA_MARKS_SIZE;i++) + vflist_listview_add_column_toggle(vfl, i + FILE_COLUMN_MARKS, ""); + - g_signal_connect(G_OBJECT(vfl->listview), "key_press_event", + g_signal_connect(G_OBJECT(vfl->listview), "key_press_event", G_CALLBACK(vflist_press_key_cb), vfl); gtk_container_add (GTK_CONTAINER(vfl->widget), vfl->listview);