annotate src/view_file_list.c @ 1254:3814f5828376

adjusted marks spacing to align them with the marks filter
author nadvornik
date Sat, 24 Jan 2009 13:46:08 +0000
parents 187e6096cc6c
children de24174d9e55
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1 /*
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 169
diff changeset
2 * Geeqie
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3 * (C) 2004 John Ellis
475
48c8e49b571c updated copyright in source files
nadvornik
parents: 448
diff changeset
4 * Copyright (C) 2008 The Geeqie Team
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12
281
9995c5fb202a gqview.h -> main.h
zas_
parents: 259
diff changeset
13 #include "main.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14 #include "view_file_list.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
16 #include "bar_info.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
17 #include "cache_maint.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "dnd.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include "editors.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
20 #include "img-view.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
21 #include "info.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
23 #include "layout_image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
24 #include "menu.h"
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
25 #include "metadata.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 #include "thumb.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 #include "utilops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
28 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29 #include "ui_menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
30 #include "ui_tree_edit.h"
904
1698baa37871 Move uri_*() functions to separate files: uri_utils.[ch]
zas_
parents: 852
diff changeset
31 #include "uri_utils.h"
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
32 #include "view_file.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
33
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
34 #include <gdk/gdkkeysyms.h> /* for keyboard values */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
35
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
36 /* Index to tree store */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
37 enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38 FILE_COLUMN_POINTER = 0,
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
39 FILE_COLUMN_VERSION,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
40 FILE_COLUMN_THUMB,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 FILE_COLUMN_NAME,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
42 FILE_COLUMN_MULTILINE,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
43 FILE_COLUMN_SIZE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44 FILE_COLUMN_DATE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 FILE_COLUMN_COLOR,
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
46 FILE_COLUMN_MARKS,
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
47 FILE_COLUMN_MARKS_LAST = FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE - 1,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
48 FILE_COLUMN_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
49 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
50
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
51
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
52 /* Index to tree view */
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
53 enum {
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
54 FILE_VIEW_COLUMN_MARKS = 0,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
55 FILE_VIEW_COLUMN_MARKS_LAST = FILE_VIEW_COLUMN_MARKS + FILEDATA_MARKS_SIZE - 1,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
56 FILE_VIEW_COLUMN_THUMB,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
57 FILE_VIEW_COLUMN_MULTILINE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
58 FILE_VIEW_COLUMN_NAME,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
59 FILE_VIEW_COLUMN_SIZE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
60 FILE_VIEW_COLUMN_DATE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
61 FILE_VIEW_COLUMN_COUNT
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
62 };
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
63
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
64
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
65
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
66 static gint vflist_row_is_selected(ViewFile *vf, FileData *fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
67 static gint vflist_row_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
68 static void vflist_populate_view(ViewFile *vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
69
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
70
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
71 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
72 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
73 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
74 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75 */
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
76 typedef struct {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
77 FileData *fd;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
78 GtkTreeIter *iter;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
79 gint found;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
80 gint row;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
81 } ViewFileFindRowData;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
82
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
83 static gboolean vflist_find_row_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
84 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
85 ViewFileFindRowData *find = data;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
86 FileData *fd;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
87 gtk_tree_model_get(model, iter, FILE_COLUMN_POINTER, &fd, -1);
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
88 if (fd == find->fd)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
89 {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
90 *find->iter = *iter;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
91 find->found = 1;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
92 return TRUE;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
93 }
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
94 find->row++;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
95 return FALSE;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
96 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
98 static gint vflist_find_row(ViewFile *vf, FileData *fd, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100 GtkTreeModel *store;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
101 ViewFileFindRowData data = {fd, iter, 0, 0};
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
102
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
103 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
104 gtk_tree_model_foreach(store, vflist_find_row_cb, &data);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
105
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
106 if (data.found)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107 {
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
108 return data.row;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
111 return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
112 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
113
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
114 static FileData *vflist_find_data_by_coord(ViewFile *vf, gint x, gint y, GtkTreeIter *iter)
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
115 {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
116 GtkTreePath *tpath;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
117 GtkTreeViewColumn *column;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
118
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
119 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), x, y,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
120 &tpath, &column, NULL, NULL))
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
121 {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
122 GtkTreeModel *store;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
123 GtkTreeIter row;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
124 FileData *fd;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
125
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
126 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
127 gtk_tree_model_get_iter(store, &row, tpath);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
128 gtk_tree_path_free(tpath);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
129 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &fd, -1);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
130
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
131 return fd;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
132 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
133
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
134 return NULL;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
135 }
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
136
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 995
diff changeset
137 #if 0
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
138 static gint vflist_find_sidecar_list_idx(GList *work, FileData *fd)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
139 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
140 gint i = 0;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
141 while (work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
142 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
143 FileData *fd_p = work->data;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
144 if (fd == fd_p) return i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
145
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
146 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
147
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
148 GList *work2 = fd_p->sidecar_files;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
149 while (work2)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
150 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
151 fd_p = work2->data;
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
152 if (fd == fd_p) return i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
153
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
154 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
155 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
156 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
157 work = work->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
158 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
159 return -1;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
160 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
161
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
162 static gint vflist_sidecar_list_count(GList *work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
163 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
164 gint i = 0;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
165 while (work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
166 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
167 FileData *fd = work->data;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
168 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
170 GList *work2 = fd->sidecar_files;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
171 while (work2)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
172 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
173 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
174 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
175 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
176 work = work->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
177 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
178 return i;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
179 }
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 995
diff changeset
180 #endif
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
181
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
182 static gboolean vflist_store_clear_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
183 {
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
184 FileData *fd;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
185 gtk_tree_model_get(model, iter, FILE_COLUMN_POINTER, &fd, -1);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
186 file_data_unref(fd);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
187 return FALSE;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
188 }
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
189
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
190 static void vflist_store_clear(ViewFile *vf)
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
191 {
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
192 GtkTreeModel *store;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
193 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
194 gtk_tree_model_foreach(store, vflist_store_clear_cb, NULL);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
195 gtk_tree_store_clear(GTK_TREE_STORE(store));
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
196 }
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
197
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
198 void vflist_color_set(ViewFile *vf, FileData *fd, gint color_set)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
199 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
200 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
201 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
203 if (vflist_find_row(vf, fd, &iter) < 0) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
204 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
205 gtk_tree_store_set(GTK_TREE_STORE(store), &iter, FILE_COLUMN_COLOR, color_set, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
206 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
207
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
208 static void vflist_move_cursor(ViewFile *vf, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
210 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
213 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
214
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
215 tpath = gtk_tree_model_get_path(store, iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
216 gtk_tree_view_set_cursor(GTK_TREE_VIEW(vf->listview), tpath, NULL, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
217 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
218 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
219
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
220
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
221 static gint vflist_column_idx(ViewFile *vf, gint store_idx)
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
222 {
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
223 GList *columns, *work;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
224 gint i = 0;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
225
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
226 columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(vf->listview));
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
227 work = columns;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
228 while (work)
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
229 {
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
230 GtkTreeViewColumn *column = work->data;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
231 if (store_idx == GPOINTER_TO_INT(g_object_get_data (G_OBJECT(column), "column_store_idx")))
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
232 break;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
233 work = work->next;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
234 i++;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
235 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
236
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
237 g_list_free(columns);
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
238 return i;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
239 }
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
240
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
241
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
242 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244 * dnd
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
248 static void vflist_dnd_get(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
249 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
252 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 gchar *uri_text = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
257 if (!VFLIST(vf)->click_fd) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
258
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
259 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
261 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
263 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
265 list = g_list_append(NULL, file_data_ref(VFLIST(vf)->click_fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
266 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
267
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
268 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
270 uri_text = uri_text_from_filelist(list, &total, (info == TARGET_TEXT_PLAIN));
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
271 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
272
1164
3692efcbd325 Fix compilation warnings.
zas_
parents: 1055
diff changeset
273 DEBUG_1("%s", uri_text);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274
64
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
275 gtk_selection_data_set(selection_data, selection_data->target,
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
276 8, (guchar *)uri_text, total);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
277 g_free(uri_text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
280 static void vflist_dnd_begin(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
282 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
283
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
284 vflist_color_set(vf, VFLIST(vf)->click_fd, TRUE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
285
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
286 if (VFLIST(vf)->thumbs_enabled &&
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
287 VFLIST(vf)->click_fd && VFLIST(vf)->click_fd->thumb_pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
288 {
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
289 guint items;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
291 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
292 items = vf_selection_count(vf, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294 items = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
296 dnd_set_drag_icon(widget, context, VFLIST(vf)->click_fd->thumb_pixbuf, items);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
298 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
299
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
300 static void vflist_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
302 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
303
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
304 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
305
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306 if (context->action == GDK_ACTION_MOVE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
308 vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
309 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
310 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
311
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
312 static void vflist_drag_data_received(GtkWidget *entry_widget, GdkDragContext *context,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
313 int x, int y, GtkSelectionData *selection,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
314 guint info, guint time, gpointer data)
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
315 {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
316 ViewFile *vf = data;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
317
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
318 if (info == TARGET_TEXT_PLAIN) {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
319 FileData *fd = vflist_find_data_by_coord(vf, x, y, NULL);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
320
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
321 if (fd) {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
322 /* Add keywords to file */
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
323 gchar *str = g_strndup(selection->data, selection->length);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
324 GList *kw_list = string_to_keywords_list(str);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
325
1238
947e603a52c6 simplified metadata interface, dropped metadata_read,
nadvornik
parents: 1233
diff changeset
326 metadata_append_list(fd, KEYWORD_KEY, kw_list);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
327 string_list_free(kw_list);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
328 g_free(str);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
329 if (vf->layout && vf->layout->bar_info) {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
330 bar_info_set(vf->layout->bar_info, fd);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
331 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
332 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
333 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
334 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
335
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
336 void vflist_dnd_init(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
337 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
338 gtk_drag_source_set(vf->listview, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
339 dnd_file_drag_types, dnd_file_drag_types_count,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
340 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
341 gtk_drag_dest_set(vf->listview, GTK_DEST_DEFAULT_ALL,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
342 dnd_file_drag_types, dnd_file_drag_types_count,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
343 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
344
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
345 g_signal_connect(G_OBJECT(vf->listview), "drag_data_get",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
346 G_CALLBACK(vflist_dnd_get), vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
347 g_signal_connect(G_OBJECT(vf->listview), "drag_begin",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
348 G_CALLBACK(vflist_dnd_begin), vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
349 g_signal_connect(G_OBJECT(vf->listview), "drag_end",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
350 G_CALLBACK(vflist_dnd_end), vf);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
351 g_signal_connect(G_OBJECT(vf->listview), "drag_data_received",
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
352 G_CALLBACK(vflist_drag_data_received), vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
353 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
354
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
356 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
357 * pop-up menu
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
360
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
361 GList *vflist_pop_menu_file_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
363 if (!VFLIST(vf)->click_fd) return NULL;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
364
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
365 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
366 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
367 return vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
368 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
369
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
370 return g_list_append(NULL, file_data_ref(VFLIST(vf)->click_fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
371 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
372
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
373 void vflist_pop_menu_view_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
374 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
375 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
376
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
377 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
378 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
379 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
380
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
381 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
382 view_window_new_from_list(list);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
383 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
384 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
385 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
387 view_window_new(VFLIST(vf)->click_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
388 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
391 void vflist_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
392 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
393 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
394 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
395
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
396 list = vf_pop_menu_file_list(vf);
341
15c6b94545a2 Move safe_delete* and in place rename options to file_ops
zas_
parents: 334
diff changeset
397 if (options->file_ops.enable_in_place_rename &&
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
398 list && !list->next && VFLIST(vf)->click_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
401 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
403 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
404
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
405 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
406 if (vflist_find_row(vf, VFLIST(vf)->click_fd, &iter) >= 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
407 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
409
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
410 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
411 tree_edit_by_path(GTK_TREE_VIEW(vf->listview), tpath,
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
412 vflist_column_idx(vf, FILE_COLUMN_NAME), VFLIST(vf)->click_fd->name,
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
413 vflist_row_rename_cb, vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
414 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
415 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
416 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
417 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
418
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
419 file_util_rename(NULL, list, vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
420 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
421
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
422 void vflist_pop_menu_thumbs_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
423 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
424 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
425
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
426 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
427 if (vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
428 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
429 layout_thumb_set(vf->layout, !VFLIST(vf)->thumbs_enabled);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
430 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
431 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
433 vflist_thumb_set(vf, !VFLIST(vf)->thumbs_enabled);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
434 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
435 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
436
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
437 void vflist_pop_menu_refresh_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
438 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
439 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
440
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
441 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
442 vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
443 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
445 void vflist_popup_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
446 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
447 ViewFile *vf = data;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
448 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
449 VFLIST(vf)->click_fd = NULL;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
450 vf->popup = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
451 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
452
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
453
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
455 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
456 * callbacks
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
457 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
459
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460 static gint vflist_row_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
462 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
463 gchar *old_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
464 gchar *new_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
465
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
466 if (strlen(new) == 0) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
467
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
468 old_path = g_build_filename(vf->dir_fd->path, old, NULL);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
469 new_path = g_build_filename(vf->dir_fd->path, new, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470
726
a1dcef8cd1ae Use G_DIR_SEPARATOR where applicable.
zas_
parents: 702
diff changeset
471 if (strchr(new, G_DIR_SEPARATOR) != NULL)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
472 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
473 gchar *text = g_strdup_printf(_("Invalid file name:\n%s"), new);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
474 file_util_warning_dialog(_("Error renaming file"), text, GTK_STOCK_DIALOG_ERROR, vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
477 else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
478 {
850
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
479 FileData *fd = file_data_new_simple(old_path); /* get the fd from cache */
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
480 file_util_rename_simple(fd, new_path, vf->listview);
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
481 file_data_unref(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
483 g_free(old_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484 g_free(new_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
489 static void vflist_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
490 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
491 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
492 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
494 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
495 gint cw, ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
496
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
497 if (vflist_find_row(vf, VFLIST(vf)->click_fd, &iter) < 0) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
498 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
500 tree_view_get_cell_clamped(GTK_TREE_VIEW(vf->listview), tpath, FILE_COLUMN_NAME - 1, TRUE, x, y, &cw, &ch);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
501 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
502 *y += ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503 popup_menu_position_clamp(menu, x, y, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
504 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
505
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
506 gint vflist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
508 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
510
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 if (event->keyval != GDK_Menu) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
512
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
513 gtk_tree_view_get_cursor(GTK_TREE_VIEW(vf->listview), &tpath, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
514 if (tpath)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
515 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
516 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
519 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
520 gtk_tree_model_get_iter(store, &iter, tpath);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
521 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &VFLIST(vf)->click_fd, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
522 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
525 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
526 VFLIST(vf)->click_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
529 vf->popup = vf_pop_menu(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
530 gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, vflist_menu_position_cb, vf, 0, GDK_CURRENT_TIME);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
531
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
532 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
534
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
535 gint vflist_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
537 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
538 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
539 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540 FileData *fd = NULL;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
541 GtkTreeViewColumn *column;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
542
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
543 vf->clicked_mark = 0;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
544
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
545 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
546 &tpath, &column, NULL, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
547 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
548 GtkTreeModel *store;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
549 gint col_idx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_store_idx"));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
550
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
551 if (bevent->button == MOUSE_BUTTON_LEFT &&
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
552 col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST)
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
553 return FALSE;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
554
655
beacc4c68c53 Fix last patch, only set vf->clicked_mark for a valid mark.
zas_
parents: 654
diff changeset
555 if (col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST)
beacc4c68c53 Fix last patch, only set vf->clicked_mark for a valid mark.
zas_
parents: 654
diff changeset
556 vf->clicked_mark = 1 + (col_idx - FILE_COLUMN_MARKS);
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
557
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
558 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
559
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
560 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
561 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
562 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
563 gtk_tree_view_set_cursor(GTK_TREE_VIEW(widget), tpath, NULL, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
564 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
567
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
568 VFLIST(vf)->click_fd = fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
570 if (bevent->button == MOUSE_BUTTON_RIGHT)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
571 {
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
572 vf->popup = vf_pop_menu(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
573 gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, NULL, NULL,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
574 bevent->button, bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
575 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
576 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
578 if (!fd) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
580 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
581 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
582 if (!vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
583 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
584 vflist_color_set(vf, fd, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
586 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
587 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
588
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
590 if (bevent->button == MOUSE_BUTTON_LEFT && bevent->type == GDK_BUTTON_PRESS &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
591 !(bevent->state & GDK_SHIFT_MASK ) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
592 !(bevent->state & GDK_CONTROL_MASK ) &&
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
593 vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
594 {
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
595 GtkTreeSelection *selection;
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
596
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
597 gtk_widget_grab_focus(widget);
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
598
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
599
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
600 /* returning FALSE and further processing of the event is needed for
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
601 correct operation of the expander, to show the sidecar files.
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
602 It however resets the selection of multiple files. With this condition
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
603 it should work for both cases */
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
604 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
605 return (gtk_tree_selection_count_selected_rows(selection) > 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
606 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
607
1206
d79305a42a9b Switch to fullscreen when double clicking on file in icon or list view. Feature request 1966042. The code was there since a long time but disabled, please report any issue.
zas_
parents: 1202
diff changeset
608 #if 1
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
609 if (bevent->button == MOUSE_BUTTON_LEFT && bevent->type == GDK_2BUTTON_PRESS)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
611 if (vf->layout) layout_image_full_screen_start(vf->layout);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
613 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
614
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
615 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
617
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
618 gint vflist_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
619 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
620 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
621 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
622 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
623 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
624
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
625 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
627 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
629
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
630 if (bevent->button != MOUSE_BUTTON_LEFT && bevent->button != MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
631 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635 if ((bevent->x != 0 || bevent->y != 0) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637 &tpath, NULL, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
639 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
640
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
647 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
648 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
649 if (fd && VFLIST(vf)->click_fd == fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
650 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
652
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
653 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
654 if (vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 gtk_tree_selection_unselect_iter(selection, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
658 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
659 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 gtk_tree_selection_select_iter(selection, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
661 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
663 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
664 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
666 if (fd && VFLIST(vf)->click_fd == fd &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 !(bevent->state & GDK_SHIFT_MASK ) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
668 !(bevent->state & GDK_CONTROL_MASK ) &&
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
669 vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
670 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
671 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
674 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
675 gtk_tree_selection_select_iter(selection, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
676 vflist_move_cursor(vf, &iter);
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
677 // return TRUE;// FIXME - expand
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
678 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
680 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
681 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
682
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
683 static void vflist_select_image(ViewFile *vf, FileData *sel_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
685 FileData *read_ahead_fd = NULL;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
686 gint row;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 143
diff changeset
687 FileData *cur_fd;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
688 if (!sel_fd) return;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
689
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
690 cur_fd = layout_image_get_fd(vf->layout);
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 143
diff changeset
691 if (sel_fd == cur_fd) return; /* no change */
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
692
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
693 row = g_list_index(vf->list, sel_fd);
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
694 // FIXME sidecar data
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695
334
df868b947aa0 Rename image-related options.
zas_
parents: 333
diff changeset
696 if (sel_fd && options->image.enable_read_ahead && row >= 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
698 if (row > g_list_index(vf->list, cur_fd) &&
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
699 (guint) (row + 1) < vf_count(vf, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
701 read_ahead_fd = vf_index_get_data(vf, row + 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
703 else if (row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
705 read_ahead_fd = vf_index_get_data(vf, row - 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
708
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
709 layout_image_set_with_ahead(vf->layout, sel_fd, read_ahead_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
712 static gint vflist_select_idle_cb(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
713 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
714 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
715
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
716 if (!vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
718 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
719 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
720 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
722 vf_send_update(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
723
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
724 if (VFLIST(vf)->select_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
725 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
726 vflist_select_image(vf, VFLIST(vf)->select_fd);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
727 VFLIST(vf)->select_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
728 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
729
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
730 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
732 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
734 static void vflist_select_idle_cancel(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
735 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
736 if (VFLIST(vf)->select_idle_id != -1) g_source_remove(VFLIST(vf)->select_idle_id);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
737 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
738 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
740 static gboolean vflist_select_cb(GtkTreeSelection *selection, GtkTreeModel *store, GtkTreePath *tpath,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
741 gboolean path_currently_selected, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
742 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
743 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
745
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746 if (!path_currently_selected &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
747 gtk_tree_model_get_iter(store, &iter, tpath))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
748 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
749 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &VFLIST(vf)->select_fd, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
750 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
751 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
752 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
753 VFLIST(vf)->select_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
754 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
756 if (vf->layout &&
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
757 VFLIST(vf)->select_idle_id == -1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
758 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
759 VFLIST(vf)->select_idle_id = g_idle_add(vflist_select_idle_cb, vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
760 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
761
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
762 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
763 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
764
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
765 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
766 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
767 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
768 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
769 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
770
259
fa7d69e7d02d Comment out unused code.
zas_
parents: 250
diff changeset
771 /*
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
772 static gboolean vflist_dummy_select_cb(GtkTreeSelection *selection, GtkTreeModel *store, GtkTreePath *tpath,
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
773 gboolean path_currently_selected, gpointer data)
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
774 {
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
775 return TRUE;
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
776 }
259
fa7d69e7d02d Comment out unused code.
zas_
parents: 250
diff changeset
777 */
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
778
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
779 static void vflist_setup_iter(ViewFile *vf, GtkTreeStore *store, GtkTreeIter *iter, FileData *fd)
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
780 {
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
781 gchar *size;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
782 gchar *sidecars = NULL;
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
783 gchar *name_sidecars;
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
784 gchar *multiline;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
785 const gchar *time = text_from_time(fd->date);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
786 gchar *link = islink(fd->path) ? GQ_LINK_STR : "";
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
787
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
788
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
789 if (fd->sidecar_files)
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
790 {
596
f8c93e1d728d use some of the new functions in filedata.c
nadvornik
parents: 578
diff changeset
791 sidecars = file_data_sc_list_to_string(fd);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
792 name_sidecars = g_strdup_printf("%s%s %s", link, fd->name, sidecars);
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
793 }
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
794 else
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
795 {
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
796 name_sidecars = g_strdup_printf("%s%s", link, fd->name);
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
797 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
798 size = text_from_size(fd->size);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
799
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
800 multiline = g_strdup_printf("%s\n%s\n%s", name_sidecars, size, time);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
801
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
802 gtk_tree_store_set(store, iter, FILE_COLUMN_POINTER, fd,
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
803 FILE_COLUMN_VERSION, fd->version,
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
804 FILE_COLUMN_THUMB, fd->thumb_pixbuf,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
805 FILE_COLUMN_MULTILINE, multiline,
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
806 FILE_COLUMN_NAME, name_sidecars,
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
807 FILE_COLUMN_SIZE, size,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
808 FILE_COLUMN_DATE, time,
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
809 #define STORE_SET_IS_SLOW 1
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
810 #if STORE_SET_IS_SLOW
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
811 /* this is 3x faster on a directory with 20000 files */
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
812 FILE_COLUMN_MARKS + 0, file_data_get_mark(fd, 0),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
813 FILE_COLUMN_MARKS + 1, file_data_get_mark(fd, 1),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
814 FILE_COLUMN_MARKS + 2, file_data_get_mark(fd, 2),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
815 FILE_COLUMN_MARKS + 3, file_data_get_mark(fd, 3),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
816 FILE_COLUMN_MARKS + 4, file_data_get_mark(fd, 4),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
817 FILE_COLUMN_MARKS + 5, file_data_get_mark(fd, 5),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
818 #if FILEDATA_MARKS_SIZE != 6
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
819 #error this needs to be updated
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
820 #endif
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
821 #endif
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
822 FILE_COLUMN_COLOR, FALSE, -1);
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
823
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
824 #if !STORE_SET_IS_SLOW
830
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
825 {
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
826 gint i;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
827 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
828 gtk_tree_store_set(store, iter, FILE_COLUMN_MARKS + i, file_data_get_mark(fd, i), -1);
830
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
829 }
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
830 #endif
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
831 g_free(size);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
832 g_free(sidecars);
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
833 g_free(name_sidecars);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
834 g_free(multiline);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
835 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
836
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
837 static void vflist_setup_iter_recursive(ViewFile *vf, GtkTreeStore *store, GtkTreeIter *parent_iter, GList *list, GList *selected)
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
838 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
839 GList *work;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
840 GtkTreeIter iter;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
841 gint valid;
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
842 gint num_ordered = 0;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
843 gint num_prepended = 0;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
844
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
845 valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(store), &iter, parent_iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
846
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
847 work = list;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
848 while (work)
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
849 {
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
850 gint match;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
851 FileData *fd = work->data;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
852 gint done = FALSE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
853
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
854 while (!done)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
855 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
856 FileData *old_fd = NULL;
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
857 gint old_version = 0;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
858
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
859 if (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
860 {
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
861 num_ordered++;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
862 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
863 FILE_COLUMN_POINTER, &old_fd,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
864 FILE_COLUMN_VERSION, &old_version,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
865 -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
866
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
867 if (fd == old_fd)
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
868 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
869 match = 0;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
870 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
871 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
872 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
873 if (parent_iter)
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
874 match = filelist_sort_compare_filedata_full(fd, old_fd, SORT_NAME, TRUE); /* always sort sidecars by name */
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
875 else
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
876 match = filelist_sort_compare_filedata_full(fd, old_fd, vf->sort_method, vf->sort_ascend);
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
877
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
878 if (match == 0) g_warning("multiple fd for the same path");
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
879 }
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
880
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
881 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
882 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
883 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
884 match = -1;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
885 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
886
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
887 if (match < 0)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
888 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
889 GtkTreeIter new;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
890
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
891 if (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
892 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
893 gtk_tree_store_insert_before(store, &new, parent_iter, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
894 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
895 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
896 {
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
897 /*
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
898 here should be used gtk_tree_store_append, but this function seems to be O(n)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
899 and it seems to be much faster to add new entries to the beginning and reorder later
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
900 */
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
901 num_prepended++;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
902 gtk_tree_store_prepend(store, &new, parent_iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
903 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
904
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
905 vflist_setup_iter(vf, store, &new, file_data_ref(fd));
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
906 vflist_setup_iter_recursive(vf, store, &new, fd->sidecar_files, selected);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
907
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
908 if (g_list_find(selected, fd))
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
909 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
910 /* renamed files - the same fd appears at different position - select it again*/
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
911 GtkTreeSelection *selection;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
912 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
913 gtk_tree_selection_select_iter(selection, &new);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
914 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
915
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
916 done = TRUE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
917 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
918 else if (match > 0)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
919 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
920 file_data_unref(old_fd);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
921 valid = gtk_tree_store_remove(store, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
922 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
923 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
924 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
925 if (fd->version != old_version)
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
926 {
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
927 vflist_setup_iter(vf, store, &iter, fd);
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
928 vflist_setup_iter_recursive(vf, store, &iter, fd->sidecar_files, selected);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
929 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
930
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
931 if (valid) valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
932
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
933 done = TRUE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
934 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
935 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
936 work = work->next;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
937 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
938
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
939 while (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
940 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
941 FileData *old_fd;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
942 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &old_fd, -1);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
943 file_data_unref(old_fd);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
944
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
945 valid = gtk_tree_store_remove(store, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
946 }
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
947
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
948 /* move the prepended entries to the correct position */
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
949 if (num_prepended)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
950 {
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
951 gint i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
952 gint num_total = num_prepended + num_ordered;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
953 gint *new_order = g_malloc(num_total * sizeof(gint));
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
954
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
955 for (i = 0; i < num_total; i++)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
956 {
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
957 if (i < num_ordered)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
958 new_order[i] = num_prepended + i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
959 else
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
960 new_order[i] = num_total - 1 - i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
961 }
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
962 gtk_tree_store_reorder(store, parent_iter, new_order);
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
963
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
964 g_free(new_order);
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
965 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
966 }
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
967
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
968 void vflist_sort_set(ViewFile *vf, SortType type, gint ascend)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
969 {
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
970 gint i;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
971 GHashTable *fd_idx_hash = g_hash_table_new(NULL, NULL);
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
972 gint *new_order;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
973 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
974 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
975
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
976 if (vf->sort_method == type && vf->sort_ascend == ascend) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
977 if (!vf->list) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
978
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
979 work = vf->list;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
980 i = 0;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
981 while (work)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
982 {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
983 FileData *fd = work->data;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
984 g_hash_table_insert(fd_idx_hash, fd, GINT_TO_POINTER(i));
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
985 i++;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
986 work = work->next;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
987 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
988
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
989 vf->sort_method = type;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
990 vf->sort_ascend = ascend;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
991
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
992 vf->list = filelist_sort(vf->list, vf->sort_method, vf->sort_ascend);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
993
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
994 new_order = g_malloc(i * sizeof(gint));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
995
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
996 work = vf->list;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
997 i = 0;
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
998 while (work)
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
999 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1000 FileData *fd = work->data;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1001 new_order[i] = GPOINTER_TO_INT(g_hash_table_lookup(fd_idx_hash, fd));
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1002 i++;
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1003 work = work->next;
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1004 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1005
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1006 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1007 gtk_tree_store_reorder(store, NULL, new_order);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1008
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1009 g_free(new_order);
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1010 g_hash_table_destroy(fd_idx_hash);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1011 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1012
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1013 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1014 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1015 * thumb updates
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1016 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1017 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1018
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1019 static gint vflist_thumb_next(ViewFile *vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1020
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1021 static void vflist_thumb_progress_count(GList *list, gint *count, gint *done)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1022 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1023 GList *work = list;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1024 while (work)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1025 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1026 FileData *fd = work->data;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1027 work = work->next;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1028
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1029 if (fd->thumb_pixbuf) (*done)++;
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1030
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1031 if (fd->sidecar_files)
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1032 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1033 vflist_thumb_progress_count(fd->sidecar_files, count, done);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1034 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1035 (*count)++;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1036 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1037 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1038
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1039 static gdouble vflist_thumb_progress(ViewFile *vf)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1040 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1041 gint count = 0;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1042 gint done = 0;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1043
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1044 vflist_thumb_progress_count(vf->list, &count, &done);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1045
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1046 DEBUG_1("thumb progress: %d of %d", done, count);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1047 return (gdouble)done / count;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1048 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1049
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1050
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1051 static void vflist_thumb_status(ViewFile *vf, gdouble val, const gchar *text)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1052 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1053 if (vf->func_thumb_status)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1054 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1055 vf->func_thumb_status(vf, val, text, vf->data_thumb_status);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1056 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1057 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1058
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1059 static void vflist_thumb_cleanup(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1060 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1061 vflist_thumb_status(vf, 0.0, NULL);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1062
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1063 vf->thumbs_running = FALSE;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1064
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1065 thumb_loader_free(vf->thumbs_loader);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1066 vf->thumbs_loader = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1067
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1068 vf->thumbs_filedata = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1069 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1070
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1071 static void vflist_thumb_stop(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1072 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1073 if (vf->thumbs_running) vflist_thumb_cleanup(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1074 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1075
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1076 static void vflist_thumb_do(ViewFile *vf, ThumbLoader *tl, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1077 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1078 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1079 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1080
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1081 if (!fd || vflist_find_row(vf, fd, &iter) < 0) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1082
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1083 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1084 gtk_tree_store_set(store, &iter, FILE_COLUMN_THUMB, fd->thumb_pixbuf, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1085
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1086 vflist_thumb_status(vf, vflist_thumb_progress(vf), _("Loading thumbs..."));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1087 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1088
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1089 static void vflist_thumb_error_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1090 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1091 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1092
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1093 if (vf->thumbs_filedata && vf->thumbs_loader == tl)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1095 vflist_thumb_do(vf, tl, vf->thumbs_filedata);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1096 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1097
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1098 while (vflist_thumb_next(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1099 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101 static void vflist_thumb_done_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1102 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1103 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1104
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1105 if (vf->thumbs_filedata && vf->thumbs_loader == tl)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1107 vflist_thumb_do(vf, tl, vf->thumbs_filedata);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1108 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1109
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1110 while (vflist_thumb_next(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1112
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1113 static gint vflist_thumb_next(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1114 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1115 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1117
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118 /* first check the visible files */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1120 if (GTK_WIDGET_REALIZED(vf->listview) &&
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1121 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), 0, 0, &tpath, NULL, NULL, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1124 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1125 gint valid = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1126
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1127 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1129 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1130
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1131 while (!fd && valid && tree_view_row_get_visibility(GTK_TREE_VIEW(vf->listview), &iter, FALSE) == 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1132 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1134 if (fd->thumb_pixbuf) fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1135
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1137 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1138 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1140 /* then find first undone */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1141
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1142 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1143 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1144 GList *work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1145 while (work && !fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1146 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1147 FileData *fd_p = work->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1148 if (!fd_p->thumb_pixbuf)
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1149 fd = fd_p;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1150 else
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1151 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1152 GList *work2 = fd_p->sidecar_files;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1153
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1154 while (work2 && !fd)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1155 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1156 fd_p = work2->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1157 if (!fd_p->thumb_pixbuf) fd = fd_p;
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1158 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1159 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1160 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1161 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1167 /* done */
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1168 vflist_thumb_cleanup(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1170 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1171
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1172 vf->thumbs_filedata = fd;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1173
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1174 thumb_loader_free(vf->thumbs_loader);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1175
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1176 vf->thumbs_loader = thumb_loader_new(options->thumbnails.max_width, options->thumbnails.max_height);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1177 thumb_loader_set_callbacks(vf->thumbs_loader,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178 vflist_thumb_done_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1179 vflist_thumb_error_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1180 NULL,
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1181 vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1182
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 835
diff changeset
1183 if (!thumb_loader_start(vf->thumbs_loader, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 /* set icon to unknown, continue */
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 835
diff changeset
1186 DEBUG_1("thumb loader start failed %s", fd->path);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1187 vflist_thumb_do(vf, vf->thumbs_loader, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1190 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1191
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1192 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1193 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1194
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1195 static void vflist_thumb_update(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1196 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1197 vflist_thumb_stop(vf);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1198 if (!VFLIST(vf)->thumbs_enabled) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1199
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1200 vflist_thumb_status(vf, 0.0, _("Loading thumbs..."));
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1201 vf->thumbs_running = TRUE;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1202
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1203 while (vflist_thumb_next(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1206 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1207 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208 * row stuff
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1209 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1210 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1211
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1212 FileData *vflist_index_get_data(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1213 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1214 return g_list_nth_data(vf->list, row);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1216
664
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1217 gint vflist_index_by_path(ViewFile *vf, const gchar *path)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1218 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1219 gint p = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1220 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1221
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1222 if (!path) return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1223
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1224 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1225 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1226 {
664
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1227 FileData *fd = work->data;
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1228 if (strcmp(path, fd->path) == 0) return p;
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1229
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1231 p++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1232 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1233
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1234 return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1237 guint vflist_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1238 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1239 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1240 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1241 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1244 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1245 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1246 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1247 FileData *fd = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1248 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1250 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1251
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1255 return g_list_length(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1258 GList *vflist_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1259 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1260 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1263 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266 FileData *fd = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1267 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1269 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1270 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1271
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1273 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1275 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 * selections
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1281 static gint vflist_row_is_selected(ViewFile *vf, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1283 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1285 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 gint found = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1289 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1290 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1291 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292 while (!found && work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1293 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1294 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 FileData *fd_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1299 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd_n, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1300 if (fd_n == fd) found = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1301 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1302 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 return found;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1309 gint vflist_index_is_selected(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1311 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1312
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1313 fd = vf_index_get_data(vf, row);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1314 return vflist_row_is_selected(vf, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1316
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1317 guint vflist_selection_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1318 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1320 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1321 GList *slist;
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1322 guint count;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1323
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1324 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1326
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1327 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1328 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1330 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1331
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1333 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1334 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1335 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1336 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1337 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1338
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1339 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1341 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1343 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1345
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1346 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1347 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1348
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1349 count = g_list_length(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1350 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1351 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1352
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1353 return count;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1354 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1355
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1356 GList *vflist_selection_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1358 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1360 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1361 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1364 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1375
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1376 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1377
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1378 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1379 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1380 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1381 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1383 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1386 GList *vflist_selection_get_list_by_index(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1387 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1388 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1389 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1394 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1398 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1400 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1406 list = g_list_prepend(list, GINT_TO_POINTER(g_list_index(vf->list, fd)));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1407
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1410 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1412
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1414 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1415
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1416 void vflist_select_all(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1417 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1418 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1420 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421 gtk_tree_selection_select_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1423 VFLIST(vf)->select_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1426 void vflist_select_none(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1427 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1429
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1430 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1431 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1432 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1433
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1434 static gboolean tree_model_iter_prev(GtkTreeModel *store, GtkTreeIter *iter)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1435 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1436 GtkTreePath *tpath;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1437 gboolean result;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1438
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1439 tpath = gtk_tree_model_get_path(store, iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1440 result = gtk_tree_path_prev(tpath);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1441 if (result)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1442 gtk_tree_model_get_iter(store, iter, tpath);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1443
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1444 gtk_tree_path_free(tpath);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1445
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1446 return result;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1447 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1448
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1449 static gboolean tree_model_get_iter_last(GtkTreeModel *store, GtkTreeIter *iter)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1450 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1451 if (!gtk_tree_model_get_iter_first(store, iter))
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1452 return FALSE;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1453
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1454 while (TRUE)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1455 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1456 GtkTreeIter next = *iter;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1457
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1458 if (gtk_tree_model_iter_next(store, &next))
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1459 *iter = next;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1460 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1461 break;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1462 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1463
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1464 return TRUE;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1465 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1466
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1467 void vflist_select_invert(ViewFile *vf)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1468 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1469 GtkTreeIter iter;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1470 GtkTreeSelection *selection;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1471 GtkTreeModel *store;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1472 gboolean valid;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1473
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1474 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1475 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1476
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1477 /* Backward iteration prevents scrolling to the end of the list,
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1478 * it scrolls to the first selected row instead. */
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1479 valid = tree_model_get_iter_last(store, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1480
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1481 while (valid)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1482 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1483 gint selected = gtk_tree_selection_iter_is_selected(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1484
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1485 if (selected)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1486 gtk_tree_selection_unselect_iter(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1487 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1488 gtk_tree_selection_select_iter(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1489
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1490 valid = tree_model_iter_prev(store, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1491 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1492 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1493
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1494 void vflist_select_by_fd(ViewFile *vf, FileData *fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1495 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1496 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1497
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1498 if (vflist_find_row(vf, fd, &iter) < 0) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1499
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1500 tree_view_row_make_visible(GTK_TREE_VIEW(vf->listview), &iter, TRUE);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1501
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1502 if (!vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1503 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1504 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1505 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1506 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1508 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1509 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1510 gtk_tree_selection_select_iter(selection, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1511 vflist_move_cursor(vf, &iter);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1512
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1513 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1514 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1515 gtk_tree_view_set_cursor(GTK_TREE_VIEW(vf->listview), tpath, NULL, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1516 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1517 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1518 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1519
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1520 static void vflist_select_closest(ViewFile *vf, FileData *sel_fd)
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1521 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1522 GList *work;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1523 FileData *fd = NULL;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1524
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1525 if (sel_fd->parent) sel_fd = sel_fd->parent;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1526 work = vf->list;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1527
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1528 while (work)
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1529 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1530 gint match;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1531 fd = work->data;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1532 work = work->next;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1533
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1534 match = filelist_sort_compare_filedata_full(fd, sel_fd, vf->sort_method, vf->sort_ascend);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1535
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1536 if (match >= 0) break;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1537 }
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1538
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1539 if (fd) vflist_select_by_fd(vf, fd);
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1540
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1541 }
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1542
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1543 void vflist_mark_to_selection(ViewFile *vf, gint mark, MarkToSelectionMode mode)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1544 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1545 GtkTreeModel *store;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1546 GtkTreeIter iter;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1547 GtkTreeSelection *selection;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1548 gint valid;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1549 gint n = mark - 1;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1550
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1551 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1552
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1553 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1554 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1555
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1556 valid = gtk_tree_model_get_iter_first(store, &iter);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1557 while (valid)
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1558 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1559 FileData *fd;
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1560 gboolean mark_val, selected;
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1561 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1562
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1563 mark_val = file_data_get_mark(fd, n);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1564 selected = gtk_tree_selection_iter_is_selected(selection, &iter);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1565
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1566 switch (mode)
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1567 {
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1568 case MTS_MODE_SET: selected = mark_val;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1569 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1570 case MTS_MODE_OR: selected = mark_val | selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1571 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1572 case MTS_MODE_AND: selected = mark_val & selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1573 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1574 case MTS_MODE_MINUS: selected = !mark_val & selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1575 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1576 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1577
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1578 if (selected)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1579 gtk_tree_selection_select_iter(selection, &iter);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1580 else
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1581 gtk_tree_selection_unselect_iter(selection, &iter);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1582
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1583 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1584 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1585 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1586
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1587 void vflist_selection_to_mark(ViewFile *vf, gint mark, SelectionToMarkMode mode)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1588 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1589 GtkTreeModel *store;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1590 GtkTreeSelection *selection;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1591 GList *slist;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1592 GList *work;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1593 gint n = mark - 1;
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1594
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1595 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1596
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1597 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1598 slist = gtk_tree_selection_get_selected_rows(selection, &store);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1599 work = slist;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1600 while (work)
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1601 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1602 GtkTreePath *tpath = work->data;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1603 FileData *fd;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1604 GtkTreeIter iter;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1605
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1606 gtk_tree_model_get_iter(store, &iter, tpath);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1607 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1608
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1609 file_data_unregister_notify_func(vf_notify_cb, vf); /* we don't need the notification */
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1610
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1611 switch (mode)
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1612 {
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1613 case STM_MODE_SET: file_data_set_mark(fd, n, 1);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1614 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1615 case STM_MODE_RESET: file_data_set_mark(fd, n, 0);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1616 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1617 case STM_MODE_TOGGLE: file_data_set_mark(fd, n, !file_data_get_mark(fd, n));
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1618 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1619 }
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
1620
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1621 if (!file_data_filter_marks(fd, vf_marks_get_filter(vf))) /* file no longer matches the filter -> remove it */
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1622 {
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1623 vf_refresh_idle(vf);
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1624 }
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1625
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1626
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1627 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1628
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1629 gtk_tree_store_set(GTK_TREE_STORE(store), &iter, FILE_COLUMN_MARKS + n, file_data_get_mark(fd, n), -1);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1630
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1631 work = work->next;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1632 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1633 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1634 g_list_free(slist);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1635 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1636
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1637 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1638 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1639 * core (population)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1640 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1641 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1642
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1643 static void vflist_listview_set_columns(GtkWidget *listview, gint thumb)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1644 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1645 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1646 GtkCellRenderer *cell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1647 GList *list;
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1648 gboolean multiline;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1649
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1650 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_THUMB);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1651 if (!column) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1652
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1653 gtk_tree_view_column_set_fixed_width(column, options->thumbnails.max_width + 4);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1654
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1655 list = gtk_tree_view_column_get_cell_renderers(column);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1656 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1657 cell = list->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1658 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1659
802
3cfc54c77b30 fixed switching thumbnails in listview on and off - bug 1984825
nadvornik
parents: 801
diff changeset
1660 g_object_set(G_OBJECT(cell), "height", options->thumbnails.max_height, NULL);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1661 gtk_tree_view_column_set_visible(column, thumb);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1662
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1663 multiline = (thumb && options->thumbnails.max_height >= 48);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1664
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1665 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_MULTILINE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1666 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1667 gtk_tree_view_column_set_visible(column, multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1668 if (multiline) gtk_tree_view_set_expander_column(GTK_TREE_VIEW(listview), column);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1669
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1670 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_NAME);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1671 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1672 gtk_tree_view_column_set_visible(column, !multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1673 if (!multiline) gtk_tree_view_set_expander_column(GTK_TREE_VIEW(listview), column);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1674
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1675 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_SIZE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1676 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1677 gtk_tree_view_column_set_visible(column, !multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1678
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1679 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_DATE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1680 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1681 gtk_tree_view_column_set_visible(column, !multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1682
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1683 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1684 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1685
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1686 static void vflist_populate_view(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1687 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1688 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1689 gint thumbs;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1690 GList *selected;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1691
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1692 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1693 thumbs = VFLIST(vf)->thumbs_enabled;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1694
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1695 vflist_thumb_stop(vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1696
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1697 if (!vf->list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1698 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1699 vflist_store_clear(vf);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1700 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1701 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1702 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1703
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1704 vflist_listview_set_columns(vf->listview, thumbs);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1705
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1706 selected = vflist_selection_get_list(vf);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1707
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1708 vflist_setup_iter_recursive(vf, store, NULL, vf->list, selected);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1709
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1710 if (selected && vflist_selection_count(vf, NULL) == 0)
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1711 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1712 /* all selected files disappeared */
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1713 vflist_select_closest(vf, selected->data);
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1714 }
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1715
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1716 filelist_free(selected);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1717
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1718 vf_send_update(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1719 vflist_thumb_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1720 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1721
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1722 gint vflist_refresh(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1723 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1724 GList *old_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1725 gint ret = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1726
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1727 old_list = vf->list;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1728 vf->list = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1729
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1730 DEBUG_1("%s vflist_refresh: read dir", get_exec_time());
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1731 if (vf->dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1732 {
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1733 file_data_unregister_notify_func(vf_notify_cb, vf); /* we don't need the notification of changes detected by filelist_read */
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1734
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1735 ret = filelist_read(vf->dir_fd, &vf->list, NULL);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1736 vf->list = file_data_filter_marks_list(vf->list, vf_marks_get_filter(vf));
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1737 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1738
780
44128da39e13 Drop initialization to NULL since filelist_read() will take care of it.
zas_
parents: 775
diff changeset
1739 DEBUG_1("%s vflist_refresh: sort", get_exec_time());
44128da39e13 Drop initialization to NULL since filelist_read() will take care of it.
zas_
parents: 775
diff changeset
1740 vf->list = filelist_sort(vf->list, vf->sort_method, vf->sort_ascend);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1741 }
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1742
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1743 DEBUG_1("%s vflist_refresh: populate view", get_exec_time());
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1744
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1745 vflist_populate_view(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1746
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1747 filelist_free(old_list);
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1748 DEBUG_1("%s vflist_refresh: done", get_exec_time());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1749
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1750 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1751 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1752
772
f53c2bb5b1b1 replaced vflist_maint functions by vflist_refresh - it allows to follow
nadvornik
parents: 771
diff changeset
1753
f53c2bb5b1b1 replaced vflist_maint functions by vflist_refresh - it allows to follow
nadvornik
parents: 771
diff changeset
1754
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1755 /* this overrides the low default of a GtkCellRenderer from 100 to CELL_HEIGHT_OVERRIDE, something sane for our purposes */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1756
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1757 #define CELL_HEIGHT_OVERRIDE 512
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1758
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1759 static void cell_renderer_height_override(GtkCellRenderer *renderer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1760 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1761 GParamSpec *spec;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1762
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1763 spec = g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(renderer)), "height");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1764 if (spec && G_IS_PARAM_SPEC_INT(spec))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1765 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1766 GParamSpecInt *spec_int;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1767
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1768 spec_int = G_PARAM_SPEC_INT(spec);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1769 if (spec_int->maximum < CELL_HEIGHT_OVERRIDE) spec_int->maximum = CELL_HEIGHT_OVERRIDE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1770 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1771 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1772
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1773 static GdkColor *vflist_listview_color_shifted(GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1774 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1775 static GdkColor color;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1776 static GtkWidget *done = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1777
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1778 if (done != widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1779 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1780 GtkStyle *style;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1781
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1782 style = gtk_widget_get_style(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1783 memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1784 shift_color(&color, -1, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1785 done = widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1786 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1787
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1788 return &color;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1789 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1790
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1791 static void vflist_listview_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1792 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1793 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1794 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1795 gboolean set;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1796
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1797 gtk_tree_model_get(tree_model, iter, FILE_COLUMN_COLOR, &set, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1798 g_object_set(G_OBJECT(cell),
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1799 "cell-background-gdk", vflist_listview_color_shifted(vf->listview),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1800 "cell-background-set", set, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1801 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1802
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1803 static void vflist_listview_add_column(ViewFile *vf, gint n, const gchar *title, gint image, gint right_justify, gint expand)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1804 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1805 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1806 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1807
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1808 column = gtk_tree_view_column_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1809 gtk_tree_view_column_set_title(column, title);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1810 gtk_tree_view_column_set_min_width(column, 4);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1811
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1812 if (!image)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1813 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1814 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1815 renderer = gtk_cell_renderer_text_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1816 if (right_justify)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1817 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1818 g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1819 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1820 gtk_tree_view_column_pack_start(column, renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1821 gtk_tree_view_column_add_attribute(column, renderer, "text", n);
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1822 if (expand)
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1823 gtk_tree_view_column_set_expand(column, TRUE);
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1824 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1825 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1826 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1827 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1828 renderer = gtk_cell_renderer_pixbuf_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1829 cell_renderer_height_override(renderer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1830 gtk_tree_view_column_pack_start(column, renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1831 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1832 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1833
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1834 gtk_tree_view_column_set_cell_data_func(column, renderer, vflist_listview_color_cb, vf, NULL);
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1835 g_object_set_data(G_OBJECT(column), "column_store_idx", GUINT_TO_POINTER(n));
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1836 g_object_set_data(G_OBJECT(renderer), "column_store_idx", GUINT_TO_POINTER(n));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1837
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1838 gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1839 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1840
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1841 static void vflist_listview_mark_toggled_cb(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1842 {
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1843 ViewFile *vf = data;
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1844 GtkTreeStore *store;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1845 GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1846 GtkTreeIter iter;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1847 FileData *fd;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1848 gboolean mark;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1849 guint col_idx;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1850
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1851 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1852 if (!path || !gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1853 return;
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1854
513
985fdfebd89e Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
zas_
parents: 512
diff changeset
1855 col_idx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell), "column_store_idx"));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1856
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1857 g_assert(col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1858
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1859 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, col_idx, &mark, -1);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1860 mark = !mark;
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1861 file_data_unregister_notify_func(vf_notify_cb, vf); /* we don't need the notification */
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1862 file_data_set_mark(fd, col_idx - FILE_COLUMN_MARKS, mark);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1863 if (!file_data_filter_marks(fd, vf_marks_get_filter(vf))) /* file no longer matches the filter -> remove it */
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1864 {
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1865 vf_refresh_idle(vf);
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1866 }
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1867 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1868
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1869 gtk_tree_store_set(store, &iter, col_idx, mark, -1);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1870 gtk_tree_path_free(path);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1871 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1872
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1873 static void vflist_listview_add_column_toggle(ViewFile *vf, gint n, const gchar *title)
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1874 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1875 GtkTreeViewColumn *column;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1876 GtkCellRenderer *renderer;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1877 GtkTreeStore *store;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1878 gint index;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1879
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1880 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1881
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1882 renderer = gtk_cell_renderer_toggle_new();
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1883 column = gtk_tree_view_column_new_with_attributes(title, renderer, "active", n, NULL);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1884
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1885 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1886 g_object_set_data(G_OBJECT(column), "column_store_idx", GUINT_TO_POINTER(n));
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1887 g_object_set_data(G_OBJECT(renderer), "column_store_idx", GUINT_TO_POINTER(n));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1888
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1889 index = gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
1254
3814f5828376 adjusted marks spacing to align them with the marks filter
nadvornik
parents: 1242
diff changeset
1890 gtk_tree_view_column_set_fixed_width(column, 22);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1891 gtk_tree_view_column_set_visible(column, vf->marks_enabled);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1892
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1893
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1894 g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(vflist_listview_mark_toggled_cb), vf);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1895 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1896
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1897 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1898 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1899 * base
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1900 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1901 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1902
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1903 gint vflist_set_fd(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1904 {
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1905 if (!dir_fd) return FALSE;
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1906 if (vf->dir_fd == dir_fd) return TRUE;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1907
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1908 file_data_unref(vf->dir_fd);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1909 vf->dir_fd = file_data_ref(dir_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1910
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1911 /* force complete reload */
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1912 vflist_store_clear(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1913
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1914 filelist_free(vf->list);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1915 vf->list = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1916
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1917 return vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1918 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1919
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1920 void vflist_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1921 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1922 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1923
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1924 file_data_unregister_notify_func(vf_notify_cb, vf);
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1925
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1926 vflist_select_idle_cancel(vf);
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1927 vf_refresh_idle_cancel(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1928 vflist_thumb_stop(vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1929
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1930 filelist_free(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1931 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1932
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1933 ViewFile *vflist_new(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1934 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1935 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1936 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1937
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1938 GType flist_types[FILE_COLUMN_COUNT];
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1939 gint i;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1940 gint column;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1941
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1942 vf->info = g_new0(ViewFileInfoList, 1);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1943
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1944 VFLIST(vf)->click_fd = NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1945 VFLIST(vf)->select_fd = NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1946 VFLIST(vf)->thumbs_enabled = FALSE;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1947
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1948 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1949
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1950 flist_types[FILE_COLUMN_POINTER] = G_TYPE_POINTER;
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
1951 flist_types[FILE_COLUMN_VERSION] = G_TYPE_INT;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1952 flist_types[FILE_COLUMN_THUMB] = GDK_TYPE_PIXBUF;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1953 flist_types[FILE_COLUMN_NAME] = G_TYPE_STRING;
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1954 flist_types[FILE_COLUMN_MULTILINE] = G_TYPE_STRING;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1955 flist_types[FILE_COLUMN_SIZE] = G_TYPE_STRING;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1956 flist_types[FILE_COLUMN_DATE] = G_TYPE_STRING;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1957 flist_types[FILE_COLUMN_COLOR] = G_TYPE_BOOLEAN;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1958 for (i = FILE_COLUMN_MARKS; i < FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE; i++)
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1959 flist_types[i] = G_TYPE_BOOLEAN;
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1960
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1961 store = gtk_tree_store_newv(FILE_COLUMN_COUNT, flist_types);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1962
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1963 vf->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1964 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1965
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1966 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1967 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_MULTIPLE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1968 gtk_tree_selection_set_select_function(selection, vflist_select_cb, vf, NULL);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1969
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1970 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(vf->listview), FALSE);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1971 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(vf->listview), FALSE);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1972
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1973 column = 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1974
518
e56c74e89da9 Add missing space.
zas_
parents: 517
diff changeset
1975 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1976 {
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1977 vflist_listview_add_column_toggle(vf, i + FILE_COLUMN_MARKS, "");
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1978 g_assert(column == FILE_VIEW_COLUMN_MARKS + i);
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1979 column++;
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1980 }
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1981
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1982 vflist_listview_add_column(vf, FILE_COLUMN_THUMB, "", TRUE, FALSE, FALSE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1983 g_assert(column == FILE_VIEW_COLUMN_THUMB);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1984 column++;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1985
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1986 vflist_listview_add_column(vf, FILE_COLUMN_MULTILINE, _("Name"), FALSE, FALSE, TRUE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1987 g_assert(column == FILE_VIEW_COLUMN_MULTILINE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1988 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1989
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
1990 vflist_listview_add_column(vf, FILE_COLUMN_NAME, _("Name"), FALSE, FALSE, TRUE);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1991 g_assert(column == FILE_VIEW_COLUMN_NAME);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1992 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1993
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1994 vflist_listview_add_column(vf, FILE_COLUMN_SIZE, _("Size"), FALSE, TRUE, FALSE);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1995 g_assert(column == FILE_VIEW_COLUMN_SIZE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1996 column++;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1997
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1998 vflist_listview_add_column(vf, FILE_COLUMN_DATE, _("Date"), FALSE, TRUE, FALSE);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1999 g_assert(column == FILE_VIEW_COLUMN_DATE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2000 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2001
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
2002 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2003 return vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2004 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2005
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2006 void vflist_thumb_set(ViewFile *vf, gint enable)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2007 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
2008 if (VFLIST(vf)->thumbs_enabled == enable) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2009
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
2010 VFLIST(vf)->thumbs_enabled = enable;
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
2011 if (vf->layout) vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2012 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2013
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2014 void vflist_marks_set(ViewFile *vf, gint enable)
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2015 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2016 GList *columns, *work;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2017
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2018 columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(vf->listview));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2019
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2020 work = columns;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2021 while (work)
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2022 {
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2023 GtkTreeViewColumn *column = work->data;
513
985fdfebd89e Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
zas_
parents: 512
diff changeset
2024 gint col_idx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_store_idx"));
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2025 work = work->next;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2026
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2027 if (col_idx <= FILE_COLUMN_MARKS_LAST && col_idx >= FILE_COLUMN_MARKS)
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2028 gtk_tree_view_column_set_visible(column, enable);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2029 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2030
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2031 g_list_free(columns);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
2032 //vf_refresh(vf);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2033 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2034
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1005
diff changeset
2035 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */