annotate src/view_file_list.c @ 1539:4df9f4712d1a

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